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.
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-askHi [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-yesHi [Customer name], Good news: I've refunded [Refund amount] to your [Payment method] for order [clipboard]. Most banks…
Refund denied
;cs-refund-noHi [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-apologyHi [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-replyHi [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-lateHi [Customer name], I'm sorry, your order [clipboard] is running late. [Reason for delay] The new estimated delivery dat…
Ticket received
;cs-got-itHi [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-escalateHi [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-thanksHi [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-askHi [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-resetHi [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-doneHi [Customer name], Done: your [Plan name] subscription is cancelled and you won't be charged again. You'll keep access…
Failed payment
;cs-card-failedHi [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-nudgeHi [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-closingHi [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-upsetHi [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-itemHi [Customer name], Sorry about that, you should have received [Correct item], not [Wrong item]. I've sent the right one…
Return instructions
;cs-return-howHi [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-backorderHi [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-outageHi [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-wordsHi [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-infoHi [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-stepsHi [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-holidayHi [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-changeHi [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-fixHi [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.
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 TeamsSnippets that work everywhere
Type ;trigger in any Mac app, from Gmail and Outlook to Zendesk, Slack and your terminal.
How snippets workDynamic 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 fieldsPer-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 appQuestions
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.
More snippet packs
Email & out of office
Out of office messages, follow-ups and the meeting emails you write every week.
Email signatures
Twenty plain-text signatures that look right in every inbox, by role.
Sales
Cold outreach, follow-ups, objections and renewals, one clear ask per email.
Gmail
Replies built around how Gmail actually works: threads, BCC, Meet links and nudges.
Outlook
Automatic replies, recalls, Teams invites and shared mailboxes, in every version of Outlook.
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.