Skip to main content

Macros and canned responses — the inbox reply library

Every reply an agent sends more than once belongs in the reply library. The inbox has two levels of it:
  • Canned responses — single reusable replies. An agent types the shortcut into the composer, and the stored body replaces it. Use them for answers that stay one message: hours, pricing, refund policy, password reset.
  • Macros — multi-step actions. One macro can send a reply, tag the contact, assign the conversation, set its status, schedule a follow-up message, and open a task — in sequence, with automatic rollback if a step fails. Use them whenever “reply” is really “reply plus three more things.”
Both live in the workspace and are created from the dashboard. The search in the macro list resolves by name and shortcut, so a growing library stays findable.

Where each library lives

Everything below happens around Inbox.

Access scopes — personal vs shared

Every macro and every folder carries a scope that decides who can see and who can change it. The rules are the same as saved views and routing rules elsewhere in the workspace:
  • Personal — belongs to the agent who created it. Only that agent (or an owner/admin) can edit, delete, or run it. Nobody else sees it in their palette.
  • Team (shared) — visible to the whole workspace. Only owners and admins can create, edit, or delete a shared macro. Optionally narrow a shared macro to one or more teams, so it renders only for active members of those teams; owners and admins always see the full library.
Folders follow the same split: a personal folder is the creator’s private organization layer, a team folder is a shared grouping every agent sees in the palette. Canned responses are simpler: one org-wide library, managed by owners and admins, usable by every agent in the composer.

Organize with folders

Folders group macros into collapsible sections in the inbox palette. Manage them on Inbox → Settings → Macros from the Folders card:
  1. Enter a name in the new-folder field, pick Personal or Team, and save.
  2. Rename or delete a folder from the same card. Deleting a folder never deletes its macros — they fall back to the unfiled bucket.
  3. Assign a macro to a folder inside the macro editor; an unassigned macro stays unfiled and is filterable through the folder filter in the library.

Build a macro

Open Inbox → Settings → Macros and create a macro. Each macro has a name, an optional description, and a shortcut — a slash trigger like refund the slash-command palette matches. Shortcuts are unique: two shared macros cannot share one, and two of your own personal macros cannot either. A macro is an ordered list of steps. Add steps, drag them into order with the grip handle (or use the Move up/down buttons), and remove the ones you do not need. The available step types: Steps run in order. If a step fails, the run reports the failed step and rolls back the reversible steps that already ran — a half-applied macro does not leave the conversation tagged, reassigned, and snoozed around a message that never sent. A few validation rules the editor enforces up front: an empty message body is not savable, one macro cannot set two conflicting priorities or two dispositions, and nothing can snooze a conversation an earlier step already closed. Running a macro requires a full agent seat. Light seats can read the library but not fire billable steps. Message-sending steps consume credits the same way a hand-typed reply does.

Variables and placeholders

Message bodies template on mustache-style variables so one shared macro renders correctly for every operator and every contact: Anything that does not resolve renders as an empty string — a typo shows up as a missing word in the editor’s live preview, not as a literal {{...}} in a customer-facing message. The editor renders the preview against a sample contact while you type, so verify the placeholders before saving.

Per-locale message bodies

The body of a Send message or Schedule follow-up step can carry one version per language. The editor defaults to tabs for English, Spanish, and French; the English body is the required fallback. When the macro runs, it picks the body that matches the conversation’s detected language — falling back to the contact’s stored language, then to English — so one “refund policy” macro serves a multilingual queue.

Channel-specific canned responses

A canned response can be scoped to a channel — SMS, WhatsApp, email — or left channel-agnostic. The composer only offers entries valid for the open conversation’s channel: the channel-specific entries for that channel plus the channel-agnostic ones. Scope a response to SMS when the body must fit a segment budget, and keep the longer version scoped to email.

Apply from the composer

Three entry points, all on the open conversation:
  1. Macro palette — the palette attached to the composer lists the macros visible to you, grouped by folder, with your most-used macros ranked by your own recent run count.
  2. Slash command — /template <name-or-shortcut> — press / with a conversation open, then pick the macro from the filtered list.
  3. Canned response shortcut — type the entry’s slash shortcut into the composer text and the stored body replaces it.
Multi-step macros show a preview before they fire: every step rendered against the live conversation — variables interpolated, the language-specific body picked, relative times (+2h) converted to exact timestamps — with zero side effects until you confirm. This is the operator’s last check before a run that sends messages and bills credits; use it. Once fired, re-running the same macro against the same conversation inside 30 seconds is debounced, so a double click cannot double-send.

Example: a refund-policy macro

A support team handles refund questions across SMS and WhatsApp. The owner builds a shared macro named Refund policy with the shortcut /refund, filed under a team folder called Policies:
  1. Send message — English body: Hi {{contact.first_name}}, our refund policy: full refunds within 30 days of purchase, no questions asked. {{agent.signature}} — with a Spanish body on the es tab: Hola {{contact.first_name}}, nuestra política de reembolso: reembolso completo dentro de los 30 días de la compra. {{agent.signature}}
  2. Add tagrefund-explained.
  3. Snooze+2d, so the thread reopens if the customer does not reply.
  4. Set disposition — the refund-policy label from the workspace taxonomy.
The scope decision shows the access levels in practice:
  • An agent who wants the same chain for themselves only creates it as a personal macro — visible and runnable by that agent alone.
  • A team lead narrows a shared macro to the support team, so refund-handling templates never clutter the sales team’s palette.
  • The workspace owner publishes the macro shared with no team narrowing — every agent can run it, and only owners and admins can change the wording once legal has reviewed it.
Preview against an open conversation before saving the shared version: you see the exact message body that will leave the workspace, the tag applied, the snooze target resolved to an exact time, and the disposition label — before any customer sees anything.