Skip to main content

iPaaS.com to Shopify Fulfillment Mapping Documentation

How iPaaS.com adds a Shopify fulfillment — tracking number, carrier, and fulfilled line items — to an existing Shopify order.

Summary

This mapping collection is of type Transaction Tracking Number and adds a Fulfillment — a tracking number, carrier, and the fulfilled line items — to an order that already exists in Shopify (transfer FROM iPaaS.com — Add). It does not transfer the order itself: the order is created by the Add/Update Shopify Order FROM iPaaS.com collection, and this collection only marks items shipped on that existing order. It runs when a tracking record is added to an iPaaS.com Order; the Shopify order id is resolved from the iPaaS.com transaction's external-id link, so the order must already exist in Shopify.

When tracking reaches iPaaS.com as an update of the order rather than as a new tracking record, tracking is added through the order instead, by Add Shopify Order Tracking-Only Fulfillment FROM iPaaS.com (see iPaaS.com to Shopify Order Mapping Documentation).

Fulfillment is outbound only. Shopify does not send a fulfillment event back to iPaaS.com in this integration, so there is no inbound (TO iPaaS.com) fulfillment collection.

ID Format

Manual Sync ID.

On the iPaaS.com Manual Sync page, enter the iPaaS.com tracking record id to send that tracking record's fulfillment to Shopify. Each tracking record becomes one fulfillment on its order.

External ID.

After a successful sync, the Shopify fulfillment id is saved as the tracking record's external id.

Order resolution.

The Shopify order id is derived from the iPaaS.com transaction id: the integration strips any suffix from the id and looks up that transaction's external-id link to the Shopify order. If no Shopify order is linked, the fulfillment cannot be created.

Deleted Record Support

This collection supports Add only. Updating, deleting, and reading fulfillments are not implemented — a fulfillment is created once on the order. Removing or editing a fulfillment is a manual action in the Shopify admin and does not propagate from iPaaS.com.

Mapping Collection Status

  • Status: Enabled (no mapping filter; every record dispatched to the collection is processed).

  • Collection Type: Transaction Tracking Number. It is standalone in the mapping-collection hierarchy (no parent collection) and runs from the tracking record — it is not the Transaction/Order collection itself, and an update of the order does not run it.

  • Sync Type: Add.

  • Trigger Events: the iPaaS.com Transaction Tracking Create outbound trigger, which fires when a tracking record is added to an Order (enabled per Setup Requirements below).

Duplicate or Conflicting Mappings

There is no opposite-direction (TO iPaaS.com) fulfillment collection.

Add Shopify Order Tracking-Only Fulfillment FROM iPaaS.com also creates Shopify fulfillments, from an update of the order. It skips tracking numbers this collection has already added and counts their quantities. This collection does not check for tracking numbers already on the order, and it reads each line's quantity as the quantity in that one shipment, while the tracking-only collection reads it as a running total. Use one way of sending tracking per source system where you can.

Because the collection is Add-only, re-sending a fulfillment for items already fulfilled has no effect — Shopify creates fulfillments only against open fulfillment orders (see System Caveats).

Relationship to the Order Transfer

This is a standalone collection in the mapping-collection hierarchy — it has no parent collection, and it is not a Transaction/Order collection. It runs from each tracking record added to an iPaaS.com Order, not from the order transfer: sending the order to Shopify does not run it. It writes onto an order that already exists in Shopify and cannot run until that order (and its line items) have been created. It does not create or update the order/transaction itself.

To add tracking as part of an order update instead, see Add Shopify Order Tracking-Only Fulfillment FROM iPaaS.com, the child collection of Add/Update Shopify Order FROM iPaaS.com.

Supported Child Collections

None — this collection has no dependent child collections of its own.

System Caveats

Shopify Caveats

  • Fulfillment write access required. The Shopify connection must be granted the fulfillment-order write scopes (for example write_merchant_managed_fulfillment_orders and write_third_party_fulfillment_orders); without them the fulfillment create call is rejected with an authorization error. Confirm the granted scopes in the connection's OAuth grant.

  • Fulfillment orders must be open. Shopify creates the fulfillment against the order's fulfillment orders; only fulfillment orders that are not closed are eligible. Items already fulfilled or on closed fulfillment orders are skipped.

  • Order must exist first. A fulfillment can only be created on an order that already exists in Shopify and is linked to the iPaaS.com transaction.

iPaaS.com Caveats

  • Order link required. The Shopify order id is resolved from the iPaaS.com transaction's external-id link. Ensure the order has been transferred to Shopify before its fulfillment is sent.

  • Custom-field source for line items. In the default template the fulfilled line items are read from an iPaaS.com custom field (see Mappings). Validate that the configured source actually carries the fulfilled items and quantities for your data before relying on it in production.

Prerequisite Handling

This collection does not run a prerequisite cascade of its own — it does not auto-transfer any dependent record. Its dependency is the parent order: the Shopify order (and its line items) must already exist for the fulfillment to attach. That order is created and maintained by the order transfer FROM iPaaS.com, where the integration can automatically create line-item products as a prerequisite when the Create Line Item Product as Prerequisite subscription setting is enabled. If the parent order is not linked in Shopify, this fulfillment transfer fails.

Setup Requirements

iPaaS.com Configuration

Enable this mapping collection. In the subscription configuration's Outbound Data Flows section, subscribe to the iPaaS.com Transaction Tracking Create outbound trigger. No automatic transfers occur until that subscription is enabled. A fulfillment can also be sent on demand from the Manual Sync page using the iPaaS.com tracking record id.

Shopify Configuration

The Shopify connection must be authorized with the fulfillment-order write scopes (for example write_merchant_managed_fulfillment_orders and write_third_party_fulfillment_orders). No additional per-order configuration is required in Shopify.

Integration Flow

  1. Resolve the Shopify order id from the iPaaS.com transaction id (via the external-id link saved when the order was sent to Shopify).

  2. Load that order's fulfillment orders from Shopify and, for each fulfillment order that is not closed, match the fulfilled line items to it by line-item id, carrying each item's fulfilled quantity.

  3. Create the fulfillment in Shopify with the tracking number and tracking company, marking the matched line items as shipped.

  4. Optionally notify the customer by email, controlled by the NotifyCustomer mapping (default false).

Mappings

Add Shopify Fulfillment FROM iPaaS.com

Description: Creates a fulfillment on the linked Shopify order. The order is resolved from the iPaaS.com transaction id; the fulfilled line items are matched to the order's open fulfillment orders by line-item id; tracking number and company are attached.

Mapping Type

Source Field (iPaaS.com)

Destination Field (Shopify)

Description

Dynamic Formula

Id (transaction id) → GetExternalIdAsync(trxId, "Transaction", SpaceportSystemId)

OrderId

Required. Resolves the Shopify order to fulfill: strips any suffix from the iPaaS.com transaction id and looks up that transaction's external-id link to the Shopify order. The Shopify order must already exist and be linked; if no linked order id is found, the fulfillment cannot be created.

Dynamic Formula

GetCustomFieldValue(CustomFields, "ShipStation Line Items") → ShopifyItemsAsync(value)

LineItems

Required for a line-level fulfillment. Reads the iPaaS.com custom field ShipStation Line Items and converts its contents into Shopify line items, matched to the order's open fulfillment orders by line-item id (carrying each item's quantity). The custom field's value must be a comma-separated list of {transactionId}|{lineItemId}-{quantity} entries — for example 4270526|10983024-1 — where {transactionId}|{lineItemId} is the iPaaS.com transaction line's identifier (the transaction id and line id joined by a vertical bar) and the value after the hyphen is the quantity to fulfill. The transaction-id prefix is required: a bare line id cannot be resolved, so the line is skipped and an empty payload fails the transfer (SHPY-EXTN-1001). A line whose id cannot be matched to the order is likewise skipped. Placeholder value — replace during implementation: ShipStation Line Items is a sample custom-field key from a ShipStation-sourced setup — replace it with the iPaaS.com custom field (or source) that actually holds your fulfilled line items. Validate the source in a staging environment before relying on it in production.

Field

TrackingNumber

TrackingNumber

Recommended. The iPaaS.com shipment tracking number, written to the Shopify fulfillment. Shopify pairs it with the tracking company to display tracking and, for recognized carriers, generate a tracking URL.

Dynamic Formula

ShippingMethodDescription (carrier map)

TrackingCompany

Recommended. Maps the iPaaS.com shipping method description to a Shopify tracking company. As shipped, it returns FedEx when the description contains fedex, otherwise returns the description unchanged. Placeholder value — replace during implementation: the fedex → FedEx rule is a single sample — extend the formula with the carrier name mappings your business uses so Shopify receives recognized carrier names (which drive automatic tracking URLs).

Static

false

NotifyCustomer

Optional. Controls whether Shopify emails the customer a shipment notification when the fulfillment is created. The default template sets this to false (no email). Set to true to have Shopify notify the customer on fulfillment.

Error Handling

  • Unauthorized access: ensure the Shopify connection is granted the fulfillment-order write scopes (for example write_merchant_managed_fulfillment_orders / write_third_party_fulfillment_orders).

  • No linked Shopify order: the iPaaS.com transaction has no external-id link to a Shopify order; transfer the order to Shopify before its fulfillment.

  • Nothing fulfilled: if no fulfilled line items match the order's open fulfillment orders (for example, the items are already fulfilled or on a closed fulfillment order), Shopify creates no new fulfillment for them. Confirm the configured line-item source carries the correct line-item ids and quantities.

  • Shopify returned no fulfillment (SHPY-EXTN-1050): Shopify accepted the request but returned no fulfillment. Check the order in Shopify and re-sync if the fulfillment is missing. See Shopify Error Messages.

Testing & Validation

  • Transfer an order to Shopify, then sync its fulfillment and confirm a fulfillment is created on the Shopify order with the correct line items marked as shipped.

  • Confirm the tracking number and tracking company appear on the Shopify fulfillment, and that a recognized carrier name produces a tracking URL.

  • Attempt to fulfill a transaction whose order is not linked in Shopify and confirm the transfer fails with a clear error.

  • Set NotifyCustomer to true and confirm Shopify emails the customer on fulfillment; with the default false, confirm no email is sent.

  • Re-send a fulfillment for items already fulfilled and confirm no duplicate fulfillment is created (closed fulfillment orders are skipped).

Additional Notes

This collection is Add-only and outbound-only: it creates a fulfillment on an existing Shopify order and does not update, delete, or read fulfillments, and Shopify does not send fulfillment data back to iPaaS.com. The default template's line-item source (ShipStation Line Items) and carrier map (fedex → FedEx) are samples — replace both during implementation for your data and carriers.

Units of measure. Because fulfilled items are matched to the order by their Shopify line-item id rather than by SKU, an order placed for a unit-of-measure variant (whose SKU carries a ^UnitName suffix) fulfills with no unit-specific handling. When the same product is ordered in two different units, the order carries two separate line items and each is fulfilled independently.

Related Documents

Related Mapping Documentation

Did this answer your question?