customer-support-ops
Use this skill when designing ticket triage systems, managing SLAs, creating macros, or building escalation workflows. Triggers on ticket triage, SLA management, support macros, escalation workflows, support queue, first response time, and any task requiring customer support process design or optimization.
operations supporttriageslamacrosescalationticketingWhat is customer-support-ops?
Use this skill when designing ticket triage systems, managing SLAs, creating macros, or building escalation workflows. Triggers on ticket triage, SLA management, support macros, escalation workflows, support queue, first response time, and any task requiring customer support process design or optimization.
customer-support-ops
customer-support-ops is a production-ready AI agent skill for claude-code, gemini-cli, openai-codex. Designing ticket triage systems, managing SLAs, creating macros, or building escalation workflows.
Quick Facts
| Field | Value |
|---|---|
| Category | operations |
| Version | 0.1.0 |
| Platforms | claude-code, gemini-cli, openai-codex |
| License | MIT |
How to Install
- Make sure you have Node.js installed on your machine.
- Run the following command in your terminal:
npx skills add AbsolutelySkilled/AbsolutelySkilled --skill customer-support-ops- The customer-support-ops skill is now available in your AI coding agent (Claude Code, Gemini CLI, OpenAI Codex, etc.).
Overview
Customer support operations covers the full support lifecycle - from triage and routing through SLA tracking, escalation, and resolution - plus the operational layer of macros, queue management, VIP handling, and on-call rotations. This skill provides actionable frameworks for each layer: priority matrices, SLA structures by tier and priority, macro libraries, escalation paths, and queue optimization. Built for support leaders moving from reactive firefighting to a measurable, repeatable support machine.
Tags
support triage sla macros escalation ticketing
Platforms
- claude-code
- gemini-cli
- openai-codex
Related Skills
Pair customer-support-ops with these complementary skills:
Frequently Asked Questions
What is customer-support-ops?
Use this skill when designing ticket triage systems, managing SLAs, creating macros, or building escalation workflows. Triggers on ticket triage, SLA management, support macros, escalation workflows, support queue, first response time, and any task requiring customer support process design or optimization.
How do I install customer-support-ops?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill customer-support-ops in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support customer-support-ops?
This skill works with claude-code, gemini-cli, openai-codex. Install it once and use it across any supported AI coding agent.
Maintainers
Generated from AbsolutelySkilled
SKILL.md
Customer Support Operations
Customer support operations covers the full support lifecycle - from triage and routing through SLA tracking, escalation, and resolution - plus the operational layer of macros, queue management, VIP handling, and on-call rotations. This skill provides actionable frameworks for each layer: priority matrices, SLA structures by tier and priority, macro libraries, escalation paths, and queue optimization. Built for support leaders moving from reactive firefighting to a measurable, repeatable support machine.
When to use this skill
Trigger this skill when the user:
- Needs to design or improve a ticket triage system or priority matrix
- Wants to define or audit SLAs by customer tier or ticket priority
- Is building or standardizing a macro and response template library
- Needs to design or document escalation workflows and trigger conditions
- Wants to optimize queue management or reduce queue aging
- Is setting up VIP or enterprise support lanes
- Needs to design a support on-call or follow-the-sun rotation
- Is measuring or improving first response time or resolution time
Do NOT trigger this skill for:
- Production incident management or war room coordination (use incident-management skill)
- Writing individual customer replies without a process context (use a writing assistant skill)
Key principles
First response time is king - The metric customers feel most is how quickly someone acknowledges their problem. A fast FRT buys goodwill and time. Every SLA must prioritize FRT above all others. Measure it first; everything else is secondary.
Triage before solving - An untriaged queue is a random queue. Agents working in random order guarantee high-priority problems wait behind low-priority ones. Triage assigns priority, tier, and routing - it does not solve the problem.
Macros save hours, not minutes - One macro used 50 times a day saves 50x the time invested in writing it. Expand the library whenever agents write the same reply more than once a week. Review quarterly. A bad macro is worse than no macro.
Escalation paths must be clear - Ambiguous escalation is the leading cause of tickets stalling. Every agent must know, without asking, exactly when and where to escalate. If an agent has to think about whether to escalate, the path is not clear.
Measure everything - Support intuition degrades under volume. Track FRT, resolution time, CSAT, first contact resolution rate, escalation rate, and queue age. Review weekly. Data surfaces problems before customers do.
Core concepts
Support tiers
| Tier | Typical customers | Support entitlement |
|---|---|---|
| Community / Free | Trial, free plan | Docs and community forum only |
| Standard | Paying customers | Email, SLA 24h FRT |
| Professional | Growth plan | Email + chat, SLA 8h FRT |
| Enterprise | Large contracts | All channels, SLA 1h FRT, named contacts |
Tier assignment rule: Tier is set at account creation from the billing plan and must trigger automatic re-routing in the ticketing system. Never rely on agents to manually route by tier - automate it.
SLA components
| Component | Definition | Measured from |
|---|---|---|
| First Response Time (FRT) | Time from ticket creation to first agent reply | Ticket creation |
| Next Response Time (NRT) | Time between agent replies after customer responds | Customer reply |
| Resolution Time (RT) | Time from ticket creation to closed status | Ticket creation |
SLA clock rules:
- FRT clock starts immediately on ticket creation, including nights and weekends, unless the tier contract specifies business hours only.
- Clock pauses when a ticket enters "Pending Customer" status (waiting on customer).
- Clock never pauses for internal notes or transfers between agents.
Ticket lifecycle
Submitted -> Triaged -> Assigned -> In Progress -> Pending Customer
| |
Escalated Reopened
|
Resolved -> Closed (auto after 7 days)Each transition must have a defined owner and time constraint. Tickets sitting in "Triaged" for more than 30 minutes indicate a routing or staffing problem. Tickets in "In Progress" beyond the resolution SLA need a manager flag.
Queue management
Queue states to monitor:
| State | Definition | Action threshold |
|---|---|---|
| New | Submitted, not yet triaged | > 15 min: trigger triage alert |
| Breached | Past FRT SLA | Escalate to lead immediately |
| At-risk | Within 20% of SLA window | Flag for prioritization |
| Aging | Open > 5 days with no update | Manager review required |
| Stalled | No agent activity > 24 hours | Auto-assign to queue lead |
Common tasks
Design a triage system
Priority matrix (impact x urgency):
| Low urgency | High urgency | |
|---|---|---|
| High impact | P2 - schedule soon | P1 - respond now |
| Low impact | P4 - backlog | P3 - respond today |
Priority definitions:
P1 - Critical: Service down, data loss, security issue, or revenue blocked.
FRT target: 1 hour. Assign immediately. Page on-call if needed.
P2 - High: Core feature broken, workaround difficult, or VIP affected.
FRT target: 4 hours. Pull from queue before P3/P4.
P3 - Normal: Feature degraded, workaround exists, standard customer.
FRT target: per tier SLA (8h or 24h).
P4 - Low: Cosmetic issue, how-to question, feature request.
FRT target: 48 hours. May be batch-processed.Triage checklist (run on every new ticket):
- Assign priority using the matrix above.
- Confirm customer tier from CRM. Upgrade priority if enterprise.
- Check for duplicate tickets from the same account - merge if found.
- Apply tags: product area, issue type, channel source.
- Route to the correct queue or agent group.
- Set SLA clock based on tier and priority.
Set up SLAs
SLA matrix by tier and priority:
| Tier | P1 FRT | P2 FRT | P3 FRT | P4 FRT | Resolution |
|---|---|---|---|---|---|
| Community | 72h | 72h | 72h | 72h | Best effort |
| Standard | 8h | 24h | 24h | 48h | 5 business days |
| Professional | 4h | 8h | 8h | 24h | 3 business days |
| Enterprise | 1h | 4h | 8h | 24h | 1-2 business days |
SLA escalation rules:
- At 75% of FRT window: auto-flag the ticket as "at-risk" in the queue view.
- At 100% of FRT window: alert the team lead via Slack and mark as breached.
- At 150% of FRT window: escalate to support manager, log as SLA violation.
Weekly SLA health report: FRT compliance % per tier (target > 95%), resolution compliance % per tier (target > 90%), breach count by priority, top 5 breach reasons.
Create a macro and template library
Macro taxonomy:
Acknowledgment:
- First response: issue received
- First response: investigating
- First response: needs more info
Status Updates:
- Update: investigating root cause
- Update: fix in progress, ETA known
- Update: fix in progress, ETA unknown
- Update: escalated to engineering
Resolution:
- Resolution: issue fixed, steps to verify
- Resolution: workaround provided
- Resolution: known issue, linked to status page
Closures:
- Closing: no response from customer (7 days)
- Closing: duplicate ticket
- Closing: feature request logged
VIP and Escalations:
- VIP: acknowledgment with named CSM
- Escalation received: enterprise pathMacro quality rules:
- Every macro must have a human-review checkpoint. Never send blind.
- Macros must include placeholder fields for: customer name, product area, ticket number, and agent name.
- Review and update the full library every quarter.
- Retire macros with a < 2% usage rate after 90 days.
See references/macro-templates.md for the full ready-to-use template library.
Build escalation workflows
Escalation paths:
Tier 1 (Front-line) -> Tier 2 (Technical Support) -> Engineering
| | |
General issues Complex bugs Code-level bugs,
How-to questions Integrations data issues,
Account issues Advanced config security incidentsEscalation triggers (agent must escalate when):
| Condition | Escalate to | SLA for response |
|---|---|---|
| No resolution after 2 agent replies | Tier 2 | 2 hours |
| Customer reports data loss or corruption | Engineering direct | 30 minutes |
| Security vulnerability mentioned | Security team | Immediate |
| Enterprise customer unresolved > 4h | CSM + Support Lead | 1 hour |
| Customer requests to speak to management | Support Lead | 2 hours |
| Same issue reported by 3+ accounts in 24h | Incident channel | Immediate |
Escalation handoff requirements - every escalation must include:
- Summary of the issue in 2-3 sentences.
- Steps already tried and their outcomes.
- Customer tier and sentiment (calm / frustrated / at churn risk).
- Relevant screenshots, logs, or error messages attached.
- Proposed priority for the receiving team.
Optimize queue management
Queue health metrics:
| Metric | Healthy | Warning | Critical |
|---|---|---|---|
| Avg queue age (open tickets) | < 24h | 24-48h | > 48h |
| % tickets at-risk | < 5% | 5-15% | > 15% |
| % tickets breached | < 2% | 2-5% | > 5% |
| First contact resolution rate | > 70% | 60-70% | < 60% |
| Ticket reopen rate | < 10% | 10-20% | > 20% |
Queue optimization tactics:
- Morning triage burst: First 30 minutes of each shift: triage all new tickets before agents pick up personal queues.
- Aging sweep: Every 4 hours, a lead scans for tickets with no activity in 24h and reassigns or prompts.
- Tag-based batching: Group similar tickets and batch-reply after one root-cause investigation.
- Deflection loop: Top 10 ticket topics each week. 5+ recurrences means a help article is needed.
Handle VIP and enterprise support
VIP designation criteria:
- Contract value above a defined threshold (e.g., > $50k ARR).
- Named in the contract as a "premium support" account.
- Manually flagged by Sales or CS at deal close.
VIP support protocol:
| Phase | Action |
|---|---|
| Creation | Auto-tag VIP, route to dedicated queue, notify CSM via Slack, send VIP macro within 15 min |
| Resolution | Proactive updates every 4h, CC CSM on all replies, escalations go direct to senior agent |
| Closure | CSM personal follow-up within 24h, suppress CSAT if relationship is sensitive, log in CRM |
Design an on-call support rotation
Rotation structure:
Primary on-call: Monitors queue, handles escalations, pages engineering if needed.
Secondary on-call: Available for overflow; backup if primary is unavailable.
Support lead: Available for management escalations and SLA breach approvals.Follow-the-sun model (distributed teams):
| Region | Coverage (UTC) | Handoff |
|---|---|---|
| APAC | 00:00 - 08:00 | 08:00 UTC |
| EMEA | 08:00 - 16:00 | 16:00 UTC |
| Americas | 16:00 - 00:00 | 00:00 UTC |
On-call health metrics:
| Metric | Healthy | Unhealthy |
|---|---|---|
| Escalations per on-call shift | < 3 | > 8 |
| After-hours P1 tickets per week | < 2 | > 5 |
| On-call handoff notes complete | > 90% | < 70% |
On-call rotation rules: Minimum 4 agents per region. Never assign the same agent two consecutive weeks. Provide compensation for after-hours coverage. On-call agent must complete a shift handoff note before logging off.
Anti-patterns / common mistakes
| Mistake | Why it is wrong | What to do instead |
|---|---|---|
| No triage step - agents pick from the top | High-priority tickets wait behind low-priority ones; SLAs breach for enterprise customers | Enforce a triage queue; no agent picks a ticket until it has been triaged and prioritized |
| SLAs based on business hours for enterprise | Enterprise customers expect 24x7 coverage; business-hours SLAs create surprise outages at weekends | Define SLAs in calendar hours for enterprise tiers; staff accordingly or use follow-the-sun |
| Macros sent without review | Generic replies to nuanced problems destroy CSAT; customers feel like a number | Every macro send requires agent review of all populated fields; never auto-fire macros |
| Escalation with no context | Receiving team re-investigates what front-line already knows, wasting hours | Mandate a structured 5-point handoff note on every escalation |
| Measuring only resolution time | Slow FRT loses customers even when resolution is fast; CSAT drops before resolution happens | Track and report FRT as the primary SLA metric; resolution time is secondary |
| VIP tickets in the shared queue | VIP accounts lose priority to volume; CSM discovers the problem when the customer complains | Route VIP tickets to a dedicated queue with guaranteed assignment within 15 minutes |
Gotchas
SLA clock running during "Pending Customer" status - Many ticketing system configurations keep the SLA clock running even when a ticket is waiting on the customer. This inflates resolution time metrics and creates false SLA breaches. Verify your ticketing platform pauses the clock correctly when status changes to "Pending Customer" or equivalent.
Macros that skip populated placeholder fields - A macro template with
{customer_name}that sends as-is when the field is empty sends customers an email that starts "Hi ," - a CSAT disaster. Every macro must require agent review before send; never configure auto-fire on macros with dynamic fields.Enterprise tickets routed into the shared queue - An enterprise customer submitting a ticket via the same channel as a free-tier user will wait behind a backlog of low-priority tickets unless routing is automated. VIP/enterprise tier identification must happen at ticket creation via CRM lookup, not manual agent review.
On-call rotations without minimum coverage rules - An on-call rotation with only two engineers per region means one calling in sick leaves a single person covering P1s. Define a minimum viable coverage threshold and have a clear escalation path when it cannot be met (pool from a secondary region, use a support-on-call vendor, etc.).
Escalation handoffs without context transfer - Escalating a ticket with only "customer is unhappy" forces the Tier 2 agent to re-investigate everything already discovered. Every escalation must include: the issue summary, steps already tried with outcomes, customer tier and sentiment, and all relevant logs or screenshots. Missing any of these doubles the resolution time.
References
For detailed guidance on specific customer support operations domains, load the
relevant file from references/:
references/macro-templates.md- ready-to-use support response templates covering acknowledgment, status updates, resolution, and closure scenarios
Only load a references file when the current task requires it.
References
escalation-matrix.md
Escalation Matrix
Full escalation decision trees, handoff checklists, and cross-team escalation protocols for multi-tier support operations.
Escalation decision tree
Should I escalate this ticket?
1. Can I resolve this with available macros and knowledge base?
YES -> Resolve at current tier
NO -> Continue
2. Do I have access to the tools/systems needed to investigate?
NO -> Escalate to the tier with access
YES -> Continue
3. Have I spent more than 30 minutes actively working on this?
YES -> Escalate to next tier with findings
NO -> Continue investigating
4. Is this a confirmed bug or requires a code change?
YES -> Escalate to Tier 3 (Engineering)
NO -> Continue
5. Has the customer explicitly requested escalation?
YES -> Escalate immediately (honor all escalation requests)
NO -> Continue
6. Is the SLA at risk (> 75% elapsed)?
YES -> Escalate with SLA urgency flag
NO -> Continue working at current tierPriority-based escalation timing
| Priority | Max time at L1 before escalation | Max time at L2 before escalation |
|---|---|---|
| P1 | 15 minutes | 30 minutes |
| P2 | 30 minutes | 1 hour |
| P3 | 2 hours | 4 hours |
| P4 | 4 hours | 8 hours |
These are maximum times. Escalate sooner if the decision tree above indicates it.
Escalation handoff checklist
Before escalating any ticket, complete this checklist:
[ ] Ticket summary written (1-2 sentences of the core issue)
[ ] Steps already taken documented (numbered list)
[ ] Customer information confirmed:
- Name, plan tier, account age
- Any relevant account flags (VIP, at-risk, enterprise)
[ ] Reproduction steps documented (if applicable)
[ ] Screenshots or logs attached (if applicable)
[ ] Customer sentiment noted (frustrated / neutral / understanding)
[ ] SLA status noted (time remaining before breach)
[ ] Specific ask for the next tier stated clearly:
- "Need database query to check account state"
- "Need code fix for [specific bug]"
- "Need access to [internal tool] to investigate"
[ ] Customer notified of the escalation (use escalation notice macro)Common handoff failures:
- "Please look into this" with no context = bad handoff
- Forwarding the entire ticket thread without a summary = bad handoff
- Escalating without trying basic troubleshooting = premature escalation
Tier-to-tier escalation paths
L1 to L2 escalation
When: Issue requires specialized product knowledge, access to internal tools, or deeper technical investigation beyond standard troubleshooting.
Routing by product area:
| Product area | L2 queue | L2 team |
|---|---|---|
| Billing and payments | billing-l2 | Finance operations |
| API and integrations | api-l2 | Platform team |
| Authentication and security | auth-l2 | Security team |
| Data and analytics | data-l2 | Data platform team |
| Mobile app | mobile-l2 | Mobile team |
| General / unclear | general-l2 | Senior support agents |
L2 response expectations:
- Acknowledge escalation within 30 minutes during business hours
- Provide initial assessment within 2 hours
- Either resolve or escalate to L3 within the SLA window
L2 to L3 (Engineering) escalation
When: Confirmed bug, data inconsistency, performance issue, or security concern requiring code-level investigation.
Engineering escalation template:
Title: [BUG/PERF/DATA/SEC] - Brief description
Priority: [P1-P4]
Customer: [name, plan, impact scope (1 customer / multiple / all)]
SLA status: [time remaining]
What happened:
[customer-reported symptoms]
What we investigated:
[L1/L2 troubleshooting steps and findings]
Reproduction steps:
1. [step]
2. [step]
Expected: [what should happen]
Actual: [what happens instead]
Evidence:
[logs, screenshots, error messages, request IDs]
Customer-facing workaround:
[if one exists, describe it; if not, state "none available"]
Requested action:
[specific ask: fix bug, investigate data, review performance]Engineering response expectations:
- P1: Acknowledge within 15 minutes, actively investigate immediately
- P2: Acknowledge within 1 hour, provide initial assessment within 4 hours
- P3/P4: Acknowledge within 1 business day, schedule fix in next sprint
Management escalation
When: SLA breach on P1/P2, customer threatens churn or legal action, repeated escalations for same issue (3+), VIP dissatisfaction.
Management escalation includes:
Escalation reason: [SLA breach / churn risk / repeated issue / VIP]
Ticket history: [link to ticket + summary of all related tickets]
Customer value: [ARR, plan tier, account age, expansion potential]
Business risk: [churn probability, contract renewal date, legal exposure]
What has been tried: [summary of all support and engineering efforts]
Recommended action: [specific recommendation for management decision]Cross-team escalation protocols
Support to Product
When: Feature request from multiple customers (3+), workaround is unsustainable, or product behavior does not match documentation.
Protocol:
- Log feature request in the shared tracker with customer count and business impact
- Tag the relevant product manager in the tracker
- Do not promise timelines to customers - say "logged with our product team"
- Product PM reviews support-tagged items weekly
Support to Sales/Success
When: Customer expresses expansion interest, contract renewal concerns, or dissatisfaction that may affect retention.
Protocol:
- Internal note on the ticket with the customer's exact words
- Direct message to the assigned account manager or CSM
- Include: customer name, current plan, what they said, recommended action
- Flag urgency: "informational" vs "action needed this week"
Support to Legal
When: Customer mentions legal action, regulatory complaint, data breach inquiry, or GDPR/CCPA data request.
Protocol:
- Do not make any commitments or admissions to the customer
- Respond with: "I've escalated this to our appropriate internal team who will follow up with you directly within [timeframe]"
- Immediately notify support manager + legal team via designated channel
- Attach full ticket history and customer communication
Escalation metrics to track
| Metric | Target | Red flag |
|---|---|---|
| Escalation rate (L1 to L2) | 15-25% | > 35% (knowledge gap) or < 10% (premature closes) |
| Escalation rate (L2 to L3) | 3-8% | > 15% (L2 undertrained) |
| Escalation turnaround time | Within SLA | Consistently near SLA limit |
| Bounce-back rate (escalated then returned) | < 5% | > 10% (bad handoffs) |
| Customer re-escalation rate | < 3% | > 5% (resolution quality issue) |
Monthly review questions:
- Which product areas generate the most escalations? (knowledge gap signal)
- Which agents escalate most frequently? (training opportunity)
- Which escalations bounce back? (handoff quality issue)
- Are engineering escalations increasing? (product quality signal)
macro-templates.md
Macro Templates
Ready-to-use support response templates organized by scenario. Customize placeholders and tone for your brand voice before deploying. Never send a macro blind - always review populated fields before submitting.
Placeholder reference
| Placeholder | Description | Example value |
|---|---|---|
{{customer_name}} |
Customer's first name | "Hi Sarah" |
{{agent_name}} |
Assigned agent's name | "Best, Alex" |
{{ticket_id}} |
Ticket reference number | "#12345" |
{{product_area}} |
Affected feature or product | "billing dashboard" |
{{timeframe}} |
Expected resolution or follow-up window | "within 2 hours" |
{{link}} |
Relevant help article or status page URL | "https://help.example.com/reset" |
Tone rules:
- Open with empathy or acknowledgment, never the problem statement
- Close with a clear next step or expectation
- Avoid internal product names, error codes, or jargon the customer would not recognize
- Match severity: apologetic for outages, informational for how-to, warm for resolution
Acknowledgment templates
First response - general
Hi {{customer_name}},
Thanks for reaching out. I've received your request about {{product_area}} and
I'm looking into it now.
I'll have an update for you {{timeframe}}. If anything changes on your end in
the meantime, just reply to this thread.
Best,
{{agent_name}}Actions: Set status to "In Progress". Apply product area tag.
First response - urgent (P1/P2)
Hi {{customer_name}},
I understand this is urgent and I'm treating it as a top priority. Our team is
actively investigating the {{product_area}} issue you reported.
I'll update you within the next 30 minutes with what we find. You don't need to
do anything on your end right now.
{{agent_name}}Actions: Set status to "In Progress". Set priority P1 or P2. Notify team lead.
First response - needs more information
Hi {{customer_name}},
Thanks for reaching out about {{product_area}}. To get this resolved quickly,
I need a few more details:
1. {{question_1}}
2. {{question_2}}
Once I have these, I can investigate right away.
Best,
{{agent_name}}Actions: Set status to "Waiting on Customer". Pause SLA clock.
Status update templates
Update - investigating root cause
Hi {{customer_name}},
Quick update on ticket {{ticket_id}}: we've identified the {{product_area}} issue
and our team is actively investigating the root cause.
I'll have another update for you within {{timeframe}}. No action needed on your end.
{{agent_name}}Update - fix in progress, ETA known
Hi {{customer_name}},
We've identified the root cause of the {{product_area}} issue and a fix is in
progress. We expect it to be deployed by {{timeframe}}.
I'll confirm as soon as it's live.
{{agent_name}}Update - fix in progress, ETA unknown
Hi {{customer_name}},
Our engineering team is actively working on the {{product_area}} issue. We don't
have a firm ETA yet, but I'll update you every {{timeframe}} until it's resolved.
Thanks for your patience.
{{agent_name}}Update - escalated to engineering
Hi {{customer_name}},
I've escalated your {{product_area}} issue to our engineering team for deeper
investigation. They're looking into it now.
I'm staying on this and will keep you updated. Your ticket reference is {{ticket_id}}.
{{agent_name}}Actions: Add "escalated-engineering" tag. Assign to engineering queue.
Resolution templates
Resolution - issue fixed, steps to verify
Hi {{customer_name}},
Good news - the {{product_area}} issue has been resolved. Our team deployed a
fix and verified it's working correctly.
Could you try {{specific_action}} and confirm everything is working on your end?
If you hit any issues, just reply here and I'll jump right back in.
Thanks for your patience throughout this.
{{agent_name}}Actions: Set status to "Pending". Apply "resolved" tag. Set 48-hour auto-close timer.
Resolution - workaround provided
Hi {{customer_name}},
While our team works on a permanent fix for {{product_area}}, here is a workaround
that will unblock you:
{{workaround_steps}}
I've flagged your account to notify you when the full fix ships. Is there
anything else I can help with in the meantime?
Best,
{{agent_name}}Actions: Apply "workaround-provided" tag. Add to notification list for fix release.
Resolution - known issue, linked to status page
Hi {{customer_name}},
The {{product_area}} issue you reported is a known incident we are actively
working to resolve. You can track live updates here: {{link}}
I'll also send you a direct notification as soon as it's resolved. No action
is needed on your end.
{{agent_name}}Actions: Apply "known-incident" tag. Subscribe customer to status page updates.
Closure templates
Closing - no response from customer (7 days)
Hi {{customer_name}},
I'm closing this ticket since we haven't heard back. No worries - if you still
need help with {{product_area}}, just reply to this thread and it will reopen
automatically. We're here whenever you need us.
Best,
{{agent_name}}Actions: Set status to "Solved". Apply "auto-closed-no-response" tag.
Closing - duplicate ticket
Hi {{customer_name}},
I've merged this ticket with {{ticket_id}}, where we are already working on
your {{product_area}} issue. All updates will come through on that thread.
Thanks,
{{agent_name}}Actions: Set status to "Closed". Apply "duplicate" tag. Link to primary ticket.
Closing - feature request logged
Hi {{customer_name}},
Thanks for the suggestion about {{feature_description}}. I've logged this as a
feature request with our product team - your feedback directly influences our roadmap.
I don't have a timeline to share right now, but I've tagged your account so
you'll be among the first to know if we build this.
Is there anything else I can help with?
Best,
{{agent_name}}Actions: Set status to "Solved". Apply "feature-request" tag. Log in product tracker.
VIP and escalation templates
VIP - acknowledgment with named CSM
Hi {{customer_name}},
Thank you for reaching out. I'm {{agent_name}}, and I'm personally handling your
request about {{product_area}}.
I've also looped in {{csm_name}}, your dedicated Customer Success Manager, who
is copied on this thread.
I'm treating this as a top priority and will have an update for you within
{{timeframe}}.
{{agent_name}}Actions: Apply "VIP" tag. CC CSM. Set P1 priority. Route to VIP queue.
Escalation received - enterprise path
Hi {{customer_name}},
I'm {{agent_name}} from our Enterprise Support team. I've received the escalation
on your {{product_area}} issue and I'm taking ownership now.
I've reviewed the full context from {{previous_agent_name}} and you won't need
to repeat anything.
I'll have a detailed update for you within {{timeframe}}.
{{agent_name}}
Senior Support EngineerActions: Assign to enterprise queue. Add escalation note. Notify CSM.
Macro maintenance schedule
| Action | Frequency | Owner |
|---|---|---|
| Review macro usage metrics | Monthly | Support ops lead |
| Update macros with product changes | Every release | Support ops + product |
| Retire macros with < 2% usage rate after 90 days | Quarterly | Support ops lead |
| Audit tone and personalization compliance | Quarterly | Support manager |
| Add macros for emerging ticket patterns | As needed | Senior agents propose, ops approves |
sla-playbook.md
SLA Playbook
Detailed SLA policy configurations, breach response procedures, and reporting templates for customer support operations.
SLA policy tiers
Standard tier (free / starter plans)
Business hours: Mon-Fri, 9am-6pm (customer's timezone or HQ timezone)
Channels: Email, help center form
First response targets:
P1: 1 hour P2: 4 hours P3: 8 hours P4: 24 hours
Resolution targets:
P1: 8 hours P2: 24 hours P3: 48 hours P4: 5 business days
SLA clock behavior:
- Runs only during business hours
- Pauses when status is "Waiting on Customer"
- Resumes when customer repliesPremium tier (paid plans)
Business hours: Mon-Fri, 8am-8pm (customer's timezone)
Channels: Email, help center, live chat during business hours
First response targets:
P1: 30 min P2: 2 hours P3: 4 hours P4: 8 hours
Resolution targets:
P1: 4 hours P2: 8 hours P3: 24 hours P4: 48 hours
SLA clock behavior:
- Runs only during business hours
- Pauses when status is "Waiting on Customer"
- P1 tickets: clock runs 24/7 regardless of business hoursEnterprise tier (enterprise contracts)
Business hours: 24/7 for P1/P2; Mon-Fri 8am-8pm for P3/P4
Channels: Email, help center, live chat, phone, dedicated Slack channel
First response targets:
P1: 15 min P2: 1 hour P3: 2 hours P4: 4 hours
Resolution targets:
P1: 4 hours P2: 8 hours P3: 24 hours P4: 48 hours
SLA clock behavior:
- P1/P2: clock runs 24/7
- P3/P4: runs during business hours only
- Pauses when status is "Waiting on Customer"
- Named account manager monitors all open tickets dailySLA clock rules
When the clock pauses
| Status | Clock behavior | Rationale |
|---|---|---|
| Waiting on Customer | Paused | Cannot resolve without customer input |
| Waiting on Third Party | Paused (with cap) | External dependency; cap at 48 hours then resume |
| On Hold (internal) | Running | Internal delays should count against SLA |
| Pending Customer Confirmation | Paused | Solution provided, awaiting verification |
When the clock resets vs continues
- Customer replies to a solved ticket: New SLA clock starts (treated as new ticket)
- Agent reopens a ticket: SLA clock continues from where it paused
- Priority changes mid-ticket: SLA adjusts to new priority targets retroactively
- Ticket is merged: Surviving ticket keeps its original SLA clock
Breach response procedures
Pre-breach alerting
75% of SLA elapsed:
- Notify assigned agent via in-app alert
- Highlight ticket in queue with yellow warning indicator
- No escalation yet
90% of SLA elapsed:
- Notify assigned agent + team lead
- Highlight ticket in queue with red warning indicator
- Auto-reassign if agent is offline or at capacity
100% SLA breach:
- Notify team lead + support manager
- Log breach in weekly report
- Trigger post-breach review for P1/P2 breachesPost-breach actions
For P1/P2 breaches:
- Immediate manager review - why did the breach occur?
- Customer outreach - apologize and provide updated resolution timeline
- Log in breach tracker with root cause category:
- Staffing gap (not enough agents)
- Knowledge gap (agent lacked expertise)
- Process gap (routing or triage failure)
- Volume spike (unexpected ticket surge)
- Complexity (issue harder than priority suggested)
- Review in weekly ops meeting
For P3/P4 breaches:
- Log in breach tracker with root cause category
- Review in weekly ops meeting if pattern emerges (3+ breaches same category)
- No individual customer outreach required unless CSAT survey indicates dissatisfaction
SLA reporting
Weekly SLA report template
Week of: [date range]
Overall compliance:
First response SLA: [X]% (target: > 95%)
Resolution SLA: [X]% (target: > 90%)
By priority:
P1: [X]% first response | [X]% resolution | [N] total tickets
P2: [X]% first response | [X]% resolution | [N] total tickets
P3: [X]% first response | [X]% resolution | [N] total tickets
P4: [X]% first response | [X]% resolution | [N] total tickets
Breach summary:
Total breaches: [N] ([X]% of volume)
P1/P2 breaches: [N] (each documented below)
Root cause breakdown:
Staffing gap: [N]
Knowledge gap: [N]
Process gap: [N]
Volume spike: [N]
Complexity: [N]
Top 3 actions for next week:
1. [specific action with owner]
2. [specific action with owner]
3. [specific action with owner]Monthly SLA trend report
Track these metrics month-over-month to identify trends:
| Metric | Month 1 | Month 2 | Month 3 | Trend |
|---|---|---|---|---|
| First response compliance | ||||
| Resolution compliance | ||||
| Average first response time | ||||
| Average resolution time | ||||
| Breach count | ||||
| Ticket volume | ||||
| Agent headcount | ||||
| Tickets per agent per day |
Red flags in trends:
- Compliance dropping while volume is flat = process or staffing problem
- Compliance stable but CSAT dropping = premature closures
- Volume rising faster than headcount = scaling problem; plan hiring
- P1 breaches increasing = triage or escalation workflow needs review
SLA negotiation guidelines
When setting SLAs for new customer tiers or enterprise contracts:
- Start with what you can reliably deliver - promise 80% of your current performance, not your best-case scenario
- Build in buffer for growth - if you hit 95% compliance at current volume, set the SLA target at the level you can maintain at 150% volume
- Differentiate on response, not resolution - response time is controllable; resolution depends on issue complexity. Offer aggressive first-response SLAs and reasonable resolution SLAs
- Define exclusions clearly - maintenance windows, third-party dependencies, and customer-caused delays must be documented upfront
- Include SLA review cadence - quarterly review clause to adjust targets based on actual performance data
triage-automation.md
Triage Automation
Auto-triage rule recipes, keyword detection patterns, and routing logic examples for common helpdesk platforms.
Auto-triage rule framework
Every auto-triage rule follows this structure:
Rule name: [descriptive name]
Trigger: [condition that activates the rule]
Actions: [what happens when triggered]
Priority: [rule execution order - lower number = higher priority]
Exceptions: [when this rule should NOT fire]Rules execute in priority order. First matching rule wins unless configured for cumulative execution (all matching rules apply).
Keyword detection patterns
Priority detection keywords
P1 - Urgent (auto-tag + alert):
Keywords: "down", "outage", "cannot access", "error 500", "503",
"completely broken", "data loss", "security breach",
"compromised", "all users affected", "production down"
Rule:
IF subject OR body contains ANY of the P1 keywords
AND ticket is from a verified customer (not spam)
THEN:
- Set priority to P1
- Alert on-call support lead
- Skip L1 queue, route directly to L2
- Send P1 acknowledgment macro automaticallyP2 - High (auto-tag):
Keywords: "cannot log in", "login failed", "payment failed",
"stuck", "blocked", "not working", "critical",
"urgent", "broken", "affecting our team"
Rule:
IF subject OR body contains ANY of the P2 keywords
AND NOT already classified as P1
THEN:
- Set priority to P2
- Route to front of L1 queueP4 - Low (auto-tag):
Keywords: "feature request", "suggestion", "nice to have",
"would be cool", "wondering if", "cosmetic",
"minor", "typo", "alignment"
Rule:
IF subject OR body contains ANY of the P4 keywords
AND NOT contains ANY P1 or P2 keywords
THEN:
- Set priority to P4
- Route to general L1 queueProduct area detection keywords
| Product area | Keywords | Tag |
|---|---|---|
| Billing | "invoice", "charge", "refund", "subscription", "payment", "billing", "plan", "upgrade", "downgrade", "cancel" | billing |
| Authentication | "login", "password", "SSO", "2FA", "MFA", "locked out", "reset password", "sign in", "authentication" | auth |
| API | "API", "endpoint", "rate limit", "webhook", "integration", "REST", "SDK", "API key", "401", "403" | api |
| Dashboard | "dashboard", "UI", "display", "layout", "page", "button", "screen", "interface" | dashboard |
| Mobile | "iOS", "Android", "mobile app", "app store", "push notification", "mobile" | mobile |
| Data | "export", "import", "CSV", "report", "analytics", "data", "metrics", "chart" | data |
Routing rules
Skill-based routing
Rule: Route by product area tag
Priority: 10
IF ticket has tag "billing"
THEN assign to billing-support group
IF ticket has tag "api"
THEN assign to api-support group
IF ticket has tag "auth"
THEN assign to auth-support group
IF ticket has no product area tag
THEN assign to general-support groupCustomer tier routing
Rule: VIP routing
Priority: 5 (runs before skill-based routing)
IF customer is on Enterprise plan
OR customer is in VIP account list
THEN:
- Add "priority-support" tag
- Apply Enterprise SLA policy
- Route to senior-agents group
- Notify assigned account managerLanguage-based routing
Rule: Non-English routing
Priority: 3 (runs before all other routing)
IF detected language is NOT English
THEN:
- Add language tag (e.g., "lang-es", "lang-fr", "lang-ja")
- Route to corresponding language support group
- IF no language group exists, route to general with "needs-translation" tagLoad-balanced assignment within groups
Rule: Fair assignment
Priority: 20 (runs after routing determines the group)
Within the assigned group:
1. Filter to agents who are online and not at capacity
2. Sort by number of open assigned tickets (ascending)
3. Assign to agent with fewest open tickets
4. IF tie, assign to agent who has been idle longestAuto-response rules
Business hours auto-response
Rule: After-hours acknowledgment
Trigger: Ticket created outside business hours
Response:
"Hi {{customer_name}},
Thanks for reaching out. Our support team is currently offline and will
be back at [next business hours start time] [timezone].
Your ticket (#{{ticket_id}}) has been logged and you'll hear from us
as soon as we're back. If this is an emergency affecting your production
service, please email [emergency-email] or call [emergency-phone].
Best,
[Company] Support"
Actions:
- Send auto-response
- Do NOT start SLA clock until business hours begin (unless P1)Duplicate detection
Rule: Potential duplicate
Trigger: Same customer email + similar subject within 24 hours
Actions:
- Flag as potential duplicate
- Link to the most recent open ticket from same customer
- Do NOT auto-merge (agent reviews and decides)
- Add internal note: "Potential duplicate of #[ticket_id]"Auto-close inactive tickets
Rule: Inactivity auto-close
Trigger: Status is "Waiting on Customer" for 7+ days
Actions:
Day 5: Send check-in macro ("Just checking in...")
Day 7: Send closing macro ("I'm closing this ticket...")
Day 7: Set status to "Solved"
Day 7: Add "auto-closed" tag
Day 7: Pause - customer reply within 48 hours reopens automaticallySpam and abuse filtering
Spam detection rules
Rule: Spam filter
Priority: 1 (runs first)
IF sender is on blocklist
OR subject matches known spam patterns (regex library below)
OR body contains > 5 URLs and no product-related keywords
OR sender domain is in disposable email list
THEN:
- Move to spam queue (do NOT delete)
- Do NOT send auto-response
- Do NOT start SLA clock
- Weekly review of spam queue for false positivesCommon spam patterns (regex):
/\b(buy now|limited offer|act fast|congratulations you won)\b/i
/\b(SEO services|web design services|marketing services)\b/i
/(click here|unsubscribe).*(http[s]?:\/\/(?!yourdomain\.com))/iAbusive language detection
Rule: Abusive content flag
Priority: 2
IF body contains profanity or threatening language
THEN:
- Add "review-required" tag
- Route to team lead queue
- Do NOT auto-respond
- Agent responds with empathy-first approach
- If threats of violence: escalate to management + legal immediatelyRule testing and maintenance
Before deploying a new rule
- Run the rule against the last 30 days of tickets in dry-run mode
- Check for false positives (tickets that would be incorrectly tagged/routed)
- Check for false negatives (tickets the rule should have caught but did not)
- Target: < 5% false positive rate, < 10% false negative rate
- Get sign-off from support lead before enabling
Monthly rule review
| Check | Action |
|---|---|
| Rules with 0 triggers in 30 days | Evaluate: is the pattern obsolete? Remove or update |
| Rules with > 10% false positive rate | Tighten keyword patterns or add exceptions |
| New ticket categories not covered by rules | Create new auto-triage rules |
| Keyword list freshness | Add new product names, features, error messages |
| Customer tier list accuracy | Sync with CRM data |
Frequently Asked Questions
What is customer-support-ops?
Use this skill when designing ticket triage systems, managing SLAs, creating macros, or building escalation workflows. Triggers on ticket triage, SLA management, support macros, escalation workflows, support queue, first response time, and any task requiring customer support process design or optimization.
How do I install customer-support-ops?
Run npx skills add AbsolutelySkilled/AbsolutelySkilled --skill customer-support-ops in your terminal. The skill will be immediately available in your AI coding agent.
What AI agents support customer-support-ops?
customer-support-ops works with claude-code, gemini-cli, openai-codex. Install it once and use it across any supported AI coding agent.