Our e-commerce middleware retrieves e-commerce products that have been added or updated since the last successful sync. Each of these products is then compared with the inventory on the integration platform and inserted or updated accordingly. Sync is one-direction so changes made to products on the integration provider are not synced back to Crystal, and changes made in Crystal will overwrite their corresponding values in the integration when an update is performed.
Data coming from Crystal
Ecom Products: (api: /v1/ecom/products)
Product
Property | Type | Crystal source |
id | string | products.uuid |
vendor | n/a | |
item_type | n/a | |
product_number | string | products.product_number |
name | string | products.ecom_title |
description | string | products.ecom_description |
short_description | string | products.ecom_short_description |
images | string[] | products.ecom_images |
tags | string[] | product.ecom_tags |
allow_backorder | boolean | products.ecom_allow_backorder |
quantity | number | calculated @ backened |
price | number | products.price |
created | string | products.created |
last_updated | string | products.last_updated |
is_visible | boolean | calculated: always true |
Child Types
Vendor
Property | Type | Crystal source |
id | string | accounts.uuid |
name | string | accounts.ecom_name |
code | string | accounts.code |
ItemType
Property | Type | Crystal source |
id | string | product_types.uuid |
name | string | product_types.name |
Products
BigCommerce Product | Crystal Ecom Product |
sku | id |
name | name |
description | description |
price | price |
type | ‘physical’ (required) |
weight | 0 (required) |
categories | array: retrieved from BigCommerce categories endpoint using item_type.name.
added during product_category sync which occurs before product sync
|
brand_name | vendor.name |
images | mapped from images[i].src
Note: 2 are required - one for the main image and another for the thumbnail.
Images removed from Crystal are removed from BigCommerce since this doesn’t happen automatically with a PUT. |
search_keywords | tags |
availability | if qty = 0 & allow_backorder -> ‘preorder
otherwise ‘available’
Note: Should this be disabled if qty is 0 and
allow_backorder is false?
|
Orders
BigCommerce Order | Crystal Order |
id | order_number |
date_modified | date |
products retrieved from BigCommerce by order id mapped to object: {
id: product.sku (crystal product uuid)
quantity: product.quantity
} | products |
calculated from total_inc_tax & total_ex_tax with both are present. otherwise 0 | tax_rate |
object { first_name: billing_address.first_name
last_name: billing_address.last_name
email: billing_address.email
billing_address: billing_address (mapped)
shipping_address: first shipping_address (mapped)
} | customer |
object {
code: credit_card_type
amount: total_inc_tx
}
| payment |