Skip to main content

How to Integrate Gift Notes and Multiship with Fulfillment and ERP Systems

Updated yesterday

Zest Gift Notes and Multiship work with your existing ecommerce tech stack — no custom engineering required. Because Zest creates native Shopify orders, they flow automatically to any system already connected to your Shopify store.

This article explains how that integration works, what data Zest sends to Shopify, and how to configure it to match what your downstream systems expect.

Overview: How Zest Uses Shopify as Integration Middleware

Zest does not connect directly to your ERP, fulfillment platform, or shipping software. Instead, Zest creates orders directly in Shopify with all the metadata, tags, and attributes your downstream systems need. Because Zest orders are native Shopify app orders (not imported or injected), they fire all standard Shopify webhooks and are treated like any other Shopify order by connected systems.

This means:

  • Any platform already syncing with Shopify (your ERP, ShipStation, 3PL, accounting tool, etc.) will automatically receive Zest orders.

  • You don't need to build a new integration for each downstream system.

  • Zest works with your existing Shopify-to-ERP connector (such as Celigo, DataJet, or Soligo) — no additional connector is needed.

  • During onboarding, Zest configures the order data format to match what your downstream systems expect.

Note: Because Zest Gift Notes and Multiship orders are created through the Shopify app (not via Shopify's Orders API), they behave differently from Corporate Storefront or Concierge orders. If you're using both products, keep that distinction in mind when configuring downstream integrations.

Supported Downstream Systems (ERP, Fulfillment, Shipping, CRM)

ERP systems (NetSuite, SAP, Dynamics 365, and others)

Zest orders arrive in Shopify with all the metadata your ERP connector needs: tags, order attributes, and metafields. Your existing Shopify-to-ERP connector picks them up automatically. Zest can adjust field names, date formats, and tag structure during onboarding to match your ERP's expected format.

Important: Parent Orders are automatically canceled in Shopify and should be excluded from your ERP sync.

Fulfillment and 3PL systems (ShipStation, CIN7, MACH, and others)

Zest orders appear as standard Shopify orders in your fulfillment platform. Zest-specific metadata (gift messages, ship dates, Parent Order tags) will populate in your platform's custom fields once configured. About half of Zest brands use ShipStation, which has a well-established metadata format that Zest matches during setup.

Tip: If your fulfillment platform allows multiple customer records with the same email address, verify that Zest-created Shopify customers are matched to existing records before submitting large orders. Duplicate customer records can cause billing address mismatches on packing slips (though shipping addresses are unaffected).

Shipping software (XPS, ShipStation, and others)

Tracking numbers written back to Shopify by your shipping platform automatically sync to the Zest gifter dashboard. This works when you use the Shopify-connected integration path. If orders are imported via CSV instead of through the Shopify integration, tracking numbers will not flow back to Shopify or Zest.

Important: Always use the Shopify-connected integration path in your shipping software — not CSV import — to ensure tracking numbers sync automatically back to Zest and your customers.

CRM systems (HubSpot, Salesforce, and others)

Zest does not currently have native CRM integrations. Order data flows into Shopify, which can connect to HubSpot or Salesforce via their respective Shopify apps or through tools like Zapier. Zest can also export customer data (name, email, order count, total spend) as a CSV for manual import.

Note: Zest's Parent/Child Order structure may not map cleanly to CRM deal or company models. For reporting purposes, custom CSV exports may be a more reliable approach than relying on a live integration.

Order Data and Metadata Zest Pushes to Shopify

Zest pushes configurable order attributes, tags, and metafields onto every Shopify order. The exact field names, formats, and placement are all set up during onboarding to match your downstream system's requirements.

Standard fields Zest can push

  • Gift message — the recipient's personalized message.

  • Gift sender name — the name of the person sending the gift.

  • Scheduled ship date or delivery date — in a configurable date format.

  • Parent Order number — on every Child Order, for grouping and reconciliation.

  • Order note — a configurable text field rendered from your settings.

Tags

Order type

Tag applied

Parent Order

zest-parent

Child Order

zest-child

Configurable metadata

All attribute key names, namespaces, value formats (including capitalization, date format, and delimiters), and field placement are configured per shop. For example, one ERP may require ShipDate in YYYY-MM-DD format, while another may expect ship_date in MM/DD/YYYY format. Zest handles this during onboarding — just provide the spec from your fulfillment provider.

Fee line items

Zest fee line items (covering product cost, shipping, and tax) are tied to Shopify product variants that Zest creates and manages on your behalf. These variants are archived and set to $0 base price — their actual values are calculated at checkout. Because they are real Shopify product variants, standard product-based mapping rules in most ERP and fulfillment systems should apply. However, you may need custom configuration to map these fee variants to the appropriate accounts or categories in your ERP.

E-gift orders

E-gift (digital gift) orders follow the same Parent/Child Order structure and metadata flow as physical gift orders. However, some 3PL batch printing integrations may not be compatible with e-gift orders out of the box. If you use a batch printing integration, confirm compatibility with your 3PL before going live with e-gifts, and allow time to scope and configure the mapping separately.

Configuring Field Mapping for Your Fulfillment System

Zest configures field mapping during onboarding to match your fulfillment system's expected format. Here's how to prepare:

  1. Ask your fulfillment provider or 3PL what exact field names, formats, and locations they need for gift notes, ship dates, order tags, and any custom fields.

  2. Get specifics on key naming conventions (e.g., Gift Note vs. gift_note), capitalization, date formats, character limits, and whether data should live in order attributes, metafields, or the order note.

  3. For ShipStation specifically: Order attributes should be parsed into separate custom fields — for example, gift sender name in Custom Field 1 and gift note in Custom Field 2.

  4. Share your specs with Zest. The team will configure Zest's order output to match. Providing screenshots of how existing orders look in Shopify helps speed this up.

  5. Run test orders together with your fulfillment team before going live. Zest can join calls with your 3PL if needed, as long as a brand representative is present to approve configurations.

Tip: The back-and-forth with your fulfillment provider to nail down exact field specs typically takes the most time during implementation. Starting that conversation early pays off.

Setting Up Payment Gateway Recognition

Zest attaches a payment record to each order using the payment gateway name from your Shopify account. The default gateway name is whatever your Shopify store's payment provider returns (typically Stripe or similar).

If your ERP, fulfillment system, or inventory platform doesn't recognize the gateway name on Zest orders, Zest can update the label to any value your system expects — for example, manual, Stripe, or a custom name. This is a simple configuration change.

Common steps:

  1. Check your downstream system for errors related to unrecognized payment gateways when processing Shopify orders.

  2. Note the exact gateway name your system expects (check with your ERP or fulfillment provider's support team).

  3. Contact Zest with the required gateway name, and the team will update the configuration.

Tip for inventory systems like CIN7: You may also need to map the Zest payment gateway to your Stripe account in the system's Shopify integration settings — not just update the label on the Zest side.

Payment gateway on Child Orders

Each Child Order carries a _parent_order_gateway attribute that records the payment gateway name from the Parent Order. This can be used for reconciliation in systems that need to trace Child Orders back to the original payment.

Working with Ship Dates and Delivery Dates

Zest supports configurable scheduled ship or delivery dates for Multiship orders. Here's how it works:

  • When a sender schedules delivery, Zest stores the date in a Shopify order attribute and/or metafield on each Child Order.

  • The attribute key name and date format are fully configurable — Zest sets these during onboarding to match what your fulfillment system expects.

  • Your fulfillment system must be configured to read this field and act on it (for example, holding the order until the scheduled date).

ShipStation and future ship dates

ShipStation's API and webhook timing with Shopify can cause issues when processing orders with future ship dates passed via order attributes. If you use ShipStation and need to support future ship dates, contact Zest about available options for controlling when orders are pushed to Shopify.

Other fulfillment systems

For systems like CIN7, ShipCompliant, or a custom 3PL, ask your provider how to map the ship date field to their equivalent field. Zest can adjust the attribute key and date format to match.

Parent and Child Order Handling in ERP Systems

Understanding how Zest structures Multiship orders is important for configuring your ERP or fulfillment system correctly.

How Parent and Child Orders work

When a gifter sends to multiple recipients using Multiship, Zest creates:

  • One Parent Order — represents the full checkout and payment. The Parent Order is automatically canceled in Shopify once all Child Orders are created. It is tagged zest-parent.

  • One Child Order per recipient — each Child Order contains the fulfillment data for a single recipient and flows downstream as a standard Shopify order. Child Orders are tagged zest-child.

Each Child Order includes a _parent_order_number attribute linking it back to the Parent Order for grouping and reconciliation.

For a more in-depth understanding or Parent and Child Orders, check out this article.

Recommended ERP configuration

  1. Exclude canceled orders with the zest-parent tag from your ERP sync. Parent Orders contain no fulfillable products and should not be fulfilled.

  2. Use Child Orders as the source of truth for fulfillment, shipping, and revenue recognition.

  3. Group Child Orders by parent using the _parent_order_number attribute or the zest-parent / zest-child tags.

Important: Parent Orders may still sync to your ERP unless canceled orders are explicitly excluded from your integration. Since Parent Orders contain no fulfillable products, most brands filter them out using the zest-parent tag.

Multi-warehouse and multi-location fulfillment

Because Zest creates individual Child Orders in Shopify for each recipient, they automatically follow your existing Shopify order routing rules — including multi-warehouse routing based on recipient location, inventory availability, or any other routing logic you've configured in Shopify.

Troubleshooting Common Integration Issues

Orders aren't flowing to my fulfillment or inventory system

Common causes:

  • Payment gateway not recognized. Your downstream system doesn't recognize the Zest payment gateway name.

  • Missing transaction amounts. Some systems require a transaction amount on the order to sync. Contact Zest if this is preventing sync.

  • Field name or format mismatch. The key names, date formats, or value formats Zest is pushing don't match what your system expects. Review your field mapping spec with Zest.

  • Canceled order exclusion not configured. Parent Orders are canceled in Shopify and may be flagged as problematic by your system. Ensure canceled orders tagged zest-parent are excluded.

Parent Orders are syncing to my ERP

Parent Orders are automatically canceled in Shopify but may still sync to your ERP if your integration doesn't filter out canceled orders. Configure your ERP connector to exclude orders with the zest-parent tag or filter out all canceled orders.

Tracking numbers aren't syncing back to Zest

This usually means orders are being imported into your shipping tool via CSV rather than through the Shopify integration. Always use the Shopify-connected path in your shipping software to ensure tracking numbers are written back to Shopify and synced to Zest automatically.

Duplicate customer records in fulfillment system

Some fulfillment systems (including certain 3PL platforms) allow multiple records with the same email address and may assign Zest-created orders to the wrong customer account. This affects billing address on packing slips but not shipping addresses. To prevent this: ensure consistent email and name entry in your system, and verify customer records before submitting large orders.

SAP integration failures with zero-price line items

If your SAP integration fails on Zest orders that include zero-price line items (for example, free gift wrapping added as a promotion), the SAP PIPO mapping may not handle certain material types at zero price. Work with your SAP integration team to extend item category mappings to cover zero-price scenarios. Also test partial-discount scenarios separately, as the zero-price logic may incorrectly categorize items that have a remaining cost after a partial discount.

E-gifts not working with batch printing

Some 3PL batch printing integrations are not compatible with e-gift orders by default. If you encounter this, work with your 3PL to scope and develop the e-gift mapping separately from your physical order integration.

Did this answer your question?