Skip to main content

Shopify Product to iPaaS

Synchronize Shopify produts and data to iPaaS

Updated today

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

  1. Product and variant data is fetched from Shopify.

  2. Core product fields are transferred to iPaaS.

  3. Child mappings handle inventory, options, and variants.

  4. Option/Option Values are filtered to exclude Shopify's default placeholders.

  5. 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

return GetImageDataFromMedia(Media);

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 GetImageDataFromMedia(mediaObject) returns output like: "12345;http://imageurl.com/img1.jpg;Product Image 1 | 67890;http://imageurl.com/img2.jpg;Product Image 2" where each record is structured as Image ID;URL;Alt Text. Alternatively, when UrlOnly is set to true, the function excludes the Image ID and Alt Text, providing a simpler output of URLs, such as: "http://imageurl.com/img1.jpg | http://imageurl.com/img2.jpg"

Field

InventoryPolicy

InventoryPolicy

Dynamic Formula

return GetValueFromMetaFields(MetaFields, "test ");

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: GetValueFromMetaFields(MetaFields, "meta_color"); GetValueFromMetaFields(MetaFields, "custom.meta_color"); GetValueFromMetaFields(MetaFields, "global.meta_color");

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

return await GetChannelNamesByIds(ChannelIds);

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:

var channelIds => ["1233433233","34343434433"] GetChannelNamesByIds(channelIds) takes a list of channel IDs, matches each one to an existing channel by its unique identifier, retrieves each matching channel's name, and returns the names as a comma-separated string.

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

GetIPaaSProductType(Variants);

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

return await ConvertShopifyProductCategoriesToiPaaS(Categories);

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

GetSpaceportId(LocationId, "Location", SpaceportSystemId)

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

GetSpaceportId(LocationId, "Location", SpaceportSystemId)

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.

Did this answer your question?