Skip to main content

iPaaS.com to BigCommerce Product Mapping Documentation

How iPaaS.com products, variants, options, units, inventory, and categories map into BigCommerce — field mappings, filters, custom-field behaviors, and delete handling for the BigCommerce Product integration.

Contents

Summary

BigCommerce products can be built and kept up to date from iPaaS.com. A single product transfer writes the product and all of its related data to BigCommerce in one pass — variants, the options and option values that define them, alternate units of measure, inventory levels, and category assignments — and companion collections handle category tree building, lightweight inventory-only updates, and deletions. Almost every collection in this document writes from iPaaS.com to BigCommerce; the one exception is the product-delete flow, which lets a BigCommerce deletion remove the matching product from iPaaS.com. Kits are not supported by the BigCommerce integration at this time.

ID Format

Manual Sync ID Format

For the parent product collections, enter the iPaaS.com product ID — the numeric identifier iPaaS.com assigns to the product record — on the Manual Sync page. Example: 288. Transferring a product this way also transfers its variants, options, option values, and units, because those child collections have no independent Manual Sync entry point.

The standalone collections take their own iPaaS.com record ID:

  • Product Category / Product Category Update: the iPaaS.com Product Category ID. Example: 288.

  • Product Category Assignment (add/update and delete): the iPaaS.com Product Category Assignment ID. Example: 288.

  • Product Inventory and Product Variant Inventory (add and realtime update): the iPaaS.com inventory record ID. Example: 288.

  • Product Variant Delete: the iPaaS.com Product Variant ID. Example: 288.

  • Product Delete (BigCommerce → iPaaS.com): the BigCommerce product ID, because this flow is driven by a BigCommerce deletion. Example: 1234.

External ID Format (saved after sync)

After a successful product transfer, iPaaS.com records the BigCommerce product ID as the external ID on a dedicated external-ID record. That record is the primary match that routes a later change of the same product to an update rather than creating a duplicate. Products and variants are also matched to BigCommerce on SKU: a SKU that already exists in BigCommerce links to that product or variant instead of creating a new one. Related records (categories, options, option values, units) are matched on external ID. Inventory external IDs are not linked until a full product update has been performed.

Deleted Record Support

Two delete flows are included in the default template, and each moves in a different direction:

  • Delete BigCommerce Product Variant FROM iPaaS.com removes a variant in BigCommerce when the variant is removed in iPaaS.com. The parent product is left in place; only the variant is deleted.

  • Delete BigCommerce Product TO iPaaS.com removes a product in iPaaS.com when BigCommerce reports the product deleted. This is the only inbound flow in this document.

Delete collections carry no field mappings by design — a delete is driven by the source record's identity and the collection's external-ID link, not by mapped fields. Both delete flows require an existing external-ID link between the two systems; a record that was never transferred has nothing to remove on the other side.

Category deletes are intentionally suppressed: the integration does not delete a BigCommerce category when its iPaaS.com category is deleted. Category cleanup in BigCommerce remains a manual store operation.

Be deliberate about your system of record. The Delete BigCommerce Product TO iPaaS.com flow lets BigCommerce deletions remove products from iPaaS.com. If iPaaS.com is your source of truth for products, do not enable that collection or the BigCommerce product-deleted webhook. Likewise, enable the variant-delete flow only if iPaaS.com should be able to remove variants from BigCommerce.

Custom Field Support

The product collections support BigCommerce custom fields. Custom fields are configured in the subscription under Subscription Management → Subscriptions → BigCommerce → Custom Fields, with the module set to BC Product. Once configured, a custom field can be read from and written to BigCommerce as part of the product transfer.

The integration uses custom fields to drive several product behaviors:

  • A C5 Brand custom field resolves the BigCommerce brand for the product (up to 250 brand values, a BigCommerce API limitation).

  • A Pimcore Product Attributes custom field is expanded into individual BigCommerce custom fields on the product.

  • Kit Item, Parent Always In Stock, and Kit Parent custom fields influence how inventory level and inventory tracking are calculated.

  • Price-list membership is driven by a per-customer-group custom field named in the format Pricing_{BigCommerce Customer Group ID}, together with a PriceList_Currency value.

  • Product Modifiers, image URLs, storefront redirects, and the SpecialVariantOptionExclusions custom field are all custom-field-driven behaviors. These are documented in full in the Custom Fields / Product Behaviors (Reference) section near the end of this article.

Mapping Collection Status

All Product collections in this document are Enabled by default. Their trigger events depend on direction:

  • FROM iPaaS.com collections (the large majority) are triggered by iPaaS.com Outbound Data Flows — the product, category, category-assignment, and inventory record-change events. Product variants, variant options, product options, option values, and units transfer as part of their parent product's transfer and have no independent trigger.

  • The Delete BigCommerce Product TO iPaaS.com collection is triggered by the BigCommerce product-deleted webhook via Inbound Data Flows.

Several collections carry a mapping filter that restricts which records they process; those are documented per collection in the Mappings section.

Duplicate or Conflicting Mappings

Several collections operate on the same BigCommerce product data. Review each collection's filter and Add/Update settings before enabling, and decide which collection is the source of truth for each product state:

  • Add vs. Update product: the Add collection creates new products; the Update collection changes existing ones. Enabling both is normal — the external-ID/SKU match routes each record to the right one — but confirm the settings so a record is not both created and updated in the same run.

  • Full product update vs. realtime inventory update: the Update Product collection also writes inventory as part of a full update, while the realtime inventory collections write only the inventory level. Coordinate them so the same inventory value is not written by conflicting collections.

  • Add inventory vs. realtime inventory update: the Add Inventory collections seed inventory for newly added products; the realtime collections keep it current. Coordinate their filters so they select distinct records.

  • Add/Update category assignment vs. Delete category assignment: coordinate the two so the same assignment change is not simultaneously created and deleted.

  • FROM iPaaS product writes vs. Delete BigCommerce Product TO iPaaS.com: these move in opposite directions. Confirm your product source-of-truth rules before enabling both directions.

Overwrite Risk (full-replace writes)

Every FROM iPaaS.com collection in this document writes the full record to BigCommerce on each transfer. Fields you leave unmapped can be overwritten — reset to empty or default — each time the record transfers. To protect a field you do not source from iPaaS.com, either map it explicitly or use a DestinationValue approach so the current BigCommerce value is written back unchanged (the category Update collection does this for the storefront URL path). This behavior is accurate at the time this documentation was written.

Supported Child Collections

The parent product collections drive a chain of child collections that transfer as part of the product create or update:

  • Add / Update BigCommerce Product FROM iPaaS.com (parent)

  • Product VariantProduct Variant Option

  • Product OptionProduct Option Value

  • Product Unit

The remaining product-family collections are standalone — they are triggered by their own record events rather than as part of a product transfer: Product Category, Product Category Update, Product Category Assignment (add/update and delete), Product Inventory, Product Variant Inventory, the two realtime inventory collections, Product Variant Delete, and Product Delete.

System Caveats

BigCommerce Caveats

  • SKU match. Products and variants are matched to BigCommerce on SKU. A SKU that already exists in BigCommerce links to that record rather than creating a new one.

  • Inventory floor. BigCommerce does not accept inventory levels below zero. The default mappings send 0 for a negative source quantity; the realtime and standalone inventory collections guard this with Larger(QtyAvailable, 0).

  • Single inventory location. The integration supports one BigCommerce inventory location. The location name — MAIN in the default mappings and filters — is a placeholder that must be replaced with the name of your iPaaS.com location that holds the inventory you send to BigCommerce.

  • Single category tree. The default category mappings assume a single BigCommerce category tree (TreeId is fixed). Stores that use multiple trees should review the category mapping with an implementation partner.

  • Brand lookup limit. Brand resolution from the C5 Brand custom field supports up to 250 brand values.

  • Multi-Store Fulfillment channel IDs. When BigCommerce is set up with Multi-Store Fulfillment (MSF), products need special consideration so the correct sales-channel IDs are assigned. Contact your implementation partner for guidance on the channel IDs your configuration requires. The default ChannelAssignments mapping ships as a scaffold you fill in (see the Mappings section).

  • Rate limiting. When BigCommerce rate-limits requests, the transfer is automatically rescheduled to resume after the limit window resets — no subscriber action is required.

iPaaS.com Caveats

  • Category prerequisite. Category assignments resolve iPaaS.com categories to BigCommerce category IDs. A category referenced by a product must already exist in BigCommerce for the assignment to apply, and a child category cannot be created until its parent category exists.

  • Location configuration. Inventory mappings read from a named iPaaS.com location. Confirm the location name used in the mappings and filters matches a location that has inventory assigned to BigCommerce, configured under Settings → Locations.

  • Inventory external-ID linking. Inventory external IDs are not linked until a full product update has been performed. Run a full product transfer before relying on standalone or realtime inventory transfers.

  • Parent-before-child ordering. Variants, options, option values, and units are created against their parent product; the parent must transfer successfully for the child to be created and linked.

Integration-Specific Caveats

  • Category assignment timing. Category assignments are often processed right after a product update, so a product-update event can arrive before the assignment finishes. Process category-assignment events ahead of the next product update; the assignment collection's filter and formulas are designed to handle this ordering.

  • Price-list gating (optional). The variant collections ship with a filter that gates the transfer on customer-group price-list configuration. See the per-collection Mapping Filter blocks and the placeholder flag below.

Setup Requirements

iPaaS.com Configuration

Enable the relevant record-change events under Outbound Data Flows in the subscription configuration so transfers run automatically:

  • Product created / product updated (drives the product create/update and its children).

  • Product category created / updated (drives the category collections).

  • Product category assignment created / updated / deleted (drives the assignment collections).

  • Product inventory and product variant inventory events (drive the inventory collections).

  • Product variant deleted (drives the variant-delete collection).

For the inbound Delete BigCommerce Product TO iPaaS.com flow, configure the BigCommerce product-deleted webhook and enable the corresponding event under Inbound Data Flows.

If you use price lists with price rules, configure the per-customer-group Pricing_{BigCommerce Customer Group ID} custom field and the PriceList_Currency value before enabling the price-list-related mappings.

See the BigCommerce Installation Instructions for the full webhook and data-flow setup steps.

BigCommerce Configuration

  • Configure any BigCommerce custom fields you intend to map under Subscription Management → Subscriptions → BigCommerce → Custom Fields (module BC Product).

  • Confirm the inventory location name used in the mapping filters matches your BigCommerce inventory location.

  • For Multi-Store Fulfillment stores, confirm the sales-channel IDs the ChannelAssignments mapping should assign.

Integration Flow

When a product is transferred FROM iPaaS.com, the integration writes the product and its related records to BigCommerce in sequence:

  1. The product header is created or updated in BigCommerce from the mapped fields (name, type, SKU, pricing, inventory level and tracking, brand, categories, channel assignments, weight, and custom fields).

  2. Related records are created or updated and linked to the product — variants, variant options, product options, product option values, and units.

  3. Custom field values and, where configured, price-list records are written for the product.

  4. Category, category-assignment, and inventory changes flow through their own standalone collections, either as part of the same product event or on their own record events.

For the inbound delete flow, a BigCommerce product-deleted webhook (or a Manual Sync of the deleted product) locates the linked iPaaS.com product by its external ID and removes it.

Mappings

Each collection below lists its iPaaS.com data type in plain terms, a Mapping Filter block where the live collection carries a filter, and its field mapping table. Near-identical Add and Update collections are combined into one subsection with any deltas noted. In the tables, the Source Field (iPaaS.com) column shows the actual field name, static value, or dynamic-formula body from the live mapping. Formula bodies that update inventory, resolve brands, or expand custom fields are shown inline; the longer ones are also explained in the Custom Fields / Product Behaviors (Reference) section.

Add / Update BigCommerce Product FROM iPaaS.com

iPaaS.com data type: Product

This is the parent collection. The Add collection creates a new BigCommerce product; the Update collection changes an existing one. Neither collection carries a mapping filter by default — all product records are processed. (An optional price-list gating filter is available; see Additional Notes.) The tables below cover both; Add-only and Update-only rows are marked.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

Name

Name

Required. The product name. BigCommerce rejects a product without a name. (Add only — the Update collection does not re-map Name.)

Field

Sku

Sku

Required. The primary match key between iPaaS.com and BigCommerce products; BigCommerce requires it to create the product.

Static

"physical"

Type

Required (Add only). Sets the BigCommerce product type to physical.

Field

Description

Description

Recommended (Add only). The product description.

Field

DefaultPrice

Price

Recommended. The product's default price.

Field

SalePrice

SalePrice

Recommended. The product's sale price.

Field

Barcode

Upc

Recommended. The product's UPC / barcode.

Dynamic Formula

return await ConvertBrandNameToBCBrandIdAsync(GetCustomFieldValue(CustomFields, "C5 Brand"));

BrandId

Recommended (Add only). Resolves the BigCommerce brand from the product's C5 Brand custom field. Supports up to 250 brand values (a BigCommerce API limit).

Dynamic Formula

return await ConvertCategoriesToBigCommerceIdsAsync(Categories);

Categories

Recommended. Converts the product's iPaaS.com category assignments to BigCommerce category IDs. The referenced categories must already exist in BigCommerce.

Dynamic Formula

(see inventory-level formula below the table)

InventoryLevel

Recommended. The product's stock level at the MAIN location, floored to a whole number. Handles kit products and never sends a value below zero.

Dynamic Formula

(see inventory-tracking formula below the table)

InventoryTracking

Recommended. Outputs one of the three BigCommerce tracking types: none (digital items), variant (gridded items), or product (everything else).

Dynamic Formula

if(Weight != null) return Weight; return 0.5;

Weight

Recommended (Add only). Sends the product weight, defaulting to 0.5 when none is present. BigCommerce requires a weight for physical products.

Dynamic Formula

(see channel-assignment scaffold below the table)

ChannelAssignments

Optional. A scaffold you fill in with your channel-assignment logic (custom-field lookup, etc.). Important for Multi-Store Fulfillment stores.

Dynamic Formula

(Sku == "ADM-TL2" ? null : "V") (Add) / Static "V" (Update)

UnitHandling

Optional. Enables variant/unit product creation. On Add, this is a conditional formula that skips a specific test SKU; on Update it is the static value "V".

Dynamic Formula

(see Pimcore-attributes formula below the table)

customFieldsMapped

Optional. Expands the Pimcore Product Attributes custom field into a set of individual BigCommerce custom fields.

Field

BC PriceLists_FormattedData

Pricing_{Customer Group ID}

Optional. Carries formatted price-list data for a specific BigCommerce customer group. Used only when the product must appear in a price list with a price rule. See the Custom Field Support section for the data format.

Static

"USD"

PriceList_Currency

Optional. The currency code for price-list records. Must be a valid currency configured in the BigCommerce portal when price lists are used.

InventoryLevel formula (Add / Update):

if ( GetCustomFieldValue(CustomFields, "Kit Item") == "True" && Kit != null ) {return await SumKitParentQuantityAsync("available",Id);} else {var result = await QuantityFromLocationAsync(Inventory, "MAIN");return Floor(result);}

Placeholder value — replace during implementation: the location name MAIN is an example iPaaS.com location name. Replace it with the name of the location that holds the inventory you send to BigCommerce.

InventoryTracking formula (Add / Update):

(((Type == "Virtual" && GetCustomFieldValue(CustomFields, "Kit Item") != "True" && Kit != null) || GetCustomFieldValue(CustomFields, "Parent Always In Stock") == "Y") ? "none" : BigCommerceInventoryTrackingType(Type, Variants))

ChannelAssignments scaffold (Add / Update):

var channelIds = new List<int>;if(1==1){ channelIds.Add(1); } //Add your logic - custom field lookup, etcif(1==2){ channelIds.Add(2); }return channelIds

The scaffold always assigns channel 1. Replace the placeholder logic with the channel-assignment rules your store requires, especially under Multi-Store Fulfillment.

Pimcore Product Attributes formula (Add / Update):

var attribute = GetCustomFieldValue(CustomFields, "Pimcore Product Attributes");if(attribute != null){var response = await GetDictionaryForCustomFields(attribute,"key","value");return response;}

This reads the raw JSON in the Pimcore Product Attributes custom field and parses it into key/value pairs that are written as individual BigCommerce custom fields.

Add / Update BigCommerce Product Variant FROM iPaaS.com

iPaaS.com data type: Product Variant

Child of the Product collection. Creates or updates a variant and links it to its parent product. Both the Add and Update collections carry the price-list gating filter below.

Mapping Filter

long customerGroupId = 31;var iPaaSCategoryId = await GetSpaceportIdAsync(customerGroupId, "Customer Category", SpaceportSystemId);if(iPaaSCategoryId != null && iPaaSCategoryId > 0){bool IsExist = await CustomerGroupExistInPriceList(customerGroupId.ToString());if(!IsExist)    throw new Exception("This customer group (id: " + customerGroupId + ") does not exist in any price list of Bigcommerce");return true;}else    throw new Exception("This customer group (id: " + customerGroupId + ") does not exist or interlinked with any iPaaS Customer Category");return true;

Filter Description. The filter gates each variant on a BigCommerce customer group being ready for price lists. It resolves the customer group to an iPaaS.com Customer Category; if that link does not exist, the transfer stops with "This customer group (id: 31) does not exist or interlinked with any iPaaS Customer Category". If the link exists, the filter then checks whether the customer group appears in any BigCommerce price list; if it does not, the transfer stops with "This customer group (id: 31) does not exist in any price list of Bigcommerce". Only when both checks pass does the variant transfer. Subscribers who do not gate variant creation on price-list membership can remove the filter.

Placeholder value — replace during implementation: the filter hardcodes customerGroupId = 31. This is a development/example customer-group ID. Replace 31 with the BigCommerce customer-group ID your configuration uses before enabling the collection — as written, the filter evaluates only customer group 31 and will reject or misgate every real variant that belongs to a different group.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

Sku

Sku

Required. The variant's primary match key; BigCommerce requires it to create the variant.

Field

DefaultPrice

Price

Recommended. The variant's default price.

Field

SalePrice

SalePrice

Recommended. The variant's sale price.

Field

Barcode

Upc

Recommended. The variant's UPC / barcode.

Dynamic Formula

var result = await QuantityFromLocationAsync(Inventory, "MAIN"); return Floor(result);

InventoryLevel

Recommended. The variant's stock at the MAIN location, floored to a whole number and never below zero. Placeholder: replace MAIN with your location name.

Dynamic Formula

if(Weight != null) return (decimal)Weight; return 0.5;

Weight

Recommended (Add only). The variant weight, defaulting to 0.5.

Field

BC PriceLists_FormattedData

Pricing_{Customer Group ID}

Optional. Price-list data for a specific customer group; used only with price lists.

Static

"USD"

PriceList_Currency

Optional. Currency code for price-list records.

Add / Update BigCommerce Product Variant Option FROM iPaaS.com

iPaaS.com data type: Product Variant Option

Child of the Variant collection. Creates the option/value pairs (for example Size and Color) that define a variant. No mapping filter. Add and Update map identical fields.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

OptionName

OptionDisplayName

Required. Names the option shown on the variant (for example Size or Color).

Field

Value

Label

Required. The option's selected value for this variant (for example Large or Blue).

Add / Update BigCommerce Product Option FROM iPaaS.com

iPaaS.com data type: Product Option

Child of the Product collection. Creates a shared product option (for example Color or Size) that variants draw values from. No mapping filter. Add and Update map identical fields.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

OptionName

Name

Required. The internal name of the option.

Field

OptionName

DisplayName

Required. The name shown to shoppers.

Lookup

Lookup Translation: BC Product Option Type From iPaaS

Type

Required. Sets the BigCommerce option control type (dropdown, radio buttons, swatch, and so on) by translating the source option type. Review and customize the translation so each source type maps to the control type your storefront expects.

Lookup Translation Tables

Source Value (iPaaS.com)

Destination Value (BigCommerce)

Notes

Color

swatch

Size

rectangles

true

dropdown

default when no specific type matches

The BC Product Option Type From iPaaS translation is customized per subscriber. Map each iPaaS.com option type to the BigCommerce control type your storefront uses. iPaaS.com options are designed around color as a default; additional types can be added by your implementation partner.

Add / Update BigCommerce Product Option Value FROM iPaaS.com

iPaaS.com data type: Product Option Value

Child of the Product Option collection. Creates the allowed values for an option (for example the individual color or size choices). No mapping filter. Add and Update map identical fields.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

Value

Label

Required. The value shown to shoppers (for example Blue or Large).

Field

Order

SortOrder

Recommended. Controls the display order of the values.

Lookup

Lookup Translation: BC Product Option Value Color Swatch From iPaaS

Colors

Recommended (color options). Sets the swatch color BigCommerce displays for the value. Applies to color-type options; non-color values do not use a swatch.

Lookup Translation Tables

Source Value (iPaaS.com)

Destination Value (BigCommerce)

Notes

BLACK

#000000

ROYAL

#0802f9

CHARCOAL

#4f5052

GRAY / GREY

#a9a9a9

WHITE

#ffffff

CREAM

#f8eed5

NATURAL

#daccaf

BROWN

#6f4d37

GREEN

#009150

NAVY

#002d62

CAMO

#78866b

A representative sample is shown (24 pairs configured). The BC Product Option Value Color Swatch From iPaaS translation is customized per subscriber. Map each source color to the swatch color you want displayed.

Add / Update BigCommerce Product Unit FROM iPaaS.com

iPaaS.com data type: Product Unit

Child of the Product collection. Writes an iPaaS.com alternate unit of measure to BigCommerce. No mapping filter. Add and Update map identical fields.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

Name

Name

Required. The alternate unit's name; BigCommerce needs a name to present the unit.

Field

Conversion

Conversion

Recommended. The conversion factor between the alternate unit and the base unit.

Field

DefaultPrice

Price

Recommended. The unit's default price.

Field

SalePrice

SalePrice

Recommended. The unit's sale price.

Field

MSRP

RetailPrice

Recommended. The unit's retail price / MSRP.

Field

Child Alternate Unit Name

UnitNameChildOverride

Optional. Per-unit name override from a source custom field.

Field

Child Alternate Unit Include

UnitIncludeChildOverride

Optional. Per-unit include override.

Field

Child Alternate Unit Default Price

UnitPriceChildOverride

Optional. Per-unit price override.

Field

Child Alternate Unit Sale Price

UnitSpecialPriceChildOverride

Optional. Per-unit sale-price override.

Field

Child Alternate Unit Numerator

UnitConversionNumeratorChildOverride

Optional. Per-unit conversion numerator override.

Field

Child Alternate Unit Denominator

UnitConversionDenominatorChildOverride

Optional. Per-unit conversion denominator override.

Field

Parent Alternate Unit Barcode

UnitBarcodeParentOverride

Optional. Parent-level unit barcode override.

Field

Child Alternate Unit Barcode

UnitBarcodeChildOverride

Optional. Child-level unit barcode override.

Add BigCommerce Product Inventory Standalone FROM iPaaS.com

iPaaS.com data type: Product Inventory

Seeds the inventory level on a newly added BigCommerce product. Variant inventory is handled by the companion Variant Inventory collection.

Mapping Filter

var loc = await LocationIdFromNameAsync("MAIN");var external = await GetExternalIdAsync(ParentId, "Product", SpaceportSystemId);if(loc == LocationId && !IsEmpty(external)){return true;} else {return false;}

Filter Description. The record is processed only when both conditions hold: the record's LocationId matches the configured location (resolved from the name MAIN), and the product has already been transferred to BigCommerce (an external product ID resolves for the ParentId). Any record for a different location, or for a product not yet in BigCommerce, is skipped.

Placeholder value — replace during implementation: the location name MAIN is an example. Replace it with the name of your iPaaS.com location that holds the inventory you send to BigCommerce.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Dynamic Formula

var result = await SumInventoryForProductAsync(ConvertToLong(ParentId), "MAIN"); return Floor(result);

InventoryLevel

Required. Sums the product's available stock at MAIN, floored to a whole number and never below zero. Placeholder: replace MAIN.

Dynamic Formula

return await GetExternalIdAsync(ParentId, "Product", SpaceportSystemId);

Id

Required. Resolves the BigCommerce product ID whose inventory is set. The product must already exist in BigCommerce.

Add BigCommerce Product Variant Inventory Standalone FROM iPaaS.com

iPaaS.com data type: Product Variant Inventory

Seeds the inventory level on a newly added BigCommerce variant.

Mapping Filter

var loc = await LocationIdFromNameAsync("MAIN");var external = await GetExternalIdAsync(ParentId, "Product Variant", SpaceportSystemId);if(loc == LocationId && !IsEmpty(external)){return true;} else {return false;}

Filter Description. Processes a variant inventory record only when the record's location matches the configured location and the variant has already been transferred (a variant external ID resolves for the ParentId). Records for other locations or for variants not yet in BigCommerce are skipped.

Placeholder value — replace during implementation: replace the location name MAIN with your iPaaS.com inventory location name.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Dynamic Formula

var result = await SumInventoryForVariantAsync(ConvertToLong(ParentId), "MAIN"); return Floor(result);

InventoryLevel

Required. Sums the variant's available stock at MAIN, floored and never below zero. Placeholder: replace MAIN.

Dynamic Formula

(see variant-ID formula below the table)

Id

Required. Resolves the BigCommerce variant ID from the variant's external-ID link.

Dynamic Formula

(see product-ID formula below the table)

ProductId

Required. Resolves the BigCommerce parent product ID from the variant's external-ID link.

The variant's external-ID link encodes both the parent product ID and the variant ID, separated by a |. The Id mapping takes the segment after the |; the ProductId mapping takes the segment before it:

// Idvar fullExternal = await GetExternalIdAsync(ParentId, "Product Variant", SpaceportSystemId);string variantExternal = fullExternal.Substring(fullExternal.LastIndexOf("|") + 1);return variantExternal;// ProductIdvar fullExternal = await GetExternalIdAsync(ParentId, "Product Variant", SpaceportSystemId);int parentPos = fullExternal.IndexOf('|');var parentId = fullExternal.Substring(0, parentPos);return parentId;

Update BigCommerce Product Inventory Updates FROM iPaaS.com (Realtime)

iPaaS.com data type: Product Inventory

A lightweight collection that updates a product's inventory level as stock changes, without rewriting the whole product.

Mapping Filter

var loc = await LocationIdFromNameAsync("MAIN");if(loc == LocationId){return true;} else {return false;}

Filter Description. Processes an inventory record only when its LocationId matches the configured location (resolved from the name MAIN). Records for any other location are skipped.

Placeholder value — replace during implementation: replace the location name MAIN in the filter with your iPaaS.com inventory location name.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Dynamic Formula

(see kit-aware inventory formula below the table)

InventoryLevel

Required. The single field this collection updates. Sums the product's available stock (kit-aware) and never sends a value below zero.

if ( GetCustomFieldValue(CustomFields,"Kit Parent") == "True" ) {return await SumKitParentQuantityForSingleLocationAsync("available", ConvertToLong(ParentId), ConvertToLong(LocationId));} else {var result = await SumInventoryForProductAsync(ConvertToLong(ParentId), "MAIN");return Floor(result);}

Placeholder: replace MAIN in the formula's non-kit branch with your location name.

Update BigCommerce Product Variant Inventory Updates FROM iPaaS.com (Realtime)

iPaaS.com data type: Product Variant Inventory

A lightweight collection that updates a variant's inventory level as stock changes.

Mapping Filter

var loc = await LocationIdFromNameAsync("MAIN");if(loc == LocationId){return true;} else {return false;}

Filter Description. Processes a variant inventory record only when its LocationId matches the configured location (resolved from MAIN). Records for other locations are skipped.

Placeholder value — replace during implementation: replace the location name MAIN with your iPaaS.com inventory location name.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Dynamic Formula

return await SumInventoryForVariantAsync(ConvertToLong(ParentId), "MAIN");

InventoryLevel

Required. The single field this collection updates. Sums the variant's available stock at MAIN and never sends a value below zero. Placeholder: replace MAIN.

Add / Update BigCommerce Product Category FROM iPaaS.com

iPaaS.com data type: Product Category

Builds and maintains the BigCommerce category tree. Both Add and Update carry the parent-ordering filter below. The Add collection sets TreeId and generates the storefront UrlPath; the Update collection omits TreeId and preserves the existing BigCommerce URL path. Category creation matches on the category Name; when a name already exists, the configured collision-handling method (remap-and-link, update-and-link, update-and-no-link, or error) is applied.

Mapping Filter

var external = await GetExternalIdAsync(ParentId, "Product Category", SpaceportSystemId);if(!IsEmpty(ParentId) && IsEmpty(external))   throw new exception("Parent category must be transferred first");else    return true;

Filter Description. The filter enforces parent-before-child ordering. When the category has a ParentId but that parent has not yet been transferred to BigCommerce (no external ID resolves), the transfer stops with "Parent category must be transferred first". Categories with no parent (top-level categories) always pass. No value in this filter is environment-specific, so no placeholder substitution is required.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Field

Name

Name

Required. The category name; also the key used for duplicate detection. BigCommerce rejects a category (or a category update that clears the name) without one.

Static

"1"

TreeId

Required (Add only). Places the category in a single BigCommerce category tree. Fixed value; review with your implementation partner if you use multiple trees.

Dynamic Formula

return await GetExternalIdAsync(ParentId, "Product Category", SpaceportSystemId);

ParentId

Recommended. Resolves the parent's BigCommerce category ID so the category is placed under it. Top-level categories have no parent.

Field

Description

Description

Recommended. The category description.

Dynamic Formula

CoalesceToInt(GetCustomFieldValue(CustomFields, "Sort Order"), 0)

SortOrder

Recommended. Reads a Sort Order custom field, defaulting to 0.

Static

"true"

IsVisible

Recommended. Makes the category visible on the storefront.

Dynamic Formula

(Add: see URL-path formula below; Update: DestinationValue.UrlPath)

UrlPath

Recommended. On Add, generates a sanitized storefront URL path from the category name and its subcategory trail. On Update, DestinationValue.UrlPath preserves the existing BigCommerce URL rather than regenerating it.

UrlPath formula (Add only):

var result = Name;if (SubcategoryTrail != null)   result = SubcategoryTrail + " > " + Name;result = result.Replace(" > ","/");result = result.Replace(" ","-");result = result.Replace("___","-");result = result.Replace("__","-");result = result.ToLower();return "/" + SanitizeUrlPath(result) + "/";

Add/Update BigCommerce Product Category Assignment FROM iPaaS.com

iPaaS.com data type: Product Category Assignment

Assigns a product to a category. It does not create the product or the category — both must already exist in BigCommerce.

Mapping Filter

var value = await GetExternalIdAsync(CategoryId, "Product Category", SpaceportSystemId);if (value !=  null){return true;} else {return false;}

Filter Description. Processes an assignment only when its category has already been transferred to BigCommerce — a BigCommerce category ID (value) resolves for the CategoryId. Assignments whose category does not yet exist in BigCommerce are skipped. No value in this filter is environment-specific, so no placeholder substitution is required.

Mapping Type

Source Field (iPaaS.com)

Destination Field (BigCommerce)

Description

Dynamic Formula

return await GetExternalIdAsync(ProductId, "Product", SpaceportSystemId);

ProductId

Required. Resolves the BigCommerce product being assigned. The product must already exist in BigCommerce.

Dynamic Formula

return await GetExternalIdAsync(CategoryId, "Product Category", SpaceportSystemId);

CategoryId

Required. Resolves the BigCommerce category the product is assigned to. The category must already exist; the filter enforces this.

Delete BigCommerce Product Category Assignment FROM iPaaS.com

iPaaS.com data type: Product Category Assignment

Removes the link between a product and a category. Delete collections have no field mappings by design.

Mapping Filter

var value = await GetExternalIdAsync(CategoryId, "Product Category", SpaceportSystemId);if (value !=  null){return true;} else {return false;}

Filter Description. Processes a removal only when the assignment's category has already been transferred to BigCommerce (a category ID value resolves for the CategoryId). This restricts deletes to assignments for categories that exist in BigCommerce and skips the rest. No value in this filter is environment-specific, so no placeholder substitution is required.

This collection has no field mapping table — the removal is driven by the source assignment's identity and the filter above.

Delete BigCommerce Product Variant FROM iPaaS.com

iPaaS.com data type: Product Variant

Deletes a variant in BigCommerce when it is removed in iPaaS.com; the parent product remains. No mapping filter, and no field mappings by design — the delete is driven by the variant's external-ID link. The variant must already have a BigCommerce external ID for the delete to locate and remove it.

Delete BigCommerce Product TO iPaaS.com

iPaaS.com data type: Product

Removes a product in iPaaS.com when BigCommerce reports the product deleted. This is the only inbound collection in this document. No mapping filter, and no field mappings by design — the delete uses the existing external-ID link between the BigCommerce product and the iPaaS.com product. The product must already be linked for the delete to find and remove it.

Custom Fields / Product Behaviors (Reference)

Several product behaviors are driven by custom fields and by helper functions you place in dynamic-formula mappings. These are the formulas subscribers and implementation partners edit directly, so short function names are shown inline. Add each behavior as a single dynamic-formula mapping on the parent Product Add and Product Update collections unless noted otherwise.

Product Modifiers

Product Modifiers let shoppers enter values that travel with a line item when the product is sold — presented in addition to variant options such as Size and Color. To use them: add the modifier in BigCommerce, add a matching BigCommerce custom field in the iPaaS.com subscription (module BC Product; the custom-field name becomes the modifier's display name in BigCommerce), then map it on the parent Product collections with one of the functions below. The destination is the custom field you created; the source is a dynamic formula.

Each function creates a different modifier control type. The required boolean is always the first argument.

  • ToTextModifier — a text-entry modifier. Overloads accept a default value and, optionally, max lines / min length / max length. Setting max lines greater than 1 makes the entry box multi-line.

  • ToNumberModifier — a numeric-entry modifier. Overloads accept a default value and number limits (numberLimitMode of lowest, highest, or range, an integers-only flag, and low/high bounds). Integers are required for defaults and limits even when the field accepts decimals.

  • ToDateModifier — a date-entry modifier. Overloads accept a default date and date limits (dateLimitMode of earliest, range, or latest). Dates use full DateTime format, for example 2020-01-01T00:00:00+00:00.

  • ToPickListModifier — a product pick list. Overloads accept a default value and flags for whether the picked product adjusts pricing, adjusts inventory, and how shipping is calculated (productListShippingCalc of none, weight, or package).

  • ToDropDownModifier — a drop-down list of values. Overloads accept a default value and the list of options. (See Price Adjusters below for the priced overload.)

  • ToSwatchModifier — a color-swatch selector. Takes a dictionary of value → color; an overload accepts a default value.

  • ToRadioButtonsModifier — a radio-button group. Takes a list of options; an overload accepts a default value.

  • ToRectangleModifier — a rectangle-button group. Takes a list of options; an overload accepts a default value.

  • ToCheckBoxModifier — a single checkbox. Takes a description; an overload sets the initial checked state.

  • ToFileUploadModifier — a file-upload control. Overloads accept a file-types mode (specific or all), a list of supported/other file types, and a max file size.

BigCommerce requires a default for drop-down, rectangle, radio-button, and swatch modifiers. If you do not set one, BigCommerce makes the first entry the default. Example usages:

  • ToTextModifier(false, "", 5, 0, 30) — optional multi-line text, up to 30 characters.

  • ToNumberModifier(false, 11, "range", true, 1, 100) — optional integer between 1 and 100.

  • ToDropDownModifier(false, StringListFromString("EAST, WEST, SOUTH")) — a drop-down; the first entry becomes the default.

  • ToSwatchModifier(true, JSONToDictionary("{\"BLUE\":\"#3600FF\", \"RED\":\"#FF5C00\", \"GREEN\":\"#3FFF00\"}")) — a required swatch selector.

  • ToFileUploadModifier(true, "specific", StringListFromString("images,other"), StringListFromString("eps"), 1000) — a required upload limited to specific file types.

Price Adjusters. ToDropDownModifier has an overload that accepts a list of prices to apply as price adjusters to the option values: ToDropDownModifier(required, defaultValue, optionValues, priceModifier). Supply one price to apply it to every value, or one price per value in order.

RemoveModifier(). When a mapping uses this function, the modifier named in the mapping's field is checked for existence in BigCommerce and removed if present. Use it to retire a modifier you previously added.

To accept modifier values on the product's line items, the modifiers must also be added to the Transaction Line mappings. See the BigCommerce Transaction (Order) documentation for that step.

Image URLs

iPaaS.com can send an external, publicly accessible image URL into BigCommerce using ProductImageListFromFilenames. Map it as a dynamic formula on the parent Product collections.

  • Single image. Pass a BigCommerce product ID and one image URL: ProductImageListFromFilenames(BCProductId, imageUrl). The image is flagged as the thumbnail with sort order 1. Passing a real product ID (rather than 0) lets BigCommerce match on name likeness so existing images are not duplicated.

  • Multiple images. Pass several URL strings as separate arguments: ProductImageListFromFilenames(BCProductId, image1, image2, image3). Images are processed in the order supplied — the first becomes the thumbnail, and sort order follows the argument order. Passing a single list variable instead of separate string arguments will fail.

  • Add vs. Update. On the Add collection you typically pass 0 as the product ID (the product does not have a BigCommerce ID yet). On the Update collection, resolve the real BigCommerce product ID first (via the product's external ID) so existing images are not duplicated.

Null-return requirement. A mapping using this function must return null when no image is provided. If it returns an empty value instead, the transfer fails because BigCommerce requires the image_url field to be supplied. Guard the formula, for example:

string imageUrl = (string)(GetCustomFieldValue(CustomFields, "Images"));if(string.IsNullOrEmpty(imageUrl)) { return null; }else { return ProductImageListFromFilenames(0, imageUrl); }

Storefront Redirects

To set a storefront redirect for a product, map both RedirectUrl and RedirectUrlSite on the product — both are required for a redirect to apply. The site is identified by its BigCommerce site ID, which you resolve with one of:

  • SiteIdFromChannelId(channelId) — resolves the site from a channel ID. For the main site this is channel 1: await SiteIdFromChannelId(1).

  • SiteIdFromChannelUrl(url) — resolves the site from its URL: await SiteIdFromChannelUrl("https://yourstore.mybigcommerce.com").

Related Products

Related products can be sent by mapping a dynamic formula to the RelatedProducts field: ConvertRelatedProductsToBigCommerceIdsAsync(relatedProducts, typeFilter). The typeFilter is optional — omit it to include all related products that have BigCommerce external IDs, or pass one of Replacement, Similar Item, or Related Product to include only that type. The related products must already exist in BigCommerce for their IDs to resolve.

SpecialVariantOptionExclusions

When subscribers update variant option ValueData fields (such as colors or pattern URLs) directly in BigCommerce and do not want iPaaS.com to overwrite them, create a BigCommerce custom field in iPaaS.com named SpecialVariantOptionExclusions (case sensitive) and map it on the product Add/Update. It marks the named option-value data to be excluded from the full-replace write.

Inventory Location and the Negative Guard

BigCommerce inventory is tracked from a single iPaaS.com location. Every inventory mapping and filter references the location name MAIN as a placeholder — replace it with the name of the iPaaS.com location that holds the inventory you send to BigCommerce (Settings → Locations). BigCommerce rejects negative inventory; the default mappings floor the value at zero, and where a source value could go negative you can wrap it with Larger(QtyAvailable, 0) so it never falls below zero.

Matching and Category Tree Notes

  • SKU vs. external ID. Products and variants are matched to BigCommerce on SKU; all other product attributes (categories, options, option values, units, assignments) are matched on external ID.

  • Single category tree. The default mappings assume one BigCommerce category tree (TreeId fixed to 1). Contact your implementation partner to build multiple trees.

  • Channel assignments / Multi-Store Fulfillment. The ChannelAssignments mapping ships as a scaffold that assigns channel 1. For Multi-Store Fulfillment stores, replace the scaffold with logic that assigns the correct sales-channel IDs; contact your implementation partner for the IDs your configuration requires.

  • Delete collections have no mappings by design. Do not add field mappings to any delete collection.

Testing & Validation

Test Scenarios

  1. Create a product in iPaaS.com with a SKU, price, and inventory, then transfer it and confirm the product, its inventory level, and its category assignments appear correctly in BigCommerce.

  2. Create a product with variants (each with Size/Color options) and confirm the variants, variant options, product options, and option values all transfer and link correctly.

  3. Add an alternate unit of measure to a product and confirm the unit and its overrides appear on the BigCommerce product.

  4. Update a mapped field on an existing product and confirm the change propagates, and that unmapped fields are not unexpectedly cleared (full-replace behavior).

  5. Change stock in iPaaS.com and confirm the realtime inventory collection updates BigCommerce without a full product transfer.

  6. Transfer a child category before its parent and confirm the parent-ordering filter stops it with "Parent category must be transferred first"; then transfer the parent and re-run the child.

  7. If you use the variant price-list filter, confirm a variant whose customer group is not linked to an iPaaS.com Customer Category (or not in a price list) is rejected with the expected message.

  8. Delete a product in BigCommerce and confirm the inbound delete flow removes the linked iPaaS.com product (only if you intend BigCommerce to be the source of truth).

Validation Checklist

  • The inventory location name (MAIN) has been replaced with your configured iPaaS.com location in every inventory mapping and filter.

  • The variant price-list filter's customerGroupId has been replaced with your real BigCommerce customer-group ID, or the filter has been removed.

  • The ChannelAssignments scaffold has been replaced with your channel logic (required for Multi-Store Fulfillment).

  • The BC Product Option Type From iPaaS and BC Product Option Value Color Swatch From iPaaS lookup translations have been reviewed and customized.

  • Every field you want preserved in BigCommerce is mapped, given the full-replace write behavior.

  • The correct Outbound (and, for product delete, Inbound) Data Flow events are enabled.

Additional Notes

  • Optional price-list gating on the parent product. The parent Product Add and Update collections ship without a filter. An optional filter — identical in shape to the variant filter shown above — is available for subscribers who want to gate product creation/update on customer-group price-list membership. If you add it, apply the same customerGroupId placeholder replacement.

  • Category-update webhook. Subscribing to the iPaaS.com product-category-updated event is not recommended for the category-assignment flow; it can create unnecessary transfers that usually perform no action because the product is already assigned to the same category.

  • Kits are not supported by the BigCommerce integration at this time.

Related Documents

Did this answer your question?