Go Back
Shopify support agent replying to an angry customer email

Reply to Angry Customer Email Samples: 8 Shopify Templates

The best reply to an angry customer email names the problem, apologizes once, offers a concrete fix with real order details, and says what happens next and when. Below are 8 reply to angry customer email samples built for Shopify tickets: parcels marked delivered but missing, refunds that haven't arrived, double charges, chargeback threats and more. Each one comes with a rule that tells you when to send it as is and when someone on your team should read it first.

Most template lists out there are written for any kind of business. They're full of blanks like “[#]” and skip the part a Shopify store actually struggles with: answering 40 angry emails on a Monday without hiring someone. This guide is for store owners and small support teams who write these replies by hand. If you'd rather not write them at all, Relay answers, refunds and resolves your Shopify tickets 24/7, following your rules, and hands the hard ones to your team.

Start the 14-day trial

What makes an angry customer email different

An angry email is a normal support ticket with one extra problem: the customer has stopped trusting you. They don't just want the answer. They want proof that someone read their message and is taking care of it.

That changes three things in your reply:

  • Speed matters more than polish. A plain, correct answer sent early beats a perfect one sent tomorrow.
  • Vague words make it worse. “We're looking into it” reads as “nobody is looking into it.” A tracking number, a refund amount or a date reads as action.
  • Every reply gets judged. An angry customer is more likely to post a review, open a dispute or write again. Your answer is the thing they'll quote.

How to reply to an angry customer email in 4 steps

Every reply below uses the same four parts. Once your team knows them, they can adapt any template in a minute.

  1. Acknowledge the exact problem. Repeat it in your own words, with the order number. “Your order #1047 still shows no movement since Tuesday” proves you checked. “Sorry for the inconvenience” proves nothing.
  2. Apologize once, without excuses. One sentence. Don't explain your warehouse, your carrier contract or your Black Friday volume. The customer doesn't care why. They care what happens now.
  3. Offer a concrete fix. A replacement, a refund, a reship, a discount code, an address change. Name the amount, the item, the date. If you need something from them (a photo, a size), ask for exactly that.
  4. Say what happens next and when. “You'll get the new tracking number by email once it ships” or “I'll check with the carrier and write back on Thursday.” Then keep that promise.

A good test: delete the greeting and the sign-off. The customer should still know what went wrong, what you're doing and when they'll hear from you.

Sort angry emails before you answer them

Before you write anything, put each angry email in a bucket. The bucket decides which template you use and whether a human needs to look at it. This is the step that lets you clear a pile fast without sending the wrong thing.

BucketWhat the customer writesCheck in Shopify firstSend a template as is?
Delivery“Where is my order”, “it's been two weeks”, “tracking hasn't moved”Fulfillment status, tracking events, carrierYes, if tracking confirms the story
Product“Arrived broken”, “wrong size”, “not what I ordered”Line items, photo from customer, stock for a replacementYes for low value items with a photo; human check above your limit
Money“Where's my refund”, “charged twice”, “price dropped the day after”Refund in the order timeline, transactions, discounts usedHuman check if the amounts don't match
Policy“Your return window is unfair”, “I want an exception”Order date, return policy, past orders from this customerHuman check: this is a judgment call
Threat“I'll dispute this with my bank”, “I'm leaving a 1-star review”Everything above, plus any open disputeHuman check, always
AbuseInsults, swearing, personal attacksNothing until the tone is assessedNo. Follow your rude customer reply rules

Two rules make this table work. First, never answer before checking the order: many angry emails become easy once you see what actually happened. Second, any email that mentions a bank, a lawyer, a dispute or safety goes to a person, whatever the bucket.

The order details that make a template feel personal

A template only sounds canned when it's missing specifics. Before you send any of the samples below, pull these fields from the Shopify order and put them in the reply:

  • Customer first name
  • Order number (for example #1047)
  • Item names, size or variant
  • Fulfillment status and the last tracking event, with the carrier name
  • Amount paid, and the amount and date of any refund
  • The date the return window ends, if returns come up

In the samples, these details use example values (Sarah, #1047, UPS, $64.00) so you can see how a finished reply reads. Swap in your customer's real data each time. A reply with the right order number and carrier rarely gets called “copy and paste,” even when it is.

Late, damaged, wrong or out of stock: when the customer is already angry

These four tickets are the most common reasons for an angry email, and each has its own full template guide on our blog. What changes when the customer is already furious is the tone and the send rule, not the fix.

  • Late order, tracking stuck. Open with “You're right to be frustrated,” name the last tracking event, and promise your own action with a date (“If it hasn't moved by Friday, I'll send a replacement”). Send as is when tracking shows a stall. Full templates: shipping delay emails.
  • Item arrived damaged. Thank them for the photo, say the item is clearly damaged, and confirm the replacement in the same email. Never ask an angry customer to prove it twice. Send as is under your replace without return limit. Full templates: replying to a damaged item complaint.
  • Wrong item or size. Say “That's our mistake” in the first two lines and attach the prepaid return label. Send as is when the Shopify line item confirms their version and the right variant is in stock. Full templates: wrong item received emails.
  • Paid item now out of stock. Ship the rest today and give a two-word choice (“refund” or “wait”). Offer “wait” only with a confirmed restock date. Full templates: out of stock emails.

Best reply to angry customer email templates (free to copy)

Each sample is a complete email. Under each one, the send rule tells you when it can go out as is.

1. Tracking says delivered, customer says it never arrived

Subject: Order #1047 marked delivered but not received

Hi Sarah,

I can see UPS marked order #1047 as delivered on Thursday at 2:14 pm, and you haven't got it. I'm sorry, that's a stressful thing to see.

Could you check two quick things: around the front door or mailroom, and with neighbors in case it was left with them? Parcels marked delivered sometimes turn up within a day.

If it's still missing tomorrow, reply here and I'll either send a new one or refund you in full, whichever you prefer.

Sam, Linen & Pine support

Send rule: as is for a first claim on a normal value order. A human checks it if this customer has reported missing parcels before or the order is above your reship limit.

2. Refund not received

Subject: Your refund of $64.00 for order #1047

Hi Sarah,

I've checked order #1047. We issued your refund of $64.00 to the card you paid with on October 21. I'm sorry it hasn't shown up yet.

Refunds go back through your bank, and some banks take several business days to post them. If you don't see it soon, your bank can trace it using the date and amount above. If they can't find it, reply here and I'll dig into it with our payment provider.

Sam, Linen & Pine support

Send rule: as is only when the refund appears in the order timeline. If there's no refund in Shopify, this isn't a waiting problem. A human fixes it first. If the customer has changed cards since, see refunds after a new card.

3. Customer charged twice

Subject: Double charge on order #1047

Hi Sarah,

Thanks for flagging this. I can see two payments of $64.00 on your account for order #1047. You should only have been charged once, and I'm sorry for the worry.

I've refunded the second payment today. You'll get a refund confirmation email from us shortly.

Sam, Linen & Pine support

Send rule: human check, always. Make sure it's a real duplicate and not two orders, or a pending authorization that will drop off by itself.

4. Return requested after the return window

Subject: About returning order #1047

Hi Sarah,

I understand the shirt didn't work out, and I wish I had better news. Our return window for order #1047 ended on October 15, so I can't offer a refund.

What I can do is give you store credit for the full amount, so you can pick something that fits. Just reply “yes” and I'll set it up.

Sam, Linen & Pine support

Send rule: human check. Whether you offer credit, a discount code or nothing is a policy choice. Decide it once per product type so it stops being a debate each time.

5. Wants to cancel, but the order already shipped

Subject: Cancelling order #1047

Hi Sarah,

I'm sorry, order #1047 shipped with UPS this morning, so I can't cancel it anymore.

When it arrives, you can return it unopened within 30 days and we'll refund you in full once it's back with us. I've attached the return label so you have it ready.

Sam, Linen & Pine support

Send rule: as is when the fulfillment shows shipped and your policy matches the wording. Replace “30 days” with your own return window. If the order hasn't shipped yet, cancel it instead.

6. Discount code didn't apply

Subject: Your discount on order #1047

Hi Sarah,

You're right, the WELCOME10 code didn't go through on order #1047. I'm sorry about that.

I've refunded the 10%, which is $6.40, to your card today. You'll see a refund confirmation from us shortly.

Sam, Linen & Pine support

Send rule: as is when the code was valid at the time of the order. If the code had expired or the price dropped later, a human decides on a goodwill gesture. More cases in our guide to a customer who forgot a discount code.

7. Threatens a chargeback or a bad review

Subject: Let's fix order #1047 today

Hi Sarah,

I understand why you're upset. Your order #1047 should have arrived last week, and it didn't.

I don't want you to go through your bank for this. It's slower for you. I can refund the full $64.00 right now, or send a replacement by express shipping. Tell me which you prefer and I'll do it today.

Sam, Linen & Pine support

Send rule: human check, always. Don't mention the review or ask them to remove it. Fix the problem. If a dispute is already open, follow your chargeback process instead of refunding twice.

8. Second angry email after the first fix failed

Subject: Order #1047: I'm handling this myself now

Hi Sarah,

I'm sorry. You've had to write twice, and the replacement we promised still hasn't shipped. That's on us.

I've shipped it myself today with express delivery, at no cost to you. Here's the tracking number: 1Z999AA10123456784. I'll check it tomorrow morning and email you if anything looks wrong.

Sam, Linen & Pine support

Send rule: human check, always. Never send the same fix a second time. A repeat complaint needs a bigger gesture or a different solution, and a named person owning it.

Phrases to use and phrases to avoid

Tone does more damage than content. A correct fix in a defensive tone still reads as a fight. Keep it plain, warm and short. With an upset customer, jokes and emojis tend to backfire.

AvoidWhyUse instead
“Sorry for any inconvenience”Vague, sounds automatic“I'm sorry your order is a week late”
“As per our policy…”Sounds like a wall“Our return window ended on October 15, so…”
“Unfortunately there's nothing we can do”Ends the conversation badly“I can't refund this, but here's what I can do”
“Calm down” or “I understand your frustration, but”The “but” cancels the empathy“You're right to be frustrated”
“We're looking into it”No action, no date“I've opened a trace with UPS today”
“Please be patient”Puts the burden on the customer“You'll hear from me by Friday”
Long explanations of what went wrong internallyReads like an excuseOne apology, then the fix

How fast to reply, and what to promise

Answer the first angry email as early as you can, ideally before the customer writes a second time. A second message usually comes angrier than the first.

If you can't fix it right away, send a short holding reply with something real in it:

  • Confirm you've found the order (number and status).
  • Say the one thing you're doing now (trace opened, warehouse asked, refund checked).
  • Give a date for the next update, and only a date you can keep.

Don't promise a result you don't control, like “it will arrive tomorrow.” Promise your own action: “I'll check tracking tomorrow morning and email you.”

When to hand over to a human or a manager

Templates handle the common cases. These signals mean a person should take over, whoever or whatever wrote the first reply:

  • The customer mentions a bank, chargeback, lawyer, the press or a safety issue.
  • It's the second or third complaint about the same order.
  • The fix costs more than the limit you set for refunds or free replacements.
  • The facts don't match: tracking says one thing, the customer says another, and it's not the first time.
  • The customer explicitly asks for a person. Our guide on replying when a customer asks for a human agent covers how to do that without losing the thread.
  • The tone crosses into insults or threats.

Write these triggers down. Once they're on paper, anyone on your team, or an AI agent, can apply them the same way every time.

Common mistakes that make angry customers angrier

  • Answering before checking the order. You promise a refund that was already sent, or a reship of an item that's sold out.
  • Asking for information you already have. “Can you send your order number?” when it's in the Shopify customer record.
  • Sending the same template twice. Customers notice, and the second time feels like nobody is reading.
  • Over-apologizing. Three “sorry”s sound nervous. One sincere apology and a fix sound confident.
  • Hiding the fix at the bottom. Put the solution in the first two lines. An angry reader skims.
  • Closing the ticket without following up. If you promised an update on Friday, send it on Friday, even if the update is “still in transit.”

Start the 14-day trial

How to stop writing these replies by hand

Every sample above follows the same pattern: read the email, find the order, check the rules, take an action, write a short reply, and escalate the risky ones. That's the work Relay does.

Relay is an AI support agent that understands your product, answers customer questions, takes action, and knows when to bring in your team. For an angry email, it:

  • Finds the order in your Shopify store: items, fulfillment, tracking, payments, refunds.
  • Decides using your rules: your return window, your refund limits, when a discount code is fine.
  • Acts within the permissions you give it: a refund, a discount code, a cancellation or an address change.
  • Escalates the tickets you've marked for a person, like chargeback threats, repeat complaints or anything above your limits, so your team only reads the ones that need judgment.

You stay in control. You choose what Relay is allowed to do on its own and what it must pass to you. Setup takes 3 steps: teach Relay your business, set your rules, connect and go live.

If you answer angry emails yourself every morning, that's the work Relay is built to take off your plate. Most AI support tools reply. Relay resolves.

Start the 14-day trial

FAQ

Should you reply to an angry customer right away or wait?

Reply as soon as you've checked the order, not before. A fast reply that gets the facts wrong makes things worse, so take a minute to look at tracking, payments and refunds. If the full fix needs more time, send a short reply that confirms the order, says what you're doing and gives a date for the next update.

Should you apologize if the problem isn't your fault?

Yes, but apologize for the customer's experience, not for a mistake you didn't make. “I'm sorry your parcel is stuck” is true even when the carrier caused it. Then skip the blame and go straight to what you'll do about it.

What do you reply to an angry customer who is insulting or abusive?

Don't match the tone and don't use a standard template. If there's a real problem behind the insults, answer the problem once, calmly. If the messages turn into personal attacks or threats, stop the back-and-forth and pass the ticket to a manager. Our rude customer reply guide gives a four-level scale for deciding when to answer and when to stop.

Is there a free reply to angry customer email generator or template download?

The 8 templates on this page are free to copy and paste into your helpdesk or Shopify email replies. A generator can write the text, but it can't see your order data or apply your refund rules, and those are the parts that calm an angry customer. Relay answers, refunds and resolves your Shopify tickets, following your rules, and passes to your team the ones that need a person.