Most small stores answer the same 12 questions for 70-80% of their inbox. These Shopify customer service email templates cover all 12: order status, address changes, returns, refunds, cancellations, and discount requests. Each has a subject line, a reply with merge fields, and a note on when not to use it.
Key takeaways
- 12 templates cover roughly 70-80% of a small store's support inbox.
- Every template needs 1-3 pieces of Shopify data, mapped in the table below.
- Keep replies under 120 words; put the answer in the first sentence.
- Templates fail on edge cases, so route those to a human.
Why do 12 templates cover most of a Shopify inbox?
Small stores see the same questions repeat because customers follow the same path: they buy, wait, want to change something, then want to return it. In most inboxes, 70-80% of messages fall into 12 patterns. Templates are the cheapest way to answer them consistently, and they are the foundation of any set of ecommerce customer support templates.
The 12 templates in this guide are:
- Where is my order (WISMO)
- Order delayed
- Change shipping address
- Wrong address, already shipped
- Return request reply
- Return label and instructions
- Refund approved
- Refund denied (outside window)
- Refund processing time
- Cancel before shipping
- Cancel after shipping
- Discount code request
Merge fields use Shopify-style Liquid placeholders such as {{customer.first_name}} and {{order_number}}. Rename them to match your helpdesk or canned-response tool.
Which order status email templates should you use?
An order status email template should state the current status, the tracking link, and the expected delivery date in the first two sentences. Status questions are typically the largest single category in a store inbox, often 30% or more. Two templates handle nearly all of them: one for in-transit orders and one for delays.
Template 1: Where is my order
Subject: Your order {{order_number}} is on its way
Hi {{customer.first_name}},
Order {{order_number}} shipped on {{shipped_date}} with {{carrier}}.
Track it here: {{tracking_url}}
Expected delivery: {{estimated_delivery}}.
If it has not arrived by {{estimated_delivery_plus_2}}, reply here and we will open a carrier claim.
{{agent.first_name}}
Do not use when: the order has no tracking number yet. Say it is still being packed instead.
Template 2: Order delayed
Subject: An update on order {{order_number}}
Hi {{customer.first_name}},
Your order {{order_number}} is running late. The carrier now estimates {{new_estimate}}. Tracking: {{tracking_url}}.
Sorry for the wait. If you would rather cancel for a full refund, reply and we will do it today.
{{agent.first_name}}
Do not use when: the package is marked lost. Open a claim and offer a reship instead.
How do you reply to address change requests?
Address changes are only safe before fulfillment. Once an order is packed, a change means a carrier redirect, which often costs money or fails. Check the fulfillment status first, then pick the matching template. Replying within the same hour matters, since many stores fulfill within 24 hours.
Template 3: Address change, not yet shipped
Subject: Address updated for order {{order_number}}
Hi {{customer.first_name}},
Done. Order {{order_number}} will now ship to:
{{new_shipping_address}}
It has not left our warehouse, so no delay is expected.
{{agent.first_name}}
Do not use when: the order is fulfilled. Use template 4.
Template 4: Address change, already shipped
Subject: About the address on order {{order_number}}
Hi {{customer.first_name}},
Order {{order_number}} already shipped with {{carrier}} ({{tracking_url}}). We cannot edit the address now.
You can ask {{carrier}} for a redirect using the tracking number {{tracking_number}}. If the parcel is returned to us, we will reship free of charge.
{{agent.first_name}}
Do not use when: the carrier offers no redirect for your shipping service. Check first.
What should a return request reply template say?
A good return request reply template confirms eligibility, states the deadline, and gives the next step in under 100 words. Customers who get a clear next step in the first reply send fewer follow-ups. State your return window as a number of days, such as 30, and always name who pays for shipping.
Template 5: Return request accepted
Subject: Your return for order {{order_number}}
Hi {{customer.first_name}},
Happy to help. Order {{order_number}} was delivered on {{delivered_date}}, so it is inside our {{return_window_days}}-day window.
Start your return here: {{return_portal_url}}
Return shipping: {{return_shipping_policy}}.
Once we receive the items, your refund is issued within {{refund_days}} business days.
{{agent.first_name}}
Do not use when: the item is final sale or outside the window. Use template 8.
Template 6: Return instructions
Subject: How to send back order {{order_number}}
Hi {{customer.first_name}},
1. Pack the items in original condition.
2. Attach the label: {{return_label_url}}
3. Drop it off at any {{carrier}} location.
Send us the tracking number if you want us to watch for it.
{{agent.first_name}}
Do not use when: the item is damaged or wrong. Ask for a photo and offer a replacement first.
How do you write a Shopify refund email template?
A Shopify refund email template must state the amount, the payment method, and the timeline. Banks typically take 5-10 business days to post a refund, so name that range up front. It prevents the most common follow-up: "Where is my money?" Three templates cover approval, denial, and timing.
Template 7: Refund approved
Subject: Your refund for order {{order_number}}
Hi {{customer.first_name}},
We refunded {{refund_amount}} to your {{payment_method}} today.
Banks usually post it within 5-10 business days.
{{agent.first_name}}
Do not use when: the refund is partial. State what was deducted and why.
Template 8: Refund denied (outside window)
Subject: About your refund request for {{order_number}}
Hi {{customer.first_name}},
Order {{order_number}} was delivered on {{delivered_date}}, which is past our {{return_window_days}}-day window, so we cannot issue a refund.
What we can do: {{alternative_offer}}.
{{agent.first_name}}
Do not use when: the item arrived damaged or defective. Those cases need a human.
Template 9: Refund timing
Subject: Where your refund is
Hi {{customer.first_name}},
We issued your refund of {{refund_amount}} on {{refund_date}}. Your bank has up to 10 business days from that date. If nothing appears after that, send us your bank's reference and we will trace it.
{{agent.first_name}}
Do not use when: no refund has been issued yet. Check the order first.
How should you handle cancellation requests?
Cancellation replies depend on one fact: whether the order has been fulfilled. Before fulfillment, you can cancel in seconds and refund in full. After it, you must switch to a return flow. Reply within minutes if you can, because the window to cancel can close within hours.
Template 10: Cancel before shipping
Subject: Order {{order_number}} cancelled
Hi {{customer.first_name}},
Order {{order_number}} is cancelled and {{refund_amount}} is on its way back to your {{payment_method}}.
{{agent.first_name}}
Do not use when: the order is already fulfilled.
Template 11: Cancel after shipping
Subject: Order {{order_number}} has already shipped
Hi {{customer.first_name}},
Order {{order_number}} left our warehouse on {{shipped_date}}, so we cannot cancel it. Once it arrives, refuse delivery or start a return here: {{return_portal_url}}. We will refund it in full.
{{agent.first_name}}
Do not use when: the order is custom-made or final sale. Check policy first.
How do you answer discount code requests?
Discount requests are the one category where a template can cost you money. Decide your rule in advance, for example one first-order code worth 10%, and write the reply to match. A fixed rule keeps replies consistent and protects margin.
Template 12: Discount request
Subject: About your discount request
Hi {{customer.first_name}},
Thanks for asking. New customers get {{discount_percent}}% off with {{discount_code}} on their first order. It expires on {{expiry_date}}.
{{agent.first_name}}
Do not use when: the customer already used a code, or is asking for a price match. Decline politely or escalate.
What Shopify data does each template need?
Every template depends on one to three Shopify fields. If you cannot fill them in under 30 seconds, the template saves less time than it should. This table maps each one to its data source in the Shopify admin.
| Template | Shopify data needed |
|---|---|
| 1. Where is my order | Fulfillment status, tracking URL, carrier, estimated delivery |
| 2. Order delayed | Tracking URL, new carrier estimate |
| 3. Address change (unshipped) | Fulfillment status, shipping address |
| 4. Address change (shipped) | Tracking number, carrier |
| 5. Return accepted | Delivered date, return window, return portal URL |
| 6. Return instructions | Return label URL |
| 7. Refund approved | Refund amount, payment method |
| 8. Refund denied | Delivered date, return window |
| 9. Refund timing | Refund date and amount |
| 10. Cancel before shipping | Fulfillment status, order total |
| 11. Cancel after shipping | Shipped date, return portal URL |
| 12. Discount request | Customer order history, discount code |
Where do templates break, and where does Heylio fit?
Templates work best for predictable cases, and they fail on exceptions. A damaged item, an angry repeat customer, or a refund request one day past the window needs judgment. Copy-pasting also means someone still looks up the order and fills each field by hand, which is where the time goes.
Heylio automates that lookup. Its playbooks (FAQ, WISMO, refunds, returns, cancellations) turn these templates into AI drafts that pull live order data from Shopify: status, tracking, and refund eligibility. It connects to Gmail, Outlook, Instagram DMs, WhatsApp, and a chat widget, and it can cancel orders, refund, apply discounts, and change addresses.
Anything outside the rules goes to a human for review. Pricing is per AI resolution, meaning a conversation the AI closes on its own. Handing over to a human is free. The Free plan includes 25 AI resolutions, and paid plans start at €15 per month for 60.
How do you set up and maintain your template library?
Start with the three templates that match your highest-volume questions, usually 1, 5, and 7. Load them as canned responses in your helpdesk, then add the rest over two weeks. Customer service canned responses on Shopify only help if the data fields are accurate, so test each with a real order.
Review the library every quarter, and sooner whenever you change a policy. Read 20 recent replies, note what customers asked after receiving a template, and edit the wording that caused follow-ups. If you use Heylio, its auto-learning tracks your corrections and suggests knowledge base and playbook updates, which makes this review faster.
What is your next step with these templates?
Copy templates 1, 5, and 7 into your inbox today, since order status, returns, and refunds make up most of the volume. Fill in your return window and refund timeline once, then reuse them. When the manual lookups start to slow you down, try Heylio's Free plan at https://heylio.io and let playbooks draft the replies from live Shopify data.