# Canned Responses

> Pre-defined quick replies for faster customer communication

Source: https://docs.soosh.io/features/canned-responses/

## Overview

Canned Responses allow your team to quickly insert pre-written messages when chatting with customers. Instead of typing common responses repeatedly, agents can select from a library of pre-defined replies with just a few clicks or by using slash commands.

## Key Features

  **Organization-Wide**

    Shared responses available to all users in your organization.
  
  **Categories**

    Organize responses by category (Greetings, Support, Sales, etc.).
  
  **Slash Commands**

    Type `/shortcut` in chat to quickly find and insert responses.
  
  **Dynamic Placeholders**

    Use placeholders like `{{contact_name}}` for personalized messages.
  

## Managing Canned Responses

Navigate to **Settings > Canned Responses** to create and manage your responses.

### Creating a Canned Response

1. **Click "Add Response"**

   Open the canned responses settings and click the "Add Response" button.

2. **Enter Response Details**

   Fill in the following fields:
   - **Name**: A descriptive name (e.g., "Welcome Message")
   - **Shortcut**: Optional quick-access code (e.g., `welcome`)
   - **Category**: Select a category for organization
   - **Content**: The actual message text

3. **Add Placeholders (Optional)**

   Include dynamic placeholders in your content:
   - `{{contact_name}}` / `{{phone_number}}` — auto-filled from the contact
   - `{{user_name}}` (alias `{{agent_name}}`) — auto-filled with the signed-in agent's name
   - Any other `{{token}}` — the agent fills it in the preview dialog before sending

4. **Save**

   Click "Create" to save your response.

### Categories

Organize your responses into categories for easier navigation:

| Category | Use Case |
|----------|----------|
| **Greetings** | Welcome messages, initial contact responses |
| **Support** | Common support replies, troubleshooting steps |
| **Sales** | Product information, pricing, promotions |
| **Closing** | Thank you messages, conversation endings |
| **General** | Miscellaneous responses |

## Interactive Buttons

A canned response can include buttons that appear under the message in the
customer's WhatsApp. Several types are supported, and the editor enforces
which can be combined.

| Type | What it does | How many |
|------|--------------|----------|
| **Reply** | Sends a tappable text reply back into the chat. | 1–10 per message. List format kicks in automatically above 3. |
| **URL** | Opens a link in the customer's browser. | 1 per message. Can't be combined with reply buttons. |
| **Phone** | Click-to-dial a PSTN phone number from the customer's dialer. | Combines with reply/URL buttons. Distinct from **Call** (WhatsApp voice) below. |
| **Call** | Lets the customer place a WhatsApp voice call to you with one tap. | 1 per message. Exclusive — can't be combined with any other button type. |
| **Flow** | Launches a WhatsApp Flow (see [WhatsApp Flows](https://docs.soosh.io/features/whatsapp-flows/)) when tapped. | 1 per message. Exclusive — can't be combined with any other button type. |

### Flow buttons

A **Flow** button opens a native WhatsApp Flow form. In the editor supply a
**CTA title** (the button label) and the **Flow ID** of a published flow; an
optional **screen** picks which flow screen to open first. Like the WhatsApp
**Call** button, a Flow button renders as the entire interactive message, so
it can't share a message with reply, URL, phone, or Call buttons.

### Call buttons (click-to-call)

Add a **Call** button when you want the customer to be able to start a
voice call with one tap — e.g. "Talk to your account manager",
"Call our support team".

> **Careful:** **Prerequisite:** the WhatsApp account sending the response must have
> **Business Calling enabled** under **Settings > Accounts > [account] >
> Defaults**. The toggle is off by default; enable it only after Meta has
> enrolled the phone number in the WhatsApp Business Calling API. The
> send will be rejected with a clear error if the toggle is off.

**Routing.** When the customer taps the Call button, the resulting call
rings *the agent who sent the button* directly, skipping the IVR. The
agent who originated the outreach gets the call; if they're offline,
on another call, or off-shift, the call falls back to the account's
normal incoming-call routing (IVR / team broadcast).

**Configuring the button.** In the editor:

- **Label** — shown on the button face. Max 20 characters. Supports
  the same `{{contact_name}}` / `{{user_name}}` placeholders as the
  body, resolved server-side.
- **Expires after** — how long the button stays clickable (1–60
  minutes, default 15). After this window Meta drops the button from
  the customer's chat and they can't initiate a call from it.

See the [Calling docs](https://docs.soosh.io/features/calling/) for the broader incoming-call
flow (IVR, transfers, recording).

## Using Canned Responses in Chat

There are two ways to pick a canned response while chatting:

### Method 1: Picker Button

1. Click the **canned responses icon** (message bubble) next to the emoji button in the chat input area
2. Search or browse through your responses
3. Click a response — the **preview dialog** opens (see below)

### Method 2: Slash Commands

1. Type `/` followed by your shortcut in the chat input (e.g., `/welcome`)
2. A picker appears showing matching responses
3. Select the response — the **preview dialog** opens (see below)

> **Tip:** Slash commands are the fastest way to find responses. Create memorable shortcuts like `/hi`, `/thanks`, `/hours` for your most-used responses.

### Preview Dialog

After picking a response, a preview dialog shows the resolved message. Auto-filled tokens (`{{contact_name}}`, `{{phone_number}}`, `{{user_name}}` / `{{agent_name}}`) appear already substituted. Any other `{{token}}` in the content gets its own input field — fill them in and the preview updates live. Click **Send** to deliver the message, or **Cancel** to back out without sending.

## Placeholders

Make your responses personal by using dynamic placeholders. Some are filled automatically; anything else becomes an input field in the preview dialog.

### Auto-Filled Placeholders

| Placeholder | Source | Example |
|-------------|--------|---------|
| `{{contact_name}}` | Contact's profile name (falls back to contact name, then `there`) | `Sarah` |
| `{{phone_number}}` | Contact's phone number | `+1234567890` |
| `{{user_name}}` | Signed-in agent's full name | `Alex Doe` |
| `{{agent_name}}` | Alias for `{{user_name}}` | `Alex Doe` |

### Custom Placeholders

Any other `{{token}}` you put in the content (e.g. `{{order_id}}`, `{{tracking_number}}`) shows up as a labelled input in the preview dialog. The agent fills it in before sending, and the preview updates as they type.

### Example

**Canned Response Content:**
```
Hi {{contact_name}}, your order #{{order_id}} has shipped. — {{user_name}}
```

**Preview Dialog (contact "Sarah", agent "Alex"):**

The dialog opens with one input field for `order_id`. Once Alex types `4521`, the preview shows:

```
Hi Sarah, your order #4521 has shipped. — Alex Doe
```

> **Note:** Auto-filled placeholders with no available value (e.g. contact with no profile name) fall back to a sensible default or empty string. Custom placeholders are required — Send is blocked until every input is filled.

## Usage Tracking

The system automatically tracks how often each response is used. This helps you:
- Identify your most popular responses
- See usage counts on each response card
- Responses are sorted by usage count (most used first)

## Access Control

| Role | Permissions |
|------|-------------|
| **Admin** | Create, edit, delete, and use responses |
| **Manager** | Create, edit, delete, and use responses |
| **Agent** | Use responses only (cannot create/edit/delete) |

> **Tip:** Agents can use all canned responses in the chat, but only admins and managers can manage them in settings.

## Best Practices

1. **Keep responses concise** - WhatsApp messages work best when brief and to the point

2. **Use meaningful shortcuts** - Choose shortcuts that are easy to remember (`/hi`, `/price`, `/hours`)

3. **Personalize with placeholders** - Using `{{contact_name}}` makes responses feel more personal

4. **Organize by category** - Group similar responses together for easier discovery

5. **Review and update regularly** - Keep responses current and accurate

6. **Train your team** - Make sure agents know about available responses and shortcuts
