Skip to main content

Integrating Storefronts With ERP and Fulfillment Systems

Updated over a week ago

Zest does not connect directly to your ERP, fulfillment center, or shipping platform. Instead, Zest injects orders into Shopify as standard orders with rich metadata — tags, order attributes, and metafields — and your existing Shopify-connected systems receive those orders automatically.

This means:

  • If your ERP already connects to Shopify, it will receive Zest orders without a new integration.

  • If you use ShipStation, CIN7, or another fulfillment platform connected to Shopify, Zest orders flow there the same way.

  • The primary integration work during onboarding is configuring Zest's order output format to match what your downstream systems expect — not building new connections.

Zest's implementation team will configure metadata formatting, field names, and order tags during onboarding to match your system's requirements. Note that Zest pushes orders using the Shopify Admin API (creating admin-imported orders). Confirm with your ERP or fulfillment provider that their Shopify connector handles admin-imported orders correctly.

Supported Downstream Systems

Because Zest routes all orders through Shopify, any system with a Shopify integration can receive Zest orders. The following categories are commonly used by Zest brands.

ERP systems

NetSuite, SAP, Dynamics 365, Sage X3, Odoo, and JD Edwards are all used by Zest brands. Zest does not integrate directly with any ERP — orders flow from Shopify to your ERP via your existing connector (such as DataJet, Celigo, or Soligo). During onboarding, Zest configures order data to match the format your ERP expects.

Fulfillment and 3PL platforms

ShipStation is the most commonly used fulfillment platform among Zest brands. Other platforms that connect to Shopify — including CIN7 and third-party logistics providers — work the same way. Zest can join calls with your 3PL during implementation when needed, though a brand representative must be present on those calls to approve configurations.

Shipping platforms

Zest recommends printing shipping labels directly from Shopify using Shopify's negotiated carrier rates, which are typically 20–25% better than direct carrier rates. Labels printed from Shopify automatically sync tracking numbers back to the Zest sender dashboard. If you use a separate shipping platform (such as XPS or ShipStation), tracking numbers will sync back to Zest as long as that platform writes tracking updates to Shopify.

Accounting and inventory management

Any accounting or inventory tool connected to Shopify will receive Zest orders. For payment gateway mapping in these systems, see the section on payment gateway recognition below.

CRM systems

Zest does not currently have native integrations with HubSpot or Salesforce CRM. Order data in Shopify can connect to these platforms via their respective Shopify apps or through tools like Zapier. Zest can also export customer data — including name, email, order count, and total spend — as a CSV for manual import.

Order Data and Metadata Zest Pushes to Shopify

Zest pushes a configurable set of order attributes, tags, and metafields into each Shopify order. The exact field names, formatting, and placement are configured during onboarding to match your downstream system's requirements.

Default order attributes on every Zest order include:

  • Scheduled Date — the planned ship or delivery date (formatted MM-DD-YYYY by default, configurable to any format your system requires)

  • Gift From — the name of the gift sender

Default order tags applied to every Zest order include:

  • zest-gift — identifies this as a Zest-originated order

  • zest-order-[order number] — the Zest order number

  • zest-storefront-[storefront slug] — identifies which Zest storefront the order came from

  • zest-concierge-[project number] — applied to concierge and corporate project orders

  • The scheduled date as a standalone tag

Additional custom fields and tags — including gift message, parent order reference, storefront identifier, or anything your fulfillment system needs — can be configured during onboarding.

Field formatting matters. Your downstream system may require specific capitalization, date formats, or delimiter styles. For example, NetSuite may require a field named ShipDate (capital S and D) in YYYY-MM-DD format, while another system may expect ship_date in MM/DD/YYYY format. Provide your exact field name and formatting requirements to Zest during onboarding, and the team will configure the order output to match.

Configuring Field Mapping for Your Fulfillment System

Field mapping is aligning Zest's order output to the field structure your fulfillment system expects.

Before your implementation kickoff, gather the following from your fulfillment provider or 3PL:

  • The exact field names (keys) they expect for gift notes, ship dates, order tags, and any custom fields.

  • Capitalization requirements (e.g., Gift Note vs. gift_note vs. gift-note).

  • Date format requirements (e.g., YYYY-MM-DD vs. MM/DD/YYYY).

  • Character limits for any text fields.

  • Whether they expect data in order attributes, metafields, or order tags.

For ShipStation specifically, order attributes work best when parsed into separate custom fields — for example, gift sender name in Custom Field 1 and gift message in Custom Field 2. Provide screenshots of how orders currently appear in Shopify so Zest can match the format precisely.

Once Zest configures the metadata format, test orders will be run for your fulfillment team to validate before going live.

Setting Up Payment Gateway Recognition

Zest attaches a payment transaction to each order using zest as the default payment gateway label. If your ERP, inventory management system, or fulfillment platform doesn't recognize this as a valid gateway, orders may fail to sync.

To resolve this:

  1. Determine what gateway label your downstream system expects — typically manual, stripe, or a custom value.

  2. Contact Zest support and request a gateway label change. This is a simple configuration update on Zest's side — no engineering work on your end.

  3. If you use an inventory management system such as CIN7, you may also need to map the Zest gateway to your Stripe account within that system's Shopify integration settings.

If orders are not flowing to your ERP or fulfillment system and you've ruled out field mapping issues, payment gateway recognition is the next most common root cause.

Working With Ship Dates and Delivery Dates

Zest supports three modes for how ship and delivery dates are handled. During onboarding, Zest will configure the mode that works best for your fulfillment workflow:

  • Shipping date — the date is included in the Shopify order as metadata at the moment the order is created and pushed

  • Delivery date — same as shipping date, but labeled as a delivery date in the UI

  • Hold orders — Zest holds the order internally and only pushes it to Shopify when it's ready to ship based on the scheduled date

Steps to set up date handling:

  1. Ask your fulfillment provider or 3PL what field name and date format they use for scheduled ship dates.

  2. Provide those specifications to Zest during onboarding.

  3. Zest will configure the date field output to match.

  4. For systems such as CIN7 or ShipCompliant, ask their support team how to map an incoming Shopify order attribute to their ship date field.

If your fulfillment system cannot process future-dated orders immediately, enable hold orders mode. When this is on, Zest automatically releases orders to Shopify when they're ready to fulfill — no manual action needed on your part.

Parent and Child Order Handling in ERP Systems

Zest creates a Parent Order for each gift send and individual Child Orders for each recipient. Understanding how these flow into your ERP is important for reconciliation and reporting.

  • Parent Orders exist only within Zest's system. They are not sent to Shopify and will not appear in your ERP or fulfillment platform. You only need to handle Child Orders downstream.

  • Child Orders contain all fulfillment data and are pushed to Shopify as individual orders. Each Child Order carries the Zest Parent Order number as a reference, which enables grouping and reconciliation across systems.

In ShipStation and similar platforms, the Parent Order reference can be used to batch or group Child Orders from a single send. In your ERP, it functions as a reference ID for tying individual shipments back to the originating gift order.

General guidance for common ERP patterns:

  • Map the parent order reference from the Shopify order to the appropriate reference or purchase order field in your ERP.

  • If your ERP uses customer codes or account identifiers for order routing, work with Zest during onboarding to ensure Child Orders carry the correct identifying tags.

Avoid building ERP logic around brand-specific field names provided during early implementation calls — Zest can adjust field names and formats, so use the specifications confirmed in writing during onboarding as your source of truth.

Troubleshooting Common Integration Issues

Orders are not appearing in my ERP or fulfillment system.

Check the following in order: (1) Confirm the payment gateway label — your system may not recognize zest as a valid gateway. Ask Zest to change it to manual or stripe. (2) Confirm that your Shopify connector processes admin-created order webhooks. (3) Check for field name or format mismatches between Shopify order attributes and your system's expected fields.

Gift messages or ship dates are missing or blank in my fulfillment system.

Your system is likely looking for a different field name or format than what Zest is pushing. Pull a raw Shopify order via the API or ask Zest to share a sample order payload, then compare field names exactly — including capitalization and spacing — against what your fulfillment system expects.

Tracking numbers are not syncing back to Zest.

Tracking updates reach Zest only if your shipping platform writes tracking numbers back to Shopify. If you fulfill from an ERP that does not communicate back to Shopify (such as Sage X3 in some configurations), or if you import orders to a shipping tool via CSV rather than a Shopify integration, tracking will not sync automatically. Switch to a Shopify-connected shipping workflow or manually notify customers of tracking updates.

Child Orders are not grouping correctly in ShipStation.

Confirm that the Parent Order reference tag is present on each Child Order in Shopify. In ShipStation, create a filter or view using that tag to group Child Orders from the same send. If the tag is missing, contact Zest to verify the tagging configuration.

Did this answer your question?