Skip to main content

iPaaS.com to Shopify Product Mapping Documentation

How iPaaS.com Products and their inventory, options, and variants are written to Shopify (Add, Update, Delete).

Summary

This documentation covers the mapping collections that write iPaaS.com Products and their related data — inventory, options, option values, variants, variant inventory, and units of measure — to Shopify (the FROM iPaaS.com direction). Separate parent collections handle the Add, Update, and Delete paths; each Add/Update parent has child collections for inventory, options (and their values), variants (and their inventory), and units. Together they create, update, and delete products in Shopify from iPaaS.com source data.

Shopify has no native units-of-measure concept. When a source product carries more than one unit, the Add/Update Shopify Product Unit FROM iPaaS.com child collection represents the units as variants — see the Units of measure section below.

The opposite direction — importing Shopify products into iPaaS.com — is covered in Shopify to iPaaS.com Product Mapping Documentation.

ID Format

Manual Sync ID: the iPaaS.com Product id. Enter it on the iPaaS.com Manual Sync page to send that product to Shopify.

External ID: after a successful create, the Shopify product id is saved as the external-id link so later updates edit the same Shopify product. Variants and variant inventory resolve their Shopify ids from their own external-id links.

Deleted Record Support

Product deletion is supported. The Delete Shopify Product FROM iPaaS.com collection removes the linked Shopify product (skipping the gift-card placeholder SKU SHOPIFY-GC). Variant deletion is supported separately by the Delete Shopify Product Variant FROM iPaaS.com collection.

Mapping Collection Status

All collections in this direction are Enabled.

Trigger events: Product Created, Updated, or Deleted in iPaaS.com, subscribed under the subscription's Outbound Data Flows. Manual Sync is always available.

Mapping filter — SKU uniqueness. Before adding a product, the Add Shopify Product FROM iPaaS.com filter confirms the product's SKU is not already used by a different Shopify product (Shopify requires unique SKUs). A product whose SKU already exists on another Shopify product is skipped — it is not added, and no error is raised — so a conflicting duplicate is never created. If a product you expect is not appearing in Shopify, check whether its SKU is already in use there; resolve the conflicting SKU in Shopify or iPaaS.com, then re-transfer. The filter also skips the gift-card placeholder SKU SHOPIFY-GC.

Custom Field Support

In the FROM iPaaS.com direction, iPaaS.com custom-field values are read into the transfer with the formula:

GetCustomFieldValue(CustomFields, "[CustomFieldName]")

This is used in several Dynamic Formula mappings (for example to drive "Requires Shipping", "Inventory Tracked", and channel selection). The default template also includes sample custom-field mappings (SH_Custom_Product, SH_Custom_Product2, SH_Custom_Product3) carried from the source subscription — review and replace or remove them to match your store's custom fields.

Duplicate or Conflicting Mappings

These FROM iPaaS.com collections write products to Shopify. The companion Add/Update Shopify Product TO iPaaS.com collection (and its children) import products from Shopify in the other direction. The Add and Update FROM-iPaaS parents split the create and update paths and do not conflict with each other.

Two standalone inventory collections — Update Shopify Product Inventory (Standalone) FROM iPaaS.com and Update Shopify Product Variant Inventory (Standalone) FROM iPaaS.com — perform the same inventory writes as the inventory child collections, but on their own (for inventory-only changes). Avoid driving the same inventory level through both the child and standalone paths in a way that double-processes.

Supported Child Collections

Add path — Parent: Add Shopify Product FROM iPaaS.com

  • Add Shopify Product Inventory FROM iPaaS.com (filter: location must exist in Shopify)

  • Add Shopify Product Option FROM iPaaS.com

    • Add Shopify Product Option Values FROM iPaaS.com

  • Add Shopify Product Variant FROM iPaaS.com

    • Add Shopify Product Variant Inventory FROM iPaaS.com

  • Add Shopify Product Unit FROM iPaaS.com (expands a multi-unit product into a "Unit" option and per-unit variants)

Update path — Parent: Update Shopify Product FROM iPaaS.com

  • Update Shopify Product Inventory FROM iPaaS.com

  • Update Shopify Product Option FROM iPaaS.com

    • Update Shopify Product Option Values FROM iPaaS.com

  • Update Shopify Product Variant FROM iPaaS.com

    • Update Shopify Product Variant Inventory FROM iPaaS.com

  • Update Shopify Product Unit FROM iPaaS.com (edits existing unit variants; adds variants for a newly added unit)

Standalone collections (no parent): Delete Shopify Product FROM iPaaS.com, Delete Shopify Product Variant FROM iPaaS.com, Update Shopify Product Inventory (Standalone) FROM iPaaS.com, Update Shopify Product Variant Inventory (Standalone) FROM iPaaS.com.

System Caveats

Shopify Caveats

  • Shopify requires a title, price, and SKU to create a product.

  • During an update, sending media deletes and re-uploads the product's existing images; for products with many variant images, consult your MISP about sending media only when it changes, to conserve Shopify API resources. Returning null from a MediaUrls mapping preserves existing images.

  • Categories must already exist in Shopify; categories that do not exist are not created and are simply not assigned.

  • Gift card products are excluded (the SHOPIFY-GC placeholder SKU is filtered out of Add, Update, and Delete).

  • Units of measure become variants: the "Unit" option consumes one of Shopify's three option slots, the expanded variant count (variants × units) counts against the store's plan variant limit, updates never delete unit variants (a removed or renamed unit leaves an orphaned variant), and a SKU must not contain a caret ^ of its own (a , or ; in a SKU disables the per-variant override maps). See Shopify Known Limitations.

iPaaS.com Caveats

  • Dynamic Formulas must resolve correctly, or the line fails.

  • The Add parent enforces SKU uniqueness via its mapping filter — a product whose SKU collides with an existing Shopify product is skipped and must be repaired manually.

  • Inventory child/standalone collections require the target Shopify location to exist.

Setup Requirements

  • Enable the Add Shopify Product FROM iPaaS.com and/or Update Shopify Product FROM iPaaS.com parents and the child collections you need.

  • Configure the Lookup Translations for product Status and InventoryPolicy.

  • Subscribe to the iPaaS.com Product Create / Update / Delete outbound triggers under Outbound Data Flows.

  • The Shopify connection must include the write_products scope (and write_inventory for inventory collections).

  • Review and replace the placeholder values flagged below before production use.

Integration Flow

  1. An iPaaS.com Product create/update/delete (or a manual sync) dispatches the matching parent collection.

  2. Core product attributes are written to Shopify; on create, the Shopify product id is saved as the external id.

  3. Child collections write inventory, options (and their values), and variants (and their inventory).

  4. The Add parent's filter blocks duplicate-SKU and gift-card products before transfer.

Mappings

Add Shopify Product FROM iPaaS.com (Parent) — Collection 284601

Mapping filter (SKU uniqueness + gift-card exclusion):

if (Sku == "SHOPIFY-GC") {return false;}
if (TrackingMethod == "Product") {
  var value = await ValidateProductSkuCountAsync(Sku);
  if (value == false ) { return false; } else { return true; }
} else if (TrackingMethod == "Variant") {
  if (Variants != null && Variants.count > 0) {
    var value = await ValidateProductSkuCountAsync(Variants[0].Sku);
    if (value == false) { return false } else { return true; }
  }
}

The product is skipped if its SKU is the gift-card placeholder SHOPIFY-GC, or if the SKU already exists on another Shopify product (the first variant's SKU is checked for variant products). A duplicate-SKU product must be repaired manually before it transfers.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Notes

Field

Sku

SH_Custom_Product3

Placeholder — sample custom field; replace or remove.

Field

C5_Custom_Product

SH_Custom_Product

Placeholder — sample custom fields; replace or remove.

Dynamic Formula

GetCustomFieldValue(CustomFields, "C5_Custom_Product")

SH_Custom_Product2

Placeholder — sample custom field; replace or remove.

Field

Weight

Weight

Lookup Translation

Inventory Policy (custom)

InventoryPolicy

BUY NOWCONTINUE, PRE ORDERDENY.

Field

Name

Title

Required.

Dynamic Formula

Description

BodyHtml

Recommended.

Static

ipaas-integration

Vendor

Change if a different vendor is required.

Field

Type

ProductType

Dynamic Formula

hardcoded sample image string

MediaUrls

Placeholder — replace with real media, or return null to preserve images.

Dynamic Formula

GetCustomFieldValue(..., "Requires Shipping") (default true for physical)

InventoryLevel_RequiresShipping

Replaces deprecated requires_shipping.

Dynamic Formula

GetCustomFieldValue(..., "Inventory Tracked") (default true)

InventoryLevel_Tracked

Replaces deprecated inventory_management.

Static

false

DisableChannelAssignment

true leaves existing Shopify channel assignments untouched.

Dynamic Formula

GetChannelIdsByNames("Point Of Sale,Online Store")

ChannelIds

Placeholder — hardcoded channels; the early return skips the custom-field logic below it. Replace the list or remove the early return.

Lookup Translation

iPaaS.com product status

Status

Activeactive, Disableddraft.

Field

Sku

SKU

Required; must be unique (enforced by the filter).

Field

DefaultPrice

Price

Required.

Field

Barcode

Barcode

Recommended.

Dynamic Formula

ConvertCategoriesToShopifyIds(Categories)

Categories

Categories must already exist in Shopify.

Update Shopify Product FROM iPaaS.com (Parent) — Collection 284610

Mapping filter: Sku != "SHOPIFY-GC" — skips the gift-card placeholder; no duplicate-SKU check (the product is already linked). Mappings mirror the Add parent's non-placeholder product fields (Weight, InventoryPolicy, Title, BodyHtml, Vendor, ProductType, MediaUrls, RequiresShipping, Tracked, DisableChannelAssignment, ChannelIds, Status, SKU, Price, Barcode, Categories). The MediaUrls and ChannelIds placeholders apply here as well.

Delete Shopify Product FROM iPaaS.com — Collection 284609

Mapping filter: Sku != "SHOPIFY-GC". No field mappings — acts on the linked Shopify product id. Deletes the product and its variants/options/inventory in Shopify.

Add Shopify Product Inventory FROM iPaaS.com (Child) — Collection 284642

Mapping filter: GetExternalId(LocationId, "Location", SpaceportSystemId) != null — skips inventory for any location not yet present in Shopify.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Field

QtyAvailable

Available

Dynamic Formula

GetExternalId(LocationId, "Location", SpaceportSystemId)

LocationId

(The Update Shopify Product Inventory FROM iPaaS.com child, 284646, maps the same two fields without the filter.)

Add Shopify Product Option FROM iPaaS.com (Child) — Collection 284643

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Field

OptionName

Name

Field

Order

Position

(The Update Shopify Product Option FROM iPaaS.com child, 284645, maps the same two fields.)

Add Shopify Product Option Values FROM iPaaS.com (Option's Child) — Collection 284650

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Field

Order

Order

Field

Value

OptionValue

(The Update Shopify Product Option Values FROM iPaaS.com child, 284652, maps the same two fields.)

Add Shopify Product Variant FROM iPaaS.com (Child) — Collection 284644

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Notes

Dynamic Formula

hardcoded sample image string

MediaUrls

Placeholder — replace with real media, or return null.

Dynamic Formula

SetVariantOptionAndValues(Options)

VariantOption

Dynamic Formula

GetCustomFieldValue(..., "Requires Shipping")

InventoryLevel_RequiresShipping

Dynamic Formula

GetCustomFieldValue(..., "Inventory Tracked")

InventoryLevel_Tracked

Dynamic Formula

CoalesceToDecimal(DefaultPrice, SalePrice, Parent.DefaultPrice, Parent.SalePrice)

Price

Required; first non-null price.

Field

Sku

SKU

Required.

Static

manual

FulfillmentService

Field

Barcode

Barcode

Field

Weight

Weight

Paired with the POUNDS weight unit.

Static

POUNDS

WeightUnit

Change if a different unit is used.

Update Shopify Product Variant FROM iPaaS.com (Child) — Collection 284647

Like the Add Variant child, plus it resolves the existing Shopify variant id and applies the inventory-policy lookup:

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Notes

Dynamic Formula

hardcoded sample image string

MediaUrls

Placeholder — replace; images are deleted and re-uploaded on update.

Dynamic Formula

SetVariantOptionAndValues(Options)

VariantOption

Dynamic Formula

GetCustomFieldValue(..., "Requires Shipping")

InventoryLevel_RequiresShipping

Dynamic Formula

GetCustomFieldValue(..., "Inventory Tracked")

InventoryLevel_Tracked

Dynamic Formula

GetExternalIdAsync(Id, "Product Variant", SpaceportSystemId)

Id

Required; resolves the existing Shopify variant.

Dynamic Formula

CoalesceToDecimal(DefaultPrice, SalePrice, Parent.DefaultPrice, Parent.SalePrice)

Price

Required.

Field

Sku

SKU

Required.

Lookup Translation

Inventory Policy (custom)

InventoryPolicy

Static

manual

FulfillmentService

Field

Barcode

Barcode

Field

Weight

Weight

Variant Inventory children — Collections 284651 (Add) / 284653 (Update)

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Dynamic Formula

GetExternalId(LocationId, "Location", SpaceportSystemId)

LocationId

Field

QtyAvailable

Available

Standalone Variant Inventory — Collection 284613

The standalone variant-inventory update additionally resolves the Shopify variant inventory id from the external-id link:

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Dynamic Formula

GetExternalIdAsync(Id, "Product Variant Inventory", ...) then take the prefix before | as a 64-bit integer

Id

Dynamic Formula

GetExternalIdAsync(LocationId, "Location", ...)

LocationId

Field

QtyAvailable

Available

Units of measure — Add / Update Shopify Product Unit FROM iPaaS.com (Child)

Shopify has no native units-of-measure concept. When an iPaaS.com product carries more than one unit, this child collection expands them into a "Unit" product option and one variant per (source variant × unit), appending ^UnitName to each variant's SKU (for example GLASS^EACH, GLASS^BOX). A product with a single unit is written unchanged — no Unit option or extra variants are created, and only that unit's SKU/barcode overrides apply. The Add child creates the unit variants; the Update child matches each existing unit variant by its SKU^UNIT value and edits it in place, and creates variants for a newly added unit. Unit variants are never deleted, so removing or renaming a unit leaves the previous ^UNIT variant orphaned in Shopify.

Prices scale up by the unit's conversion factor and inventory quantities scale down as floor(quantity ÷ conversion). Exactly one unit must have a conversion of 1 — the stocking unit — and it is the only unit variant linked back to iPaaS.com by external id; the other unit variants carry no external id and are re-matched by SKU on every transfer.

Core mappings:

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Notes

Field

Name

Name

Required. Becomes the "Unit" option value and the ^UnitName SKU suffix.

Field

Conversion

Conversion

Exactly one unit = 1 (the stocking unit). Prices ×conversion; inventory ÷conversion.

Field

DefaultPrice

Price

Unit variant price; defaults to the source variant's price × conversion when no explicit unit price is given.

Field

SalePrice

SalePrice

A resolved sale price becomes the unit variant's selling Price (Shopify has one price per variant).

Field

MSRP

CompareAtPrice

Compare-at ("was") price; defaults to the source variant's compare-at × conversion.

Field

Barcode

Barcode

Unit variant barcode (Shopify stores one barcode per variant).

Field

InventoryLevel

InventoryLevel

Explicit per-unit quantity; when set, it is used at every stocked location instead of the scaled-down value.

In addition, a set of optional override fields lets a single mapped custom field vary a unit's name, inclusion, price, sale price, conversion (numerator / denominator), barcode, weight, or SKU per parent or per child variant — for example UnitPriceChildOverride, UnitBarcodeChildOverride, UnitSkuParentOverride, and UnitIncludeChildOverride. Each child-override map is encoded as childSku,value;childSku,value; when any child-override map is populated it must contain an entry for every variant SKU on the product, or the transfer fails. A SKU override replaces the variant's SKU wholesale (the ^UnitName suffix is not appended). See the Add / Update Shopify Product Unit FROM iPaaS.com mapping notes for the full field list and encoding rules.

Lookup Translations

SH Product Presale From iPaaS (InventoryPolicy)

Source (iPaaS.com)

Destination (Shopify)

BUY NOW

CONTINUE

PRE ORDER

DENY

SH Product Status From iPaaS

Source (iPaaS.com)

Destination (Shopify)

Active

active

Disabled

draft

Discontinued

archive

Preorder

draft

Confirm both lookups are configured for your store's terms.

Error Handling

  • Duplicate SKU: the Add parent's filter skips duplicate-SKU products; they must be repaired manually.

  • Invalid category: categories must resolve to existing Shopify collections, or they are not assigned.

  • Missing required fields: Title, Price, and SKU must be present to create a product.

  • Unresolved location: the Add Inventory child filters out locations not present in Shopify; other inventory collections fail the line if the location does not resolve.

Testing & Validation

  • Product creation: product appears in Shopify Admin with correct title, SKU, and price.

  • Option / variant sync: options (e.g. Color/Size) and variants are created with correct SKUs and prices.

  • Inventory sync: quantities match the iPaaS.com source per location.

  • Units of measure: a multi-unit product creates a "Unit" option and one variant per unit with ^UnitName SKUs; unit prices scale up by the conversion factor and inventory scales down (floor(quantity ÷ conversion)); the conversion-1 stocking unit is the variant linked back to iPaaS.com.

  • Placeholder review: confirm MediaUrls, ChannelIds, FulfillmentService, WeightUnit, and the sample custom-field mappings have been replaced or removed before production.

  • Deletion: deleting an iPaaS.com product removes the linked Shopify product (non-gift-card).

Additional Notes

  • Child mappings must be enabled alongside the parent for full functionality.

  • All static and placeholder values should be reviewed and adjusted for production (see the placeholder flags above).

Related Documents

Related Mapping Documentation

Did this answer your question?