Skip to main content

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:

  1. 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.
  2. 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 the two types of orders in an email template

Every Send creates two kinds of Shopify orders. 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. Recipient orders are created for each person receiving a gift, each with its own shipping address and fulfillment. A notification template that treats these differently needs a reliable way to tell them apart. There are two signals: order tags and the payment gateway.

Order tags

Send To Many adds these tags when it generates orders. The numeric Send ID segment changes per Send.

Order typeWorkflowTags we addPayment gateway
Recipient orderUploadSend to Many #{send_id}Send To Many
Recipient orderCheckoutSend to Many #{send_id}, Send to Many Storefront-ChildSend To Many
Aggregate orderUploadSend to Many #{send_id}, Send to Many aggregateYour store's standard gateway
Aggregate orderCheckoutSend to Many #{send_id}, Send to Many aggregate, Send to Many Storefront-ParentYour store's standard gateway

The Storefront-Child and Storefront-Parent tags are defaults you can edit in your multi-recipient cart settings, where you can also add your own tags to either order type. If you've changed them, match your own tags in the snippets below. 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.

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 order.tags %}
{% if tag contains "Send to Many" %}
{% assign is_stm_order = true %}
{% endif %}
{% endfor %}

Payment gateway

Gateway checks identify recipient orders only. Every Send To Many recipient order, from either workflow, is paid through the Send To Many payment gateway. Aggregate orders are created from a paid draft order using your store's standard gateway, so gateway alone won't identify them. Use the Send to Many aggregate tag for that instead.

{% assign paid_via_stm = false %}
{% for transaction in order.transactions %}
{% if transaction.gateway_display_name contains "Send To Many" %}
{% assign paid_via_stm = true %}
{% endif %}
{% endfor %}
Liquid availability differs by notification

Not every notification template exposes the same Liquid objects. order.tags is reliable across notification templates. order.transactions may or may not be available depending on which notification you're editing. Confirm in Shopify's preview, and ask Shopify Sidekick, the built-in AI assistant in Settings > Notifications, for the exact conditional for the template you have open. Shopify's notification email variables reference also lists what's available in each template.

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 (every store)

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 order.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 order.tags contains "Send to Many aggregate" %}
{% assign stm_send_id = "" %}
{% for tag in order.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 tags 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 from the identification section instead):

{% if order.tags contains "Send to Many Storefront-Child" %}
One of the gifts from your multi-address order is on its way to {{ order.shipping_address.name }}.
{% endif %}

order.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 order.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 {{ order.customer.first_name }} {{ order.customer.last_name }}.
{% endif %}

order.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.

Recipients can open the tracking link, but not necessarily for long

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. That access generally lasts around three weeks in the same browser session.

After that, or from a different device, Shopify may ask for a verification code sent to the email address on the order, which on a recipient order typically belongs to the billing customer, not the recipient. If recipients need reliable long-term tracking access, point them to the carrier's own tracking link, also included in Shopify's default shipping confirmation, which doesn't depend on Shopify account verification at all.

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 order.tags contains "Send to Many Storefront-Child" %}
{% comment %} Storefront checkout recipient order {% endcomment %}
{% else %}
{% for tag in order.tags %}
{% if tag contains "Send to Many" %}
{% comment %} Upload recipient order {% endcomment %}
{% endif %}
{% endfor %}
{% endif %}

Next steps