What This Template Is For
Canned responses save support teams from rewriting the same answer to the same question hundreds of times per week. But most canned response libraries are poorly organized, robotic in tone, and missing the personalization that makes a customer feel heard. This template provides a structured format for building a response library that is fast to use, consistent in quality, and personal enough that customers do not realize they are reading a template.
The goal is not to eliminate human judgment from support. It is to eliminate repetitive typing so your team can focus on the parts of each interaction that actually require judgment: understanding the customer's specific situation, deciding on the right resolution, and communicating it clearly.
A well-built canned response library reduces average handle time by 30-50% while improving customer satisfaction scores. The key is structuring responses with required personalization fields so agents must customize each reply before sending. If you are building your support team's knowledge infrastructure from scratch, start with the knowledge base template for public-facing articles and this template for agent-facing responses.
For defining the escalation criteria that some responses reference, see the escalation matrix template. For the full support operations playbook, use the support playbook template.
How to Use This Template
- Audit your last 200 support tickets. Group them by topic and identify the 10-15 most frequent request types.
- For each request type, create a canned response using the format below.
- Fill in the required personalization fields. These are the parts of each response that must be customized per ticket.
- Define escalation triggers for each response. These tell agents when a canned response is not enough and a ticket needs human investigation.
- Review and update responses quarterly. Product changes invalidate responses faster than most teams realize.
Organization. Group responses into categories that match your ticket routing tags. Common categories: Account & Billing, Technical Issues, Feature Requests, Onboarding, Security & Privacy, and General Inquiries.
The Template
Response Metadata
| Field | Value |
|---|---|
| Response ID | CR-[CATEGORY]-[NNN] |
| Category | [Account & Billing / Technical / Feature Request / Onboarding / Security / General] |
| Trigger | [When should an agent use this response?] |
| Personalization Fields | [List every field that must be customized: customer name, plan, feature, date, etc.] |
| Escalation Trigger | [Conditions under which this canned response is NOT sufficient and the ticket must escalate] |
| Tone | [Empathetic / Informative / Celebratory / Apologetic] |
| Last Reviewed | [Date] |
| Owner | [Name of person responsible for keeping this response current] |
Response Structure
Every canned response follows this four-part structure:
1. Acknowledgment. Show the customer you understand their specific situation. Reference what they told you. Never open with "Thank you for contacting us." Open with a direct acknowledgment of their issue.
2. Answer or Action. Provide the solution, workaround, or status update. Be specific. Include steps, links, and screenshots where relevant.
3. Context. Explain why the situation exists, if helpful. Customers are more patient when they understand the reason behind a limitation or delay.
4. Next Step. Tell the customer exactly what happens next. Who does what, by when. If they need to take action, list the steps. If they just need to wait, tell them the timeline.
Response Template
[ACKNOWLEDGMENT]
{personalization_field_1}
[ANSWER / ACTION]
{step_1}
{step_2}
{step_3}
[CONTEXT - optional]
{explanation}
[NEXT STEP]
{what_happens_next}
{agent_name}
{agent_title}
Personalization Field Reference
| Field | Type | Example | Required? |
|---|---|---|---|
{customer_name} | Text | "Sarah" | Always |
{plan_name} | Text | "Growth Plan" | Billing responses |
{feature_name} | Text | "Advanced Reporting" | Feature responses |
{date} | Date | "March 5, 2026" | Timeline responses |
{ticket_number} | ID | "#48291" | Escalation responses |
{amount} | Currency | "$49.00" | Billing responses |
{link} | URL | "[Help article link]" | Technical responses |
{agent_name} | Text | "Marcus" | Always |
Tone Guide
| Tone | When to Use | Example Opening |
|---|---|---|
| Empathetic | Customer is frustrated, reporting a bug, experiencing downtime | "I can see this is blocking your workflow, and I want to help you get past it." |
| Informative | Customer has a question, needs setup guidance, asks about a feature | "Great question. Here is how that works." |
| Celebratory | Customer completed onboarding, hit a milestone, upgraded | "Nice work getting that set up. You are ready to go." |
| Apologetic | Service disruption, billing error, broken feature | "This is not the experience you should have had. Here is what happened and what we are doing about it." |
Filled Examples
Example 1: Password Reset Request
| Field | Value |
|---|---|
| Response ID | CR-ACCT-001 |
| Category | Account & Billing |
| Trigger | Customer cannot log in and requests a password reset |
| Personalization Fields | customer_name, email_address |
| Escalation Trigger | Customer reports not receiving the reset email after 3 attempts, or suspects their account was compromised |
| Tone | Informative |
Response.
Hi {customer_name},
>
I have sent a password reset link to {email_address}. Check your inbox (and spam folder) for an email from us. The link expires in 24 hours.
>
To reset your password:
1. Click the link in the email
2. Enter a new password (at least 12 characters, including a number and symbol)
3. Log in with your new password
>
If the email does not arrive within 5 minutes, reply here and I will investigate further.
>
{agent_name}
Example 2: Feature Request Acknowledgment
| Field | Value |
|---|---|
| Response ID | CR-FEAT-001 |
| Category | Feature Requests |
| Trigger | Customer requests a feature that does not exist |
| Personalization Fields | customer_name, feature_description, workaround |
| Escalation Trigger | Customer is a top-10 account by ARR, or the request involves a contractual commitment |
| Tone | Empathetic |
Response.
Hi {customer_name},
>
I hear you on {feature_description}. That is a common request, and I have logged it with our product team with your specific use case attached.
>
In the meantime, here is a workaround that other customers use:
{workaround}
>
I cannot guarantee a timeline for this feature, but your feedback directly influences our prioritization. Our PM team reviews request volume weekly using a RICE scoring framework to prioritize the backlog.
>
I will update this ticket if the feature ships. Let me know if the workaround works for you.
>
{agent_name}
Example 3: Billing Discrepancy
| Field | Value |
|---|---|
| Response ID | CR-BILL-001 |
| Category | Account & Billing |
| Trigger | Customer reports being charged an unexpected amount |
| Personalization Fields | customer_name, plan_name, expected_amount, actual_amount, reason |
| Escalation Trigger | Disputed amount exceeds $500, or customer demands a full refund |
| Tone | Apologetic |
Response.
Hi {customer_name},
>
I looked into the charge on your account. You are on the {plan_name}, which is {expected_amount}/month. The charge of {actual_amount} was due to {reason}.
>
Here is the breakdown:
- Base plan: {expected_amount}
- {reason_line_item}: {difference}
- Total: {actual_amount}
>
If this does not match what you expected, I can [adjust the charge / apply a credit / switch your plan]. Let me know which option works best and I will process it today.
>
{agent_name}
Example 4: Bug Report Acknowledgment
| Field | Value |
|---|---|
| Response ID | CR-TECH-001 |
| Category | Technical Issues |
| Trigger | Customer reports a bug or unexpected behavior |
| Personalization Fields | customer_name, bug_description, ticket_number |
| Escalation Trigger | Bug causes data loss, affects billing, or blocks a customer's critical workflow for 24+ hours |
| Tone | Empathetic |
Response.
Hi {customer_name},
>
I have reproduced the issue you described with {bug_description} and filed it with our engineering team as {ticket_number}. You are not the only one experiencing this, and it is being prioritized this sprint.
>
In the meantime, here is a workaround:
1. [Step 1]
2. [Step 2]
>
I will update this ticket as soon as the fix is deployed. Based on our current sprint cycle, that should be within [X business days].
>
{agent_name}
Example 5: Onboarding Check-In
| Field | Value |
|---|---|
| Response ID | CR-ONB-001 |
| Category | Onboarding |
| Trigger | Customer signed up 3 days ago and has not completed setup |
| Personalization Fields | customer_name, incomplete_step, help_article_link |
| Escalation Trigger | Enterprise account with committed onboarding SLA |
| Tone | Informative |
Response.
Hi {customer_name},
>
I noticed you have started setting up your account but have not completed {incomplete_step} yet. No rush, but that step unlocks [key value they are missing].
>
Here is a quick guide to finish the setup: {help_article_link}
>
If you are stuck or have questions, reply here and I will walk you through it. Most customers complete this step in about 10 minutes.
>
{agent_name}
For designing the full onboarding sequence, the onboarding email template provides the complete drip structure.
Example 6: Subscription Cancellation
| Field | Value |
|---|---|
| Response ID | CR-ACCT-003 |
| Category | Account & Billing |
| Trigger | Customer requests to cancel their subscription |
| Personalization Fields | customer_name, plan_name, renewal_date, usage_highlights |
| Escalation Trigger | Customer is on an annual plan with >6 months remaining, or account value exceeds $10K ARR |
| Tone | Empathetic |
Response.
Hi {customer_name},
>
I have processed your cancellation request. Your {plan_name} access will remain active until your current billing period ends on {renewal_date}. No further charges will be made.
>
For context, here is what you have been using:
{usage_highlights}
>
If you change your mind before {renewal_date}, you can reactivate at your current rate. After that date, you would start a new subscription at the current pricing.
>
Is there anything specific that prompted the cancellation? Honest feedback helps us improve.
>
{agent_name}
Example 7: Security Inquiry
| Field | Value |
|---|---|
| Response ID | CR-SEC-001 |
| Category | Security & Privacy |
| Trigger | Customer asks about data handling, compliance, or security practices |
| Personalization Fields | customer_name, specific_question, compliance_standard |
| Escalation Trigger | Customer requires a signed DPA, BAA, or custom security questionnaire review |
| Tone | Informative |
Response.
Hi {customer_name},
>
Great question about {specific_question}. Here is how we handle that:
>
[Specific answer addressing their question]
>
For a full overview of our security practices, here is our security page: [link]. We are currently compliant with {compliance_standard}.
>
If you need a signed Data Processing Agreement (DPA) or have a security questionnaire for us to complete, reply here and I will connect you with our security team. Turnaround for questionnaires is typically 3-5 business days.
>
{agent_name}
Example 8: Downtime Notification Follow-Up
| Field | Value |
|---|---|
| Response ID | CR-TECH-003 |
| Category | Technical Issues |
| Trigger | Customer contacts support during or immediately after a service disruption |
| Personalization Fields | customer_name, incident_start, incident_duration, status_page_link |
| Escalation Trigger | Customer reports data loss or data corruption during the outage |
| Tone | Apologetic |
Response.
Hi {customer_name},
>
You are right that we had a service disruption starting at {incident_start} that lasted {incident_duration}. This is not the reliability you should expect from us, and I apologize for the disruption.
>
Here is what happened:
[Brief, non-technical summary of the root cause]
>
Here is what we are doing about it:
[1-2 specific preventive actions]
>
You can track our real-time status and subscribe to future updates here: {status_page_link}
>
If you experienced any data issues during the outage, please reply with details and I will escalate to our engineering team immediately.
>
{agent_name}
Response Library Management
Maintenance Schedule
| Task | Frequency | Owner |
|---|---|---|
| Review response accuracy against current product | Monthly | Support Lead |
| Audit personalization field usage (are agents actually customizing?) | Monthly | QA |
| Retire unused responses (< 5 uses in 90 days) | Quarterly | Support Lead |
| Add new responses for emerging ticket patterns | Ongoing | Any agent (approved by lead) |
| Full library review with product team | Quarterly | Support Lead + PM |
Quality Metrics
Track these metrics to measure canned response effectiveness:
- Usage rate. What percentage of tickets use at least one canned response? Target: 60-80%. Below 60% means your library has gaps. Above 80% may mean agents are over-relying on templates.
- Personalization compliance. What percentage of sent responses have all personalization fields filled in? Target: 95%+. Spot-check by auditing 20 random responses per week.
- CSAT by response. Track customer satisfaction scores per canned response ID. Responses with CSAT below your team average need revision.
- Escalation rate. What percentage of tickets that use a specific canned response still escalate? High escalation rates indicate the response is not solving the problem.
For tracking these customer success metrics over time, a KPI dashboard helps you spot trends before they become problems.
Common Mistakes to Avoid
- Writing responses that sound like a robot. If a customer can tell they are reading a template, you have failed. Every response must include at least one personalization field that references the customer's specific situation. "Thank you for reaching out about your issue" is not personalization.
- Building too many responses. Start with 15-20 responses for your top ticket categories. A library of 200+ responses is impossible to maintain and agents cannot find what they need. Quality beats quantity.
- Skipping the escalation trigger. Without clear escalation criteria, agents will use canned responses for situations that require human investigation. Define the boundary for each response.
- Never updating responses. Product changes invalidate canned responses. If your pricing page changed last month but your billing responses still reference old prices, you are creating confusion. Assign an owner to each response.
- Using canned responses for angry customers. When a customer is visibly frustrated, do not start with a template. Acknowledge their frustration in your own words first, then use the template structure for the solution portion.
Key Takeaways
- Build canned responses for your top 15-20 ticket categories, not every possible scenario
- Every response must include required personalization fields so agents customize before sending
- Define escalation triggers for each response to prevent agents from using templates for complex cases
- Track usage rate, personalization compliance, and per-response CSAT to measure quality
- Review and update the library monthly as the product changes
About This Template
Created by: Tim Adair
Last Updated: 3/5/2026
Version: 1.0.0
License: Free for personal and commercial use
