How to Customize Shopify Notifications for Send To Many Orders
Make multi-address orders clear at every email touchpoint. Customize Shopify's order confirmation and shipping confirmation templates so billing customers and gift recipients always know what's happening with their order.
A multi-recipient order doesn't behave like the orders Shopify's email templates were written for. Payment is captured on one aggregate order that never ships, while the gifts ship separately to each address on the list. Shopify's default notification copy assumes one order going to one address, so at exactly the moments your customer wants reassurance, the emails they receive can be confusing or silent on what's actually happening.
Two email touchpoints matter:
- The order confirmation for the aggregate order. This always goes out to the billing customer, because the aggregate order is what captured their payment. It's your one guaranteed chance to confirm the multi-address order worked the way they intended.
- Shipping confirmations. These are optional and configurable: depending on your send preset settings they go to the billing customer, to each gift recipient, or to no one. Decide which cases your store uses and customize each one that applies.
This tutorial shows how to identify Send To Many orders inside Shopify's notification templates, then walks through customizing each touchpoint.
Before you start
- The notification settings on your send presets (SUPPRESS, RECIPIENT, or CUSTOMER) control which shipping notifications go out and to whom. These settings live in both your multi-recipient cart settings and each manual upload send preset, so check both if you use both workflows. This tutorial is about what the emails say, not who receives them.
- This tutorial is for Shopify's own notification templates, under Settings > Notifications in your Shopify admin. If another app such as Klaviyo sends these emails for your store, the same logic applies; rebuild the conditionals in that tool's template editor instead.
- Test every change in Shopify's built-in notification preview against a real Send To Many order before saving.
How to identify Send To Many orders in an email template
Every Send creates two kinds of Shopify orders, and each maps to its own notification. The aggregate order rolls up every line item in the Send and captures payment from the billing customer; it's marked "Does not require shipping" and never ships, so the notification that matters for it is the order confirmation. Recipient orders are created for each person receiving a gift and are the orders that actually ship, so they're the orders behind every shipping confirmation.
One Liquid note before the snippets: email notification templates access order properties directly, without an order. prefix. Use tags, not order.tags (only SMS notifications use the prefix).
Identifying recipient orders (shipping confirmations)
Recipient orders carry these tags:
| Workflow | Tags we add | Payment gateway |
|---|---|---|
| Upload | Send to Many #{send_id} | Send To Many |
| Checkout | Send to Many #{send_id}, Send to Many Storefront-Child | Send To Many |
The Storefront-Child tag is a default you can edit in your multi-recipient cart settings, where you can also add your own tags. If you've changed it, match your own tag in the snippets below.
Because the Send ID changes with every Send, a template rule can't match the ID tag as an exact string. Instead, loop through all of the order's tags and check each one for the fixed "Send to Many" portion, which catches any Send To Many tag regardless of the ID:
{% assign is_stm_order = false %}
{% for tag in tags %}
{% if tag contains "Send to Many" %}
{% assign is_stm_order = true %}
{% endif %}
{% endfor %}
The payment gateway works just as well for recipient orders: every Send To Many recipient order, from either workflow, is paid through the Send To Many payment gateway.
{% assign paid_via_stm = false %}
{% for transaction in transactions %}
{% if transaction.gateway_display_name contains "Send To Many" %}
{% assign paid_via_stm = true %}
{% endif %}
{% endfor %}
Use either signal, or both together for a stricter match.
Identifying aggregate orders (order confirmations)
Aggregate orders carry these tags:
| Workflow | Tags we add | Payment gateway |
|---|---|---|
| Upload | Send to Many #{send_id}, Send to Many aggregate | Your store's standard gateway |
| Checkout | Send to Many #{send_id}, Send to Many aggregate, Send to Many Storefront-Parent | Your store's standard gateway |
For aggregate orders, tags are the only reliable signal. The aggregate order is created from a paid draft order using your store's standard payment gateway, so a gateway check can't tell it apart from any other order. Use the Send to Many aggregate tag, which has no dynamic segment and matches exactly:
{% if tags contains "Send to Many aggregate" %}
{% comment %} Aggregate order {% endcomment %}
{% endif %}
Like Storefront-Child, the Storefront-Parent tag is an editable default in your multi-recipient cart settings. And on checkout orders, the Send to Many #{send_id} tag is added to the aggregate order moments after it's created, so in rare cases it may not yet be present when the order confirmation renders.
Order properties are available across notification templates, but some data may not be present yet at the moment a notification is generated. Test your conditional in Shopify's preview, and ask Shopify Sidekick, the built-in AI assistant in Settings > Notifications, for the exact syntax for the template you have open. Shopify's notification email variables reference lists every available property.
Send To Many notification scenarios
The first scenario below applies to every store. The shipping confirmation scenarios depend on your send preset notification settings, so customize whichever ones your store actually uses.
The aggregate order confirmation
The billing customer always receives an order confirmation for the aggregate order, because that's the order that captured their payment. But no shipping confirmation ever follows it (it never ships), so a receipt that reads like a normal single-address order leaves the customer wondering whether the multi-address part worked at all.
Use this email to do two things: confirm the order will ship separately to each recipient, and give the customer somewhere to track it all.
{% if tags contains "Send to Many aggregate" %}
This was a multi-address order. Your gifts will ship separately to each
recipient, and you won't get a shipping confirmation for this order number.
{% endif %}
Linking to the send details page. If you've set up the Customer Account Send History page, you can link the customer straight to their send from this email. The Sends page is a full-page customer account extension with a stable URL for your store. To find it, log in to a customer account on your storefront, open the Sends page from the account navigation, and copy the URL from your browser. It looks like:
https://shopify.com/<your-shop-id>/account/pages/<page-id>
That URL alone takes the customer to their send history. To open the specific send directly, append ?send= with the Send ID, which you can extract from the order's Send to Many # tag:
{% if tags contains "Send to Many aggregate" %}
{% assign stm_send_id = "" %}
{% for tag in tags %}
{% if tag contains "Send to Many #" %}
{% assign stm_send_id = tag | split: "#" | last %}
{% endif %}
{% endfor %}
<a href="https://shopify.com/<your-shop-id>/account/pages/<page-id>?send={{ stm_send_id }}">
Track all of your gifts in your Send history
</a>
{% endif %}
If the Send ID tag isn't on the order (see the timing note in the identification section above), the link simply opens the send history list instead, so it degrades gracefully. Before adding the link, confirm the extension is actually enabled: your store must be on Shopify's new customer accounts, and the Sends Page extension must be turned on in the customer account editor, since it isn't on by default.
Shipping confirmations sent to the billing customer
With the notification setting on CUSTOMER, the billing customer receives a shipping confirmation for every recipient order in the Send. Without customization, someone sending gifts to 20 people gets 20 shipping emails that look identical to a normal shipment of their own, with nothing to say which gift or which recipient each one covers.
For checkout orders, use the Send to Many Storefront-Child tag to detect these and rewrite the copy around the recipient. This tag has no dynamic segment, so an exact match works directly (for upload orders, use the tag loop or gateway check from the identification section instead):
{% if tags contains "Send to Many Storefront-Child" %}
One of the gifts from your multi-address order is on its way to {{ shipping_address.name }}.
{% endif %}
shipping_address on a recipient order is the recipient's address, not the billing customer's, since Send To Many sets each recipient order's shipping address individually. That makes it a reliable place to pull the recipient's name for the subject line or body copy.
Shipping confirmations sent to the gift recipient
With the notification setting on RECIPIENT, common for corporate gifting and influencer seeding, each recipient gets their own shipping confirmation. This email is the recipient's first contact with your store, and Shopify's default copy doesn't tell them the two things they most need to know: that this is a gift, and who it's from.
{% assign is_stm_recipient_order = false %}
{% for tag in tags %}
{% if tag contains "Send to Many" and tag != "Send to Many aggregate" %}
{% assign is_stm_recipient_order = true %}
{% endif %}
{% endfor %}
{% if is_stm_recipient_order %}
This gift is on its way from {{ customer.first_name }} {{ customer.last_name }}.
{% endif %}
customer on a recipient order is the billing customer (the gift giver) unless the send preset is configured to use the recipient as the customer, so this is usually a reliable way to surface who sent the gift.
Shopify's order status link in the shipping confirmation includes a pre-authenticated token, so the recipient can open that specific tracking page straight from the email even though they aren't the order's customer. The carrier's own tracking link, also included in Shopify's default shipping confirmation, works for anyone with the email.
Telling Upload and Checkout sends apart
If your store runs both Upload sends and storefront checkout sends, both produce recipient orders through the same Send To Many payment gateway, so the gateway alone can't tell them apart. The Send to Many Storefront-Child tag can:
{% if tags contains "Send to Many Storefront-Child" %}
{% comment %} Storefront checkout recipient order {% endcomment %}
{% else %}
{% for tag in tags %}
{% if tag contains "Send to Many" %}
{% comment %} Upload recipient order {% endcomment %}
{% endif %}
{% endfor %}
{% endif %}
Next steps
- Customer Account Send History page: set up the Sends page so your aggregate order confirmation has somewhere useful to link.
- Bulk order notification settings: control which of the shipping confirmation scenarios above apply to your store.
- Set up multi-recipient checkout: configure the storefront checkout flow that generates the Storefront-Parent and Storefront-Child tags referenced above.