BXUP Track progress & test yourself — free
AI at Office · Playbook · Core · ~4 min read
AI AT OFFICE · PLAYBOOK · CORE

Write Macros for Your Top Fifteen Ticket Types

Your team answers the same fifteen questions four hundred times a month, and every agent answers them slightly differently. This playbook mines resolved tickets for your most common issue types, then drafts empathetic, on-policy macro responses with clean placeholders — a canned-response library that doesn't read canned.

Workflow area: Customer Support · Tier: Core · Hands-on time: ~35 minutes

A good macro is harder to write than it looks: it must be warm without being fake, complete without being a wall, and safe to send after a two-second skim by a tired agent at ticket #60. That last constraint is why placeholder hygiene matters more than prose quality — a macro that tempts agents to send it unfilled ("Hi {{name}}, your refund of $AMOUNT…") does damage at scale. AI drafts the fifteen variants fast; your job is policy accuracy and the placeholder discipline.

When to use — and when not to

  • Use it when repeat tickets dominate volumeif your top 15 issues cover 60%+ of tickets (they usually do), macros are the highest-ROI hour in support.
  • Use it when response quality varies by agentmacros are how your best agent's phrasing becomes everyone's floor.
  • Use it at tooling migrationsmoving to a new helpdesk is the natural moment to rebuild the macro library properly instead of importing the mess.
  • Skip macros for genuinely angry or complex casesescalations, legal threats, and multi-issue tickets need a human-composed reply; a detected macro makes anger worse.
  • Skip anything that states policy you haven't verifieda macro repeating an outdated refund window commits you to it hundreds of times. Every policy claim gets checked against the current source before shipping.

The recipe

  1. Mine the ticket data for the top types. Export 200–500 recent resolved tickets (subjects + first customer message is enough; strip customer names and emails first):

    Here are recent support ticket subjects and first messages
    (customer details removed). Cluster them into issue types.
    
    For each type give: a short name, estimated share of this sample,
    the 2-3 distinct variants within it (e.g. "refund request" splits
    into within-policy and out-of-policy), and whether it is
    MACRO-SUITABLE (same answer works for most cases) or
    JUDGMENT-REQUIRED.
    
    Tickets:
    [PASTE — batch in chunks if needed]
    
    Rules: cluster by what the customer needs, not by the words they
    used. List until you've covered ~80% of the sample, then stop.
    

    Sanity-check the list against what your agents say all day — they'll spot a missing type in seconds.

  2. Lock the facts per type before drafting. For each of the fifteen: the current correct answer, the policy source, and any steps the customer must take. Two lines each, from your docs — not from the model's memory of how refunds usually work.

  3. Draft the macros in one structured pass.

    Write support macros for these ticket types. Our voice: [2-3
    ADJECTIVES + ONE EXAMPLE SENTENCE FROM A GREAT PAST REPLY].
    Product: [ONE LINE]. Helpdesk: [Zendesk/Freshdesk/etc.] — use its
    placeholder syntax, e.g. {{ticket.requester.first_name}}.
    
    For EACH type below, produce:
    1. Macro name (searchable: "Refund - within policy - approved")
    2. The response: greeting, one empathy line that acknowledges
       the specific situation, the answer with any steps numbered,
       what happens next with a timeframe, sign-off
    3. Placeholders for EVERY variable fact — name, order number,
       amount, dates. Never a guessable default.
    4. An AGENT NOTE line (not sent): when NOT to use this macro,
       and what to check before sending.
    
    Types and verified facts:
    1. [TYPE] — correct answer: [FACTS]. Steps: [STEPS].
    2. [TYPE] — ...
    
    Rules: under 120 words per macro. No "we apologize for any
    inconvenience" — empathy must reference the actual problem. Do
    not invent policy details beyond the facts I provided; if a
    macro needs a fact I didn't give, insert [MISSING: what] instead.
    
  4. Review like the customer, then like the tired agent. A shippable macro looks like:

    Macro: Delivery - delayed - carrier issue
    Hi {{ticket.requester.first_name}},
    
    Thanks for flagging this — I can see order {{order_number}} has
    been sitting with the carrier longer than it should. That's
    frustrating when you were promised {{promised_date}}.
    
    Here's what I've done: I've raised a trace with the carrier and
    marked your order priority. You'll get an update from me within
    24 hours, whatever the carrier says.
    
    {{agent_signature}}
    
    AGENT NOTE: Only for carrier-confirmed delays. If tracking shows
    "delivered", use "Delivery - marked delivered - not received"
    instead. Check the promised date in the order record before
    sending.
    

    For each macro ask: does every placeholder force the agent to look something up (good), or can it be sent blind (bad)? Does the empathy line survive being received three times by the same customer? Is every commitment ("within 24 hours") one your team actually keeps?

  5. Ship, then instrument. Load the macros into your helpdesk with the naming convention intact, walk the team through the agent notes, and set a 30-day review: which macros get edited before sending every time? That edit pattern is the macro telling you it's wrong — feed the commonly-added sentences back into the next revision.

Make it yours

  • Tone tiers: generate each macro in two registers — standard, and a softer variant for visibly frustrated customers — and name them as a pair so agents can grab the right one.
  • Bilingual library: pipe the finished English macros through the pb-10 translation-with-native-review flow to build the Hindi (or any language) set — translate the final approved text, never a draft.
  • Notion as the source of truth: keep the master library in Notion with columns for policy source and last-verified date; the helpdesk holds copies. When policy changes, you update one page and know exactly which macros are stale.

Quality check

  • Every policy claim was verified against current docsby a human, before shipping, with the source noted.
  • Placeholders cover every variable factnothing guessable, nothing sendable blind.
  • Empathy references the actual situationno interchangeable apology sludge.
  • Agent notes state the do-not-use casesthe macro knows its own limits.
  • Commitments are keepableevery timeframe promised is one your team hits.
Warning

Ticket exports contain customer names, emails, order details, and sometimes payment fragments. Strip personal data before pasting into any AI tool, or run the clustering inside your approved enterprise tenant. The macros themselves should contain placeholders — never a real customer's details as the example.

Key Takeaway:

A macro library is policy at scale — which means errors are errors at scale. Let AI do the clustering and the drafting, but let humans own the facts, and build every macro so the agent must engage before hitting send.

This is the free reading view. Open BXUP to track your progress, run the hands-on labs, and prove it with original, exam-pattern assessments.
© Anvi Innovate · BXUP — Be Exponentially Upskilled · BXUP is an independent learning platform, not affiliated with or endorsed by AWS, Microsoft, Google, NVIDIA, IBM, Salesforce, Databricks, Oracle or Anthropic. All trademarks belong to their respective owners. · bxup.in