Background
Products, product categories, and inventory in iPaaS.com can be transferred to and from BigCommerce based on the mappings below. It also supports Product Variants and their associated Product Options and Product Option Values. Kits are not currently supported.
NOTE: The BigCommerce integration now supports BigCommerce channel assignments for Product Categories and Products.
Matching
Products (simple and variants) to/from BigCommerce are matched on SKU. Other product attributes are matched on external ID.
Transaction Custom Fields
BigCommerce Custom Fields
iPaaS.com supports BigCommerce custom fields in this data type.
iPaaS.com Custom Fields
Module | Name |
Product Unit | Child Alternate Unit Barcode |
Product Unit | Child Alternate Unit Default Price |
Product Unit | Child Alternate Unit Denominator |
Product Unit | Child Alternate Unit Include |
Product Unit | Child Alternate Unit Name |
Product Unit | Child Alternate Unit Numerator |
Product Unit | Child Alternate Unit Sale Price |
Product Unit | Parent Alternate Unit Barcode |
Products TO iPaaS.com
Webhooks (External)
In order to enable Product data to flow TO iPaaS.com, the following external webhooks need to be enabled:
store/product/deleted
Data Mapping
BC Product Delete To iPaaS
Allow for product deletes to come down from BigCommerce and remove that item from iPaaS.com
Notes:
Please be careful about using this depending on your system of record for products.
If you do not want deletes in BC to delete products in iPaaS.com, remove this mapping or do not enable this webhook.
Delete mapping collections do not have any mappings by design.
Products FROM iPaaS.com
Webhooks (Internal)
In order to enable Product data to flow FROM iPaaS.com, the following external webhooks need to be enabled:
product/created
product/updated
product/category/created
product/category/updated
product/category/deleted
product/inventory/created
product/inventory/updated
product/inventory/deleted
product/variant/created
product/variant/updated
product/variant/deleted
product/variant/category/created
product/variant/category/updatedp
roduct/variant/category/deleted
product/variant/inventory/created
product/variant/inventory/updated
product/variant/inventory/deleted
Notes:
Product/category/updated
Note: It is not recommended to subscribe to this webhook, since it will create unnecessary transfers. The webhook will be processed by the Add/Update mapping above and will likely perform no actions due to the existing assignment to the same category.
Product/category/deleted
Category assignments can be removed by creating a delete mapping collection for the assignment. No mappings are necessary but the following filter is recommended to only delete assignments from categories that exist in the external system:
var value = await GetExternalIdAsync(CategoryId, "Product Category", SpaceportSystemId);
if (value != null){return true;} else {return false;}No mappings are needed in a delete mapping collection.
Data Mapping
The names of the following sections are the mapping collection names in iPaaS.com.
NOTES:
Mapping collections requiring updates are marked with an asterisk (*)
Mapping collections needing translation review are marked with a plus sign (⁺)
Mapping collections requiring mapping or error filter updates are marked with a degree symbol (º)
BC Product Add Only From iPaaS
This is used for adding products to BC from iPaaS.com.
NOTES:
Special consideration is needed for products if BC is set up with Multi-Store Fulfillment (MSF) to ensure the signs channel IDs are assigned. Please contact your MiSP for information regarding this.
Options in iPaaS.com are designed around color as a default, but an MiSP can add additional ones.
Related products can be added as a Dynamic Formula with the destination field of RelatedProducts with the following formula:
ConvertRelatedProductsToBigCommerceIdsAsync(object relatedProducts, string typeFilter)
The function is needed to pass in the IDs of those products.
The typeFilter parameter is optional. If you:
Don't specify a value -- all related products with BigCommerce external IDs will be included.
Specify one of these values -- only that specified type of related product will be included:
Replacement
Similar Item
Related Product
This mapping collection has the following sub-mapping collections:
BC Product Variant Add Only From iPaaS
BC Product Variant Option Add Only From iPaaS
BC Product Option Add Only From iPaaS⁺
BC Product Option Value Add Only From iPaaS⁺
BC Product Unit Add Only From iPaaS
BC Product Category Add From iPaaS
These are the product categories to build out the category tree in BC.
NOTE: The BC default mappings in iPaaS.com assume a single category tree. If you want to create multiple trees, please contact your MiSP.
BC Product Category Assignment Delete From IPaaS
Used to delete a category assignment from BC.
NOTE: Delete mapping collections do not have any mappings by design.
BC Product Category Assignment From IPaaS
Used to assign a product to a specific category in BC.
NOTES: Category assignments are often performed after a product update. This timing issue means that the product update webhook could trigger before the category assignment was finished.
To solve this issue:
We can process category assignment webhooks first, ensuring the category assignment completes before the next product update occurs.
The filter and dynamic formula in this mapping collection are specifically designed to handle this sequence.
BC Product Category Update From IPaaS
Update the categories assigned to a product in BC.
BC Product Inventory Add Only From IPaaSº
Add inventory for new products added to BC.
NOTES:
iPaaS.com only supports using one Location for inventory in BC. The name of the location needs to be updated in the mapping filter. Replace the word MAIN with the name of your iPaaS.com location that has inventory assigned to BC.
Inventory external IDs are not linked until a full product update is performed.
BigCommerce does not accept negative values for inventory. If you need to send a value you think might be negative, use the larger function,
Larger(QtyAvailable,0)
.
BC Product Realtime Inventory Updates From IPaaSº
A lightweight way to update inventory as it changes without needing to update the entire product.
NOTE: iPaaS.com only supports using one Location for inventory in BC. The name of the location needs to be updated in the mapping filter. Replace the word MAIN with the name of your iPaaS.com location that has inventory assigned to BC.
BC Product Update Only From IPaaS*
Update products in BC with updates in iPaaS.com.
NOTES:
If BC is set up with Multi-Store Fulfillment (MSF), products need special consideration to ensure the signs channel IDs are assigned. Please contact your MiSP for information regarding this.
Options in iPaaS.com are designed around color as a default, but an MiSP can add additional ones.
Some of the mappings below update inventory. iPaaS.com only supports using one Location for inventory in BC. The name of the location needs to be updated in the mapping formula. Replace the word MAIN with the name of your iPaaS.com location that has inventory assigned to BC.
This mapping collection has the following sub-mapping collections:
BC Product Variant Update Only From IPaaS*
BC Product Variant Option Update Only From IPaaS
BC Product Option Update Only From IPaaS⁺
BC Product Option Value Update Only From IPaaS⁺
BC Product Unit Update Only From IPaaS
BC Product Variant Delete From IPaaS
Used to delete. product variant from BC.
NOTE: Delete mapping collections do not have any mappings by design.
BC Product Variant Inventory Add Only From IPaaS
Add inventory for new product variants added to BC.
NOTE: Some of the mappings below update inventory. iPaaS.com only supports using one Location for inventory in BC. The name of the location needs to be updated in the mapping filter. Replace the word MAIN with the name of your iPaaS.com location that has inventory assigned to BC.
BC Product Variant Realtime Inventory Updates From IPaaS
A lightweight way to update variant inventory as it changes without needing to update the entire product.
NOTE: Some of the mappings below update inventory. iPaaS.com only supports using one Location for inventory in BC. The name of the location needs to be updated in the mapping filter. Replace the word MAIN with the name of your iPaaS.com location that has inventory assigned to BC.
Custom Functions
Redirects
iPaaS.com supports the RedirectUrl
and RedirectUrlSite
fields, both of which are required on a product in order to set a redirect for the product. To set these you need to know the ID of the site:
SiteIdFromChannelId(int) – For the main site, this should work: await SiteIdFromChannelId(1)
SiteIdFromChannelUrl(string) – this will use the site url, e.g. await SiteIdFromChannelUrl("
https://redrook.mybigcommerce.com
")
Product Modifiers
Product Modifiers allow shoppers to input values tracked with a line item when sold. These options are presented in addition to Variant Options (such as Size and Color) on the product page. Stores can add many Modifiers and apply them in different groups by product.
In order to use these, you need to add them to BigCommerce, add them as custom fields in iPaaS.com, create mappings using special handling, and then account for the mappings coming back from BigCommerce.
Creating Custom Fields
Since these are custom fields in BigCommerce, they need to be added as custom fields in the BigCommerce Subscription (Subscription Management > Subscriptions > BigCommerce > Custom Fields) in order to be utilized in mappings.
The name given to the Custom Field will be the name assigned to the Modifier Display Name in BC and the module should be BC Product.
Add Product Mappings
In the Product Add and Product Update mapping collections, create a single mapping entry for each one on the parent collections.
The mappings should be created as a dynamic formula:
The destination will be the custom field you created.
The source value should be one of the following functions passing the values that are relevant to your configuration:
Function | Type of Data | Data Attributes |
ToTextModifier | bool required | Default Value is not set |
ToTextModifier | bool required, string defaultValue | Single Line Only |
ToTextModifier | bool required, string defaultValue, int? textMaxLines, int? textMinLength, int? textMaxLength | If Max Lines > 1, then entry box is set as MultiLine |
ToNumberModifier | bool required | Default Value is not set No Min/Max Limits |
ToNumberModifier | bool required, int? defaultValue | Integers are required for defaults and number limits, even when double type values are permitted. No Min/Max Limits |
ToNumberModifier | bool required, int? defaultValue, string numberLimitMode, bool numberIntegersOnly, int? numberLowestValue, int? numberHighestValue | numberLimitMode Allowed Values: lowest, highest, range |
ToDateModifier | bool required | Default Value is not set No Earliest/Latest Date Limits |
ToDateModifier | bool required, string defaultValue | No Earliest/Latest Date Limits Datevalues must be passed using full DateTime format: 2020-01-01T00:00:00+00:00 |
ToDateModifier | bool required, string defaultValue, string dateLimitMode, string dateEarliestValue, string dateLatestValue | dateLimitMode Allowed Values: earliest, range, latest |
ToPickListModifier | bool required, Dictionary<string, string> optionValues | productListAdjustsPricing set to false productListAdjustsInventory set to false productListShippingCalc set to “none” |
ToPickListModifier | bool required, string defaultValue, bool productListAdjustsPricing, bool productListAdjustsInventory, string productListShippingCalc, Dictionary<string, string> optionValues | productListShippingCalc Allowed Values: none, weight, package |
ToDropDownModifier | bool required, List<string> optionValues | Default Value is not set |
ToDropDownModifier | bool required, string defaultValue, List<string> optionValues |
|
ToSwatchModifier | bool required, Dictionary<string, string> optionValues | Default Value is not set |
ToSwatchModifier | bool required, string defaultValue, Dictionary<string, string> optionValues |
|
ToRadioButtonsModifier | bool required, List<string> optionValues | Default Value is not set |
ToRadioButtonsModifier | bool required, string defaultValue, List<string> optionValues |
|
ToRectangleModifier | bool required, List<string> optionValues | Default Value is not set
|
ToRectangleModifier | bool required, string defaultValue, List<string> optionValues |
|
ToCheckBoxModifier | bool required, string description | isChecked = false |
ToCheckBoxModifier | bool required, string description, bool isChecked |
|
ToFileUploadModifier | bool required | fileTypesMode is set to “all” <br>No FileType Limits |
ToFileUploadModifier | bool required, string fileTypesMode, List<string> fileTypesSupported, List<string> fileTypesOther, int? fileMaxSize | fileTypesMode Allowed Values: specific, all
fileTypesSupported example: images, documents, other |
Sample Usage
Dynamic Formula | Notes |
ToTextModifier(false) |
|
ToTextModifier(false, ““) |
|
ToTextModifier(false, ““, 5, 0, 30) |
|
ToNumberModifier(false) |
|
ToNumberModifier(false,5.0) |
|
ToNumberModifier(false,11,"lowest",true,1,-1) |
|
ToNumberModifier(false,11,"highest",false,-1,100) |
|
ToNumberModifier(false,11,"range",true,1,100) |
|
ToDateModifier(false) |
|
ToDateModifier(false,”2020-09-28 T05:00:00”) |
|
ToDateModifier(false,"2020-09-28T05:00:00+00:00", "range", "2020-01-01T00:00:00+00:00", "2020-09-30T23:59:59+00:00") |
|
ToDropDownModifier(false, StringListFromString(“EAST, WEST, SOUTH”)) | BigCommerce requires a default. Not setting one will make the first entry the default. |
ToRectangleModifier(false, “WEST”, StringListFromString(“EAST, WEST, SOUTH”)) | BigCommerce requires a default. Not setting one will make the first entry the default. |
ToRadioButtonsModifier(false, “SOUTH”, StringListFromString(“EAST, WEST, SOUTH”)) | BigCommerce requires a default. Not setting one will make the first entry the default. |
ToSwatchModifier(true, JSONToDictionary(“{\”BLUE\”:\”#3600FF\”, \”RED\”:\”#FF5C00\”, \”GREEN\”:\”#3FFF00\”}”)) | BigCommerce requires a default. Not setting one will make the first entry the default. |
ToSwatchModifier(true, “RED”, JSONToDictionary(“{\”BLUE\”:\”#3600FF\”, \”RED\”:\”#FF5C00\”, \”GREEN\”:\”#3FFF00\”}”)) |
|
ToCheckBoxModifier(true, “Checkbox 1”) |
|
ToCheckBoxModifier(true, “Checkbox 2”, true) |
|
ToFileUploadModifier(true) |
|
ToFileUploadModifier(true, “specific”, StringListFromString(“images,other”), StringListFromString(“eps”), 1000) |
|
Examples
iPaaS.com Mapping Collection
BigCommerce Admin for the Product
BigCommerce Front End for the Product
NOTE: To accept these values on Product Line Items, they must be added to Transaction Line Mappings. Please see the Transaction Line Items Documentation for instructions.
RemoveModifier()
When a mapping with this function exists, the field name in the mapping is checked for existence. If it exists, it is removed.
Price Adjusters
You can add an overload to the ToDropDownModifier that accepts a list of prices that applies price adjusters to the values provided. If there is only one price included it will be used for all values.
For example, if you have 3 values, you can provide 1, or 3 prices, and the first price applies to the first value, the second price to the second value, etc. Here is how that would look in a dynamic formula:
ToDropDownModifier(bool required, string defaultValue, List<string> optionValues, List<decimal> priceModifier)
SpecialVariantOptionExclusions
Sometimes, users will want to update ValueData fields (colors or pattern URLs) directly in BC. To do this, create a BigCommerce custom field in iPaaS.com called SpecialVariantOptionExclusions
(case sensitive) and map it on the product add/update like so:
ImageURL Functions
iPaaS.com supports sending an external, publicly accessible image URL into BigCommerce.
NOTES:
When providing a BigCommerce product ID to the function, based on a name likeness match, existing images in BigCommerce will not be duplicated.
The function accepts one string (one image) and flags the image as the thumbnail, sort order 1 in BigCommerce.
Mappings must return a null value for the field when no image is provided, otherwise the transfer will fail with the following error:
Unable to process transfer. Reason: Error calling BigCommerceCallWrapper.Product_Post(ImageURL Regression Tests): The required field 'image_url' was not supplied.
Example Use Case
Image 1 and image 2 exist in BigCommerce.
End user flags image 1 as thumbnail and sort order as 1 in BigCommerce, image 2 as sort order 2.
Image 2 is currently being included in iPaaS.com update mapping.
After the next product update from iPaaS, image 2 is flagged as thumbnail sort order 1.
Sample Mappings
Title | Mapping | Notes |
Add Only FROM | string ImageURL = (string)(GetCustomFieldValue(CustomFields, "Images")); | We are passing 0 as the BC product ID |
Update Only FROM | string ImageURL = (string)(GetCustomFieldValue(CustomFields,"Images")); | Requires BC product ID or duplicate images will be added |
Passing Over Multiple Images
This function can accept multiple images, but only when using the following format:
return ProductImageListFromFilenames(BCProductId, image1, image2, image3);
In the example above, the image1 image2 and image3 objects are strings that contain the image URL.
Images are processed in the order they are passed into the feature. The first image is flagged as the thumbnail, and the sort order in BigCommerce is set to the order of the images provided.
If you pass the feature a list of strings (instead of a dynamic list) however, it will fail with the following error:
return ProductImageListFromFilenames(BCProductId, myListOfImageStrings);
Sample Mappings
Title | Mapping | Notes |
Add Only FROM | string image1 = (string)(GetCustomFieldValue(CustomFields, "Images")); |
|
Update Only FROM | string image1 = (string)(GetCustomFieldValue(CustomFields, "Images")); |
|