Skip to main content

BigCommerce Products

Updated yesterday

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
Single Line Only
No Min/Max Characters

ToTextModifier

bool required, string defaultValue

Single Line Only
No Min/Max Characters Limits

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")); 

if(string.IsNullOrEmpty(ImageURL)) {return null} else {

return ProductImageListFromFilenames(0, ImageURL) }

We are passing 0 as the BC product ID

Update Only FROM

string ImageURL = (string)(GetCustomFieldValue(CustomFields,"Images")); 

if(string.IsNullOrEmpty(ImageURL)) {return null} else {

var BCProductId = (int)(int.Parse(GetExternalId(Id,"product",SpaceportSystemId)));

return ProductImageListFromFilenames(BCProductId,ImageURL);

}

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")); 

string image2 = (string)(GetCustomFieldValue(CustomFields, "Images 2"));

string image3 = (string)(GetCustomFieldValue(CustomFields, "Images 3"));

return ProductImageListFromFilenames(0, image1, image2, image3);

Update Only FROM

string image1 = (string)(GetCustomFieldValue(CustomFields, "Images")); 

string image2 = (string)(GetCustomFieldValue(CustomFields, "Images 2"));

string image3 = (string)(GetCustomFieldValue(CustomFields, "Images 3"));

var BCProductId = (int)(int.Parse(GetExternalId(Id,"product",SpaceportSystemId)));

return ProductImageListFromFilenames(BCProductId, image1, image2, image3);

Did this answer your question?