When a gifter completes checkout through Zest, your Shopify store is automatically updated — no engineering required. This article explains how Zest creates and manages orders in Shopify, what data is included, and how you can configure the experience to fit your team's workflow.
Overview: How Zest Creates Orders in Shopify
When a gifter completes checkout and payment is processed through Stripe, Zest creates individual Child Orders in Shopify — one per recipient — each carrying its own shipping address, gift note, and metadata. These Child Orders appear in Shopify as standard paid orders and flow through your existing fulfillment process (ShipStation, 3PL, ERP, etc.) just like any other Shopify order.
A Parent Order is created in Zest to track the full batch purchase (one payment, all recipients), but it is not pushed to Shopify. Your Shopify store only ever sees the individual Child Orders.
Example: If a company sends 50 gift boxes to 50 employees, Zest creates 1 Parent Order in Zest (for tracking) and 50 Child Orders in Shopify — one per employee, each with that employee's shipping address.
Order Timing: When Orders Appear in Shopify
The timing of when a Child Order appears in Shopify depends on the order type and your Storefront's Order Scheduling configuration.
Direct-ship orders
For direct-ship orders, Child Orders are pushed to Shopify based on your Order Scheduling setting:
Collect a shipping date and submit orders immediately: Child Orders are pushed to Shopify as soon as the gifter completes checkout.
Hold orders in Zest: Child Orders are held in Zest until the scheduled ship date (minus your configured lead time, e.g., 3 days before ship date), then pushed automatically.
E-gift orders
For e-gift orders, Child Orders are only created in Shopify after each recipient accepts the gift and enters their shipping address. Most recipients accept within 24 hours, but some may take longer.
E-gift reconciliation timing: Stripe records the full payment at the time of purchase. For e-gifts, Shopify orders are not created until each recipient accepts, which creates a temporary gap where Stripe shows more revenue than Shopify. This gap narrows as recipients accept and typically resolves within 24–48 hours.
Large batch orders
For orders with 240+ recipients, Child Orders push to Shopify sequentially and may take 3–4 minutes to all appear. If your warehouse or fulfillment system pulls orders in batches (e.g., every 15 minutes), it could pull a batch before all Child Orders from the same Parent Order have been created in Shopify. Consider adding hold logic in your fulfillment integration to account for this timing.
Heads up! If the Order Scheduling setting in your Zest Partners portal Settings is accidentally changed from "submit orders immediately" to "Hold orders in Zest," orders will stop flowing to Shopify entirely. If orders suddenly stop appearing, check this setting first.
Order Structure: Parent Orders, Child Orders, and Metadata
Understanding Parent Orders and Child Orders
This is the most foundational concept for how Zest works with Shopify:
| Parent Order | Child Order |
Where it lives | Zest only | Shopify (and Zest) |
What it represents | The full gifting campaign (one payment, all recipients) | One shipment to one recipient |
Fulfillment | Not fulfilled directly | Processed like any other Shopify order |
Tracking | Tracks all Child Orders and campaign status | Tracks individual recipient shipment |
Child Orders appear in Shopify as completed, paid orders — not drafts. They are injected via API so they immediately trigger downstream systems like ShipStation, 3PLs, and ERPs.
Note: Zest-created orders are labeled with the source name "Zest" in Shopify to distinguish them from orders placed directly through your Shopify storefront checkout.
Dollar Amounts and Financial Configuration
You have full control over how dollar amounts appear on Child Orders in Shopify. Zest offers three configuration options — your finance team should review test orders to determine which fits your accounting workflow best.
Option 1: $0 amounts (fulfillment-only mode)
All line item prices, shipping, and tax are set to $0. The order still shows as Paid in Shopify (since payment was captured in Stripe). Best for brands that track revenue exclusively in Stripe and use Shopify only for fulfillment and logistics.
Option 2: Actual amounts, no payment transaction
Actual product, shipping, and tax amounts appear on the Child Order, but no payment transaction record is included. Useful for certain ERP setups that need itemized amounts for fulfillment routing without a payment gateway record.
Option 3: Full transaction details (recommended for most brands)
Actual product, shipping, and tax amounts appear, plus a full payment transaction record — including the gateway name, authorization code, and total. Recommended for brands using ERPs like NetSuite, QuickBooks, or JDE.
How to change your setting: Dollar amounts and transaction details are toggled in your Zest backend under Integrations > Shopify. Contact your CSM to make the change — no engineering required. It's recommended to make the switch at the start of a month to simplify reporting.
Important: The dollar amount configuration applies uniformly to all order types. You cannot push dollar amounts for direct-ship orders while keeping e-gifts at $0 — the setting applies to both.
For subscriptions
Only the first shipment in a subscription carries actual dollar amounts. Subsequent subscription shipments always push to Shopify as $0, regardless of your dollar amount configuration.
For reconciliation
When dollar amounts are enabled, each Child Order includes itemized product costs, shipping, and tax for three-way reconciliation across Stripe, Zest, and Shopify. A detailed finance reconciliation guide is available from your CSM.
Payment Gateway Display and Customization
By default, the payment gateway label on Shopify Child Orders is Zest, even though payment is processed through Stripe. This label can be customized — common options include Stripe, Adyen, or manual, depending on your ERP requirements.
Contact your CSM to request a gateway label change — no engineering required.
The gateway label matters for:
Distinguishing Zest orders from standard Shopify Payments transactions.
Proper accounting treatment in your ERP or financial reporting.
Reconciliation reports that filter or categorize orders by payment gateway.
Customer and Billing Data Mapping
Who appears as the Shopify customer?
For storefront (corporate) orders: The recipient's information is used as the customer on each Child Order in Shopify, since the Child Order uses the recipient's shipping address. The purchaser (gifter) information is tracked on the Parent Order within Zest.
Email address on Shopify orders
By default, Zest uses the recipient's actual email address on the Child Order. For marketplace or cross-seller orders, Zest uses a masked email address to prevent downstream tools (like Klaviyo or Shopify email flows) from contacting the recipient. This behavior is configurable during onboarding.
Billing address
The billing address on a Child Order defaults to the recipient's shipping address. If your store is configured to collect full billing information, the gifter's name from the original purchase will appear in the billing name fields.
Order Tags, Metadata, and Custom Fields
Zest automatically applies the following default tags and attributes to every Child Order. All of these are configurable — your CSM can adjust them during onboarding or at any time.
Default tags
zest-gift— identifies all Zest-created orders.zest-order-{orderNumber} — links all Child Orders back to the same Parent Order.zest-storefront-{storefrontSlug}— identifies the originating storefront.zest-concierge-{projectNumber}— for corporate concierge campaigns.Scheduled date (in
MM-DD-YYYYformat).
Default custom attributes
Scheduled Date — the gift's intended ship or delivery date.
Gift From — the sender's name.
Order note
The recipient's gift message is included in the order note by default.
Metafields
Metafields are not configured by default, but Zest can push any data into metafields for downstream ERP or fulfillment integration. Supported metafield types include: single-line text, multi-line text, JSON, date, and metaobject reference.
Important — Metafield conflicts: If your team adds a custom metafield definition in Shopify that conflicts with Zest's configuration, Child Orders will fail to push until the definitions are aligned. Always coordinate metafield changes with your CSM before making them in Shopify.
What data can you include? Tags, attributes, notes, and metafields can be templated with dynamic variables including: gift message, sender name, recipient name, scheduled date, order number, storefront name, whether the order is an e-gift or direct-ship, and more. Ask your CSM for the full list.
Troubleshooting: Delayed or Missing Orders
Child Orders are delayed in Shopify
Zest pushes Child Orders to Shopify via API. If Shopify rate-limits requests or returns errors, Zest's automated retry logic handles recovery. Most orders appear within minutes, but in some cases it can take up to 40–45 minutes for all orders in a large batch to sync.
Shopify rate limiting: When pushing large batches, Shopify may temporarily rate-limit Zest's API calls. Child Orders from the same Parent may arrive in Shopify in a different sequence than they were created in Zest. This is expected behavior.
The Zest team receives automated alerts when retries are triggered and will intervene if needed.
Child Orders stopped flowing to Shopify
Check the Order Scheduling setting in your Storefront. If it was changed to "Hold orders in Zest," orders will be held until released.
Verify the Shopify integration is active under Integrations > Shopify.
Check for metafield definition conflicts.
Contact your CSM if the issue persists — the Zest team can investigate error logs and manually retry failed orders.
Shopify Collective is declining Child Orders
If you use Shopify Collective, Child Orders may occasionally be declined by the integration. Manual resubmission from the Zest dashboard can resolve this. Contact your CSM to investigate the root cause in your Collective setup.
Shipping address is missing on a Child Order
A typo in a recipient's name — for example, a < character as the first character — can cause Shopify to silently strip the shipping address from the order, even though it appears to accept it. Always validate recipient data before uploading, especially for large corporate batches.
Race condition errors requiring manual intervention
In rare cases, Shopify returns race condition errors that Zest's automated retry logic cannot resolve on its own. These require manual intervention from the Zest engineering team. The team receives automated alerts when this occurs and will proactively reach out.
