Retext

Customer service email templates

Most support queues are the same twenty questions asked in a thousand slightly different ways. Where's my refund. Why hasn't it shipped. Your app logged me out. I want to cancel. Writing each answer from scratch is slow, and it's how replies drift: one agent promises five days, another says a week, and the customer screenshots both.

These customer service email templates cover the conversations that fill a real inbox, from the routine (ticket received, need more information) to the ones people put off answering (refund denied, an angry customer, an outage). Each one is written to be sent with a small personal edit, not as a wall of policy. They work as email replies and, with the short variants, in live chat.

Copy any template as plain text, or add it to Retext and type a short trigger like ;cs-refund-yes in Zendesk, Help Scout, Gmail or anywhere else on your Mac. Fill-ins ask for the customer's name and order details as the reply expands, and dates such as "you should see it by" are worked out for you.

Or browse the 26 templates

Installs every template with its trigger and fields. On the free plan Retext adds as many as your plan has room for.

The 26 templates

Each one has a primary version, at least two variants, and notes on when to use it.

Refund request reply

;cs-refund-ask

Hi [Customer name], Thanks for letting us know, and sorry [Product] didn't work out for you. I've passed your refund req…

Refund approved

;cs-refund-yes

Hi [Customer name], Good news: I've refunded [Refund amount] to your [Payment method] for order [clipboard]. Most banks…

Refund denied

;cs-refund-no

Hi [Customer name], Thanks for your patience while we looked into this. I'm sorry, but we can't refund order [clipboard]…

Apology email to a customer

;cs-apology

Hi [Customer name], I'm sorry. [What went wrong], and that's on us. Here's what I've done so far: [What you fixed]. So t…

Apology for a slow reply

;cs-slow-reply

Hi [Customer name], Sorry for the slow reply, and thanks for waiting. [Short reason] If this doesn't fully answer your q…

Order shipping delay

;cs-ship-late

Hi [Customer name], I'm sorry, your order [clipboard] is running late. [Reason for delay] The new estimated delivery dat…

Ticket received

;cs-got-it

Hi [Customer name], Thanks for getting in touch. I've got your message about [Topic] and I'm looking into it now. I'll g…

Escalation to a specialist

;cs-escalate

Hi [Customer name], Thanks for bearing with me on this. I've gone as far as I can from the support side, so I've passed…

Thanks for the bug report

;cs-bug-thanks

Hi [Customer name], Thanks for such a clear report. [What they did well] I've reproduced it on our side and logged it wi…

Feature request response

;cs-feature-ask

Hi [Customer name], Thanks for the idea. Being able to [Requested feature] isn't something we support today, but I've ad…

Password reset help

;cs-pw-reset

Hi [Customer name], Sorry you're locked out. Here's the quickest way back in: 1. Go to [Reset link] 2. Enter the email a…

Cancellation confirmed

;cs-cancel-done

Hi [Customer name], Done: your [Plan name] subscription is cancelled and you won't be charged again. You'll keep access…

Failed payment

;cs-card-failed

Hi [Customer name], Your payment of [Amount] for [Plan name] didn't go through. That usually means the card has expired…

Waiting on your reply

;cs-nudge

Hi [Customer name], Just checking in on this. To keep going, I still need [What you need]. If it's already sorted, no ne…

Ticket solved

;cs-closing

Hi [Customer name], Glad we got that sorted: [One-line recap]. I'll mark this as solved. If anything else comes up, or t…

Reply to an upset customer

;cs-upset

Hi [Customer name], You're right to be frustrated. [What they experienced], and that's not okay. I'm taking this on myse…

Wrong item received

;cs-wrong-item

Hi [Customer name], Sorry about that, you should have received [Correct item], not [Wrong item]. I've sent the right one…

Return instructions

;cs-return-how

Hi [Customer name], No problem, here's how to return your order: 1. Pack the item in its original packaging if you still…

Backorder notice

;cs-backorder

Hi [Customer name], I'm sorry: [Item] from your order [clipboard] is out of stock right now. We expect more by [Restock…

Service outage update

;cs-outage

Hi [Customer name], Thanks for reporting this. It's not you: we're having an issue with [Affected service] since [Start…

Reply to positive feedback

;cs-kind-words

Hi [Customer name], Thank you, this made my day. [What you appreciated] I've shared your message with [Team or person],…

Request more information

;cs-need-info

Hi [Customer name], Thanks for the details so far. To get this fixed in one go, could you send me: That's all I need. As…

Troubleshooting steps

;cs-try-steps

Hi [Customer name], Sorry about the trouble with [Problem]. These steps fix it in most cases. Try them in order and stop…

Holiday support hours

;cs-hours-holiday

Hi [Customer name], A quick note: our support team is on reduced hours from [Start date] to [End date] for [Holiday]. Du…

Shipping address change

;cs-address-change

Hi [Customer name], No problem. I've updated the shipping address on order [Order number] to: [clipboard] Please check i…

Discount code not working

;cs-code-fix

Hi [Customer name], Sorry the code didn't work. The usual reasons are: - a space before or after the code when it's past…

Who this pack is for

Support agents, team leads and founders who still answer the support inbox themselves. If you work in a help desk with its own macros, these still help: Retext snippets work in every tab and app, so the same reply is there in the help desk, in Slack when a colleague asks what to say, and in a personal Gmail thread that never made it into a ticket.

How the triggers are named

Every trigger in this pack starts with cs- (customer support), then names the situation rather than the outcome you want: ;cs-refund-yes, ;cs-refund-no, ;cs-ship-late, ;cs-outage. Grouping them under one prefix keeps them together in search, and autocomplete can finish a trigger after a few letters, so new agents find the right reply without memorising a list. No trigger is the start of another, so ;cs-refund-ask never fires early while you're typing ;cs-refund-yes.

Build the library from your last 200 tickets, not from a blank page

Export or skim the last few weeks of closed tickets and tag each one with the question behind it. In most teams, eight to twelve questions account for the majority of the volume. Those are the snippets to write first. Rarer questions can wait until someone answers the same one twice in a week.

Start from the best reply someone on the team actually sent, not from a policy document. A reply that already worked with a real customer has the right length and tone. Tidy it, replace the specifics with fill-ins, and save it under a trigger everyone can guess.

Write for the edit, not for the send

Each template signs off with a {fill:Your name} fill-in, so one shared team pack works for every agent. If you use them on your own, replace it with your name once.

A canned response that's sent untouched reads like one. Each template here leaves a deliberate gap, usually marked with {cursor}, where the agent adds one sentence that only applies to this customer: what they tried, what they mentioned, why it matters to them. That sentence is what makes a template feel written.

Keep the fixed parts short and factual: amounts, dates, steps. Keep the warm parts specific. "Sorry for the trouble" is filler; "Sorry you had to chase this twice" shows you read the thread.

Match the length to the channel

Email can carry a greeting, two short paragraphs and a sign-off. Live chat can't. That's why most templates in this pack have a short or chat variant: three lines, no greeting, a question at the end to keep the conversation moving. If you answer chat in its own Mac app, per-app snippets can give both versions the same trigger: the chat version in that app, the email version everywhere else. Help desks open in browser tabs all count as the browser, so give their chat versions a trigger of their own.

Keep replies current, or they'll quietly go wrong

Templates rot. The refund window changes, the returns address moves, a feature ships and the "not yet" reply becomes wrong. Give each shared reply an owner and review the set once a quarter, or whenever a policy changes. Retext team packs make this a single edit: an owner updates the snippet in the app and every agent's Mac syncs it.

Ask agents which replies they skip. A reply nobody uses usually means nobody trusts it, and it needs rewriting.

Use it with your team

Install the customer support pack into a Retext team and everyone sends the same approved wording from their Mac. Owners and admins edit a snippet once in the app, and every member's copy updates.

See Retext for Teams

Snippets that work everywhere

Type ;trigger in any Mac app, from Gmail and Outlook to Zendesk, Slack and your terminal.

How snippets work

Dynamic fields

Fill-ins ask for the name or order number when the snippet expands. Dates calculate themselves, {clipboard} drops in what you copied, and {cursor} puts you where the personal line goes.

See dynamic fields

Per-app snippets

Keep one trigger with different text per app: a full signature in Mail, a one-liner in Slack, a formal reply in Outlook and a short one in Teams.

Set snippets per app

Use your snippets in Shortcuts and Siri

Questions

What is a canned response in customer service?

A saved reply to a question your team answers often, such as a refund confirmation or a shipping delay. Good canned responses are short, accurate and leave room for one personal line, so the customer gets a fast answer that still sounds like a person wrote it.

How many canned responses does a support team need?

Fewer than most teams think. Ten to fifteen well-written replies usually cover the bulk of a queue. Add new ones when someone writes the same answer twice in a week, and retire ones nobody uses.

Do these templates work inside Zendesk, Help Scout or Intercom?

Yes. Retext expands snippets in any text field on your Mac, including help desk reply boxes in the browser and desktop apps. You can keep your help desk macros for things like tagging and status changes and use snippets for the text itself.

Can the whole support team share the same replies?

Yes. Add the pack to a Retext team and everyone gets the same triggers. Owners, admins and editors change replies in the app, and the changes sync to every member's Mac.

Should canned responses be personalised?

Always a little. Use the customer's name, reference what they actually said, and add one sentence that only fits their situation. The templates here mark that spot with a cursor, so you land in the right place to type it.

Type ;cs-refund-ask instead

Add this pack to Retext and every reply above is a short trigger away, in any app on your Mac.

Free to start. No account required on the Mac.