When you submit an order for processing in Zest Concierge, your team doesn't need to do a thing—Zest automatically handles creating and pushing orders into Shopify so they flow through your existing fulfillment process just like any other order. This article explains how that works, what you'll see in Shopify, and how to configure the experience to match your business.
Overview: How Zest Creates Orders in Shopify
Zest creates one Shopify order per recipient — these are called Child Orders. Each Child Order has the recipient's shipping address, gift note, and metadata attached.
The Parent Order lives in Zest and is used for tracking, reporting, and billing. Parent Orders are never created in Shopify — only Child Orders appear there.
Once a Child Order is in Shopify, it flows through your existing fulfillment setup (ShipStation, your 3PL, ERP, etc.) exactly like any other Shopify order. Zest sets the order source to "Zest" so you can easily identify these orders.
Note: Shopify may show the order source as "import" — this is Shopify's standard label for any order created via API. It's expected behavior and indicates the order came from Zest, not directly through your Shopify storefront checkout.
Order Timing: When Orders Appear in Shopify
Things to note about Concierge orders:
Child Orders are held in the Zest dashboard until your team manually clicks Submit order for processing. This may happen days or weeks after the invoice is paid.
Once submitted, Child Orders enter Shopify, or your ecommerce platform, as paid, completed orders.
For very large Concierge orders (240+ recipients), Child Orders push to Shopify sequentially and may take a few minutes to appear. If your warehouse system pulls orders in batches (e.g., every 15 minutes), consider adding hold logic to your fulfillment integration to ensure Child Orders are fully synced before they're picked up.
Tip: Always create and pay the invoice before submitting Concierge orders. If orders are submitted before the invoice is paid, Shopify will show revenue but Stripe will show no corresponding payment, causing a reconciliation discrepancy.
Order Structure: Parent Orders, Child Orders, and Metadata
As mentioned, Parent Orders exist only within Zest. They represent the full gifting program — the gifter, total amount, invoice, and all recipients rolled up together.
Child Orders are what appear in Shopify or your ecommerce backend. Each Child Order maps to one recipient and includes:
The recipient's shipping address
The recipient's name as the customer (see Section 6 for more on customer data)
Gift note (if provided)
Product line items, shipping, and tax (when dollar amounts are enabled — see Section 4)
Order tags linking back to the Parent Order in Zest (see Section 7)
Subscription orders
For orders with multiple packages, like subscription gifts, only the first package receives real dollar amounts in Shopify; subsequent packages are pushed with $0 line items. This is intentional — it prevents tax from being double-counted across packages and is consistent with standard subscription fulfillment behavior.
Dollar Amounts and Financial Configuration (Three Options)
You have full control over how dollar amounts appear on Shopify orders. There are three configuration options:
Option 1: $0 amounts (no financial data)
Line items, shipping, and tax all show as $0.
Best for brands that track all revenue in Stripe and use Shopify purely for fulfillment.
Orders still appear as "paid" in Shopify.
Option 2: Actual amounts, $0 paid (no transaction record)
Line items reflect real product costs, shipping, and tax.
No payment transaction is recorded in Shopify's order timeline.
Useful for some ERP setups that need itemized order data but manage payment reconciliation outside Shopify.
Option 3: Full transaction details (recommended for most brands)
Line items show real amounts, and a payment transaction record is added to the Shopify order timeline.
Enables full three-way reconciliation across Stripe, Zest, and Shopify.
Recommended for brands using ERPs like NetSuite, QuickBooks, or JDE.
How to change your setting: Contact your CSM or adjust the toggle in Integrations > Shopify > Order settings in the Zest backend. The change can be made at any time — it's recommended to switch at the start of a month to simplify reporting.
About discounts
When a discount is applied, Zest pushes a separate order-level fixed discount entry to Shopify (labeled "Zest automatic discount") in addition to allocating the discounted subtotal across line items. Note that Shopify's native discount fields may not always be populated in the format your ERP expects — work with your CSM if your ERP requires a specific discount breakdown format.
Payment Gateway Display and Customization
The payment gateway shown on Shopify orders is configurable. By default, it is set to zest, which indicates payment was processed through Zest (via Stripe) rather than directly through Shopify Payments.
You can customize the gateway label to show:
stripeadyenmanualOr any label that works for your ERP
To change your gateway label: Contact your CSM. This is important for distinguishing Zest orders from standard Shopify Payments transactions and for proper accounting treatment.
Customer and Billing Data Mapping (Who Appears as the Customer)
For Concierge orders, the recipient appears as the customer on each Child Order in Shopify. This is because each Child Order uses the recipient's shipping address.
The gifter (purchaser) is tracked on the Parent Order within Zest.
Order Tags, Metadata, and Custom Fields
Zest applies the following default tags to every Child Order in Shopify:
zest-gift— identifies the order as coming from Zestzest-order-[order-number]— links the Child Order back to the Parent Order in Zestzest-concierge-[project-number]— for Concierge orders, identifies the projectA scheduled date tag (formatted as MM-DD-YYYY)
Note: Tags are truncated to 40 characters (Shopify's limit) and deduplicated automatically.
In addition to tags, Zest can push data into:
Order notes (e.g., gift message)
Order attributes (e.g., scheduled date, "Gift From" name)
Metafields (fully configurable namespace, key, and type)
All of these are configurable using Liquid templates, meaning you can customize exactly what data flows into each field. The format is set up during onboarding to match your fulfillment tool or ERP.
Tip: Additional tags can be configured at the Concierge project level and will be appended automatically to every Child Order.
Concierge order numbering
Concierge projects use a structured order numbering format in Zest (e.g., PROJECT-C1, PROJECT-C2 per recipient). The Shopify order name is assigned by Shopify itself upon creation.
Troubleshooting: Delayed or Missing Orders
Orders are delayed appearing in Shopify
Zest pushes orders to Shopify via API. Shopify occasionally rate-limits requests or returns errors. Zest has automated retry logic that handles these situations:
Most orders appear within minutes.
In some cases, especially for large batches (240+ recipients), it can take up to 40–45 minutes for all orders to sync.
Orders from the same Parent may arrive in Shopify in a different sequence than they were created in Zest.
The Zest team receives automated alerts when retries are triggered.
If orders are still missing after 45 minutes, contact your CSM or the Zest support team.
Specific issues and what to do:
Symptom | Likely Cause | What to Do |
Orders show $0 | Dollar amounts not enabled | Toggle the setting in Integrations > Shopify or contact your CSM |
Orders delayed up to 45 min | Shopify rate limiting or API errors | Wait and monitor; contact Zest if unresolved after 45 min |
Order missing shipping address | Special characters in recipient name | Remove special characters (e.g., <, >, emoji) from recipient names before upload |
Order submitted but Stripe shows no payment | Invoice not paid before submission | Always pay the invoice before clicking Submit Orders to Shopify |
Shopify Collective declining Child Orders | Shopify Collective integration issue | Manually resubmit from the Zest dashboard; contact CSM to investigate Collective setup |
Orders fail to sync (metafield errors) | Metafield definition conflict | Coordinate metafield definitions with your CSM before making Shopify-side changes |
Note on special characters: Zest validates recipient first and last names to prevent emoji, but other special characters (e.g., <) are not blocked at upload time. A < as the first character in a name has been known to cause Shopify to silently drop the shipping address. Always review recipient lists before submitting.
