Skip to main content

How Orders Flow From Concierge Projects Into Shopify

Updated over a week ago

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:

  • stripe

  • adyen

  • manual

  • Or 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 Zest

  • zest-order-[order-number] — links the Child Order back to the Parent Order in Zest

  • zest-concierge-[project-number] — for Concierge orders, identifies the project

  • A 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.

Did this answer your question?