Summary
This mapping enables Shopify products and related data (inventory, options, option values, variants, and variant inventory) to be synchronized into iPaaS. It captures the latest product details from Shopify and ensures that iPaaS reflects Shopify's catalog structure, inventory availability, and variant definitions.
This mapping supports both new additions and updates to product records.
Field Constraints
SKU must be unique per product/variant.
Categories must be valid and match the iPaaS taxonomy.
Default options with the Title must be excluded to avoid creating invalid product options.
Mapping Collection Status
Status: Enabled
Trigger Events: Product Add or Update in Shopify.
Id Format
When manually transferring data from iPaaS to Shopify, it is essential to enter the correct product Id (e.g., 10) into the iPaaS input field on the manual sync page.
Duplication or Conflicting Collections
This is the only active mapping collection for Product sync. No other overlapping Product-to-Product collections exist.
Supported Child Collections
Parent Collection: Shopify Product Add/Update From iPaaS
Child Collection: Shopify Product Inventory Add/Update to iPaaS – ensures Product inventory in iPaaS are also created/updated in Shopify.
Child Collection: Shopify Product Options Add/Update to iPaaS– ensures Product options in iPaaS are also created/updated in Shopify.
Child Collection: Shopify Product Option Values Add/Update to iPaaS– ensures Product option Values in iPaaS are also created/updated in Shopify.
Child Collection: Shopify Product Variant Add/Update to iPaaS – ensures Product variants in iPaaS are also created/updated in Shopify.
Child Collection: Shopify Product Variant Inventory Add/Update to iPaaS – ensures Product variants inventory in iPaaS are also created/updated in Shopify.
System Caveats
Shopify Caveats
Simple products often include default options ("Title" and "Default Title"), which must be filtered out.
Gift card products cannot be created/updated via this mapping.
iPaaS Caveats
Requires Lookup Translations to properly interpret Shopify product statuses.
Inventory synchronization requires a valid LocationId mapping.
Setup Requirements
iPaaS Configuration
Enable Shopify Product Add/Update To iPaaS mapping collection.
Configure child mappings for Inventory, Options, Option Values, Variants, and Variant Inventory.
Ensure Lookup Translations for Status and InventoryPolicy are configured.
Shopify Configuration
In the integration settings, enter the following correctly.
OAuth URL Template:
https://{API Store}.myshopify.com/admin/oauth/authorize?client_id={SystemTypeVersion:Client_Id}&scope={SystemTypeVersion:Scope}&redirect_uri={SystemTypeVersion:RedirectUrl}&state={iPaaSState}
OAuth Identifier Field: timestamp
OAuth Success Callback Field: code
Shopify Store Credentials
Client_Secret: Secret saved when creating your Shopify store
Scope: read_Products, read _product_feeds, read _product_listings, read_inventory, read_files
RedirectUrl:
https://portal.ipaas.com/Product/subscription-mgmt/subscriptions/authorization/app
Authentication & Security
OAuth 2.0 Token: Used for Shopify API authentication.
Integration Flow
Product and variant data is fetched from Shopify.
Core product fields are transferred to iPaaS.
Child mappings handle inventory, options, and variants.
Option/Option Values are filtered to exclude Shopify's default placeholders.
Variants and their inventory sync back into iPaaS.
Mappings
Shopify Product to iPaaS (Parent)
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) | Description |
Dynamic Formula |
| Shopify Images | The GetImageDataFromMedia function formats and retrieves image data from a specified Media object, consolidating all relevant metadata into a single string for simplified mapping and integration into workflows. By default, each image record contains the Image ID, URL, and Alt Text, separated by semicolons (;), with individual records separated by pipes (|). For instance, calling |
Field | InventoryPolicy | InventoryPolicy |
|
Dynamic Formula |
| Test | The GetValueFromMetaFields function retrieves the value of a metadata field from a list based on a matching Key and Namespace, or Just Key, supports both simple and dot-notated field names, and returns null if not found or if the field is invalid. Example: |
Field | InventoryLevel_Tracked | Inventory Tracked | Note that the inventory_management field is now deprecated. The equivalent functionality is now achieved by mapping true or false to the InventoryLevel_Tracked field, using the InventoryItem -> Tracked property value. |
Field | InventoryLevel_RequiresShipping | Requires Shipping | Note that the requires_shipping field is now deprecated. The equivalent functionality is now achieved by mapping true or false to the InventoryLevel_RequiresShipping field, using the InventoryItem -> RequiresShipping property value. |
Dynamic Formula |
| Shopify Product Channels | The GetChannelNamesByIds function retrieves Channel Names for a given channel ID, returning them in a comma-separated format if there is more than one. Example:
|
Field | SKU | Sku | Required: Sku is only defined on Shopify variants. For simple products having only a single default variant in Shopify, the default variant Sku will be returned for this value. Variant products will return the Sku in format {title}-{product id} and if the title is empty, only the product id will be returned. |
Field | BodyHtml | Description | Recommended |
Dynamic Formula |
| Type | This function returns the product type based on specific conditions: If the product has variants or is a simple product, it returns "Physical". If InventoryManagement is null, it returns "Virtual". |
Field | Price | DefaultPrice | Required |
Field | Barcode | Barcode | Recommended |
Field | Title | Name | Required |
Lookup Translation | Status | This lookup translation converts the status of Shopify Products to iPaaS Product Status. | |
Field | Weight | Weight | Recommended |
Dynamic Formula |
| Categories | Recommended: This mapping will include media details such as the "public URL," "media type," and "media caption." The format to send the media is: "{alt} | {Image Type} | {Public URL}" and if there are multiple images, then the format would be "{alt1}|{Image Type1}|{Public URL1},{alt2}|{Image Type2}|{Public URL2}" |
Field | TrackingMethod | TrackingMethod | The TrackingMethod is not generated by the Shopify GraphQL API but by custom code. This code checks whether the product has variants; if so, it sets the tracking method to "Variant". Otherwise, if it's a simple product (with no variants), it sets the tracking method to "Product". |
Shopify Product Inventory Add/Update To iPaaS (Child) Bottom of Form
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) | Description |
Field | FulfillmentService | Fulfillment Service |
|
Dynamic Formula |
| LocationId | This code extracts the Shopify location ID from the given iPaaS.com Location Id. |
Field | Available | QtyAvailable |
|
Shopify Product Options Add From iPaaS (Child)
Mapping filter
Name != "Title"
Description
This filter is used to exclude default options. In Shopify, default options like those with names containing 'Title' indicate a simple product rather than a variant. In iPaaS, we don't' have product options and values for simple products.
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) |
Field | Name | OptionName |
Field | Position | Order |
Shopify Product Option Values Add to iPaaS (Option's Child)
Mapping filter
Value != "Default Title"
Description
This filter excludes the default option values. In Shopify, default option values, such as those named 'Default Title,' indicate a simple product rather than a variant. In iPaaS, product options and values are not available for simple products.
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) |
Field | Value | Value |
Shopify Product Variant Add to iPaaS (Child)
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) |
Field | InventoryPolicy | Inventory Policy |
Field | InventoryLevel_Tracked | Inventory Tracked |
Field | InventoryLevel_RequiresShipping | Requires Shipping |
Field | Barcode | Barcode |
Field | SKU | Sku |
Field | Weight | Weight |
Field | VariantOptions | Options |
Shopify Product Variant Inventory Add to iPaaS (Variant's Child)
Mapping Type | Source Field (Shopify) | Destination Field (iPaaS) | Description |
Field | FulfillmentService | Fulfillment Service | Variant fulfillment service. |
Dynamic Formula |
| LocationId | Returns iPaaS Location Id from Shopify Location Id. |
Field | Available | QtyAvailable | Variant stock quantity. |
LookUp Translations
Shopify Product Status to iPaaS
Destination Field | Source Field (Shopify) |
active | Active |
draft | Preorder |
archive | Discontinued |
Error Handling
Duplicate SKU: Rejected by iPaaS if SKU already exists.
Default Options Not Filtered: May create invalid records in iPaaS.
Missing Required Fields: Product must include Name, SKU, and Price.
Testing & Validation
Test Scenarios
Product Creation in iPaaS: Product added with correct title, SKU, and price.
Option Exclusion: Products with default "Title" options are skipped.
Variant Sync: Variants created with correct options and SKUs.
Inventory Sync: Quantities reflected per Shopify location.
Validation Rules"
SKU must be unique.
Categories must be valid.
Exclusion filters must be applied correctly.
Validation Checklist
Product appears in iPaaS with correct fields.
Categories and channels are mapped correctly.
Options and option values synced correctly.
Variant inventory matches Shopify quantities.
Additional Notes
Default Shopify placeholders (Title, Default Title) must always be excluded.
Ensure Lookup Translations for statuses and inventory policies are configured.
