# Zendesk recipes

> Text a customer when their ticket is solved, and text yourself when an urgent one arrives.

Three recipes for Zendesk. Each names its trigger and the BlueBot step, lists the fields to map and says how to test it with your own number before anyone else gets a text.

## How Zendesk connects

- **[Zapier](https://usebluebot.com/docs/zapier)**: BlueBot’s Zapier app has a Send Text action and instant triggers for incoming texts and every change of state.
- **[API](https://usebluebot.com/docs/api)**: Your own code calls BlueBot’s REST API and listens to its signed webhooks.

## Text customers when their ticket is solved

| Part             | What it is                                          |
| ---------------- | --------------------------------------------------- |
| Trigger          | When a ticket’s status changes to Solved in Zendesk |
| Action           | BlueBot’s **Send Text** action                      |
| Connects through | [Zapier](https://usebluebot.com/docs/zapier)                              |

### Steps

1. Start a Zap with Zendesk’s trigger for an updated ticket.
2. Add a Filter by Zapier step for tickets that are Solved and whose requester has a phone number.
3. Add BlueBot’s Send Text action and map the requester’s phone to To.

### Map the fields

| BlueBot field                | Map it to                                                                                                                                    |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| To                           | The person’s mobile number from Zendesk. US numbers can leave off the +1.                                                                    |
| Text                         | Hi {{first_name}}, we’ve solved ticket #{{ticket_id}}: {{subject}}. If anything’s still wrong, just reply here.                        |
| `{{first_name}}` in the text | Zendesk’s first name field.                                                                                                                  |
| `{{ticket_id}}` in the text  | Zendesk’s ticket id field.                                                                                                                   |
| `{{subject}}` in the text    | Zendesk’s subject field.                                                                                                                     |
| Metadata                     | `source` set to `zendesk`, and `record_id` set to the record’s id, so the status and reply webhooks for this text can find the record again. |
| Service                      | Auto, the default: iMessage when the person uses it, otherwise SMS through your iPhone.                                                      |

### Test it

Put your own number in **To** and press **Test step**. A text arrives on your phone from your own number, and Zapier shows the message BlueBot returned with `state: "queued"`. Then map Zendesk’s field back into **To** and turn the Zap on.

## Text yourself urgent tickets

| Part             | What it is                            |
| ---------------- | ------------------------------------- |
| Trigger          | When a new ticket comes in to Zendesk |
| Action           | BlueBot’s **Send Text** action        |
| Connects through | [Zapier](https://usebluebot.com/docs/zapier)                |

### Steps

1. Start a Zap with Zendesk’s trigger for a new ticket.
2. Add a Filter by Zapier step for priority Urgent.
3. Add BlueBot’s Send Text action with your own number in To and the subject in Text.

### Map the fields

| BlueBot field                    | Map it to                                                                                                                                    |
| -------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| To                               | The person’s mobile number from Zendesk. US numbers can leave off the +1.                                                                    |
| Text                             | Urgent ticket #{{ticket_id}} from {{requester_name}}: {{subject}}                                                                      |
| `{{ticket_id}}` in the text      | Zendesk’s ticket id field.                                                                                                                   |
| `{{requester_name}}` in the text | Zendesk’s requester name field.                                                                                                              |
| `{{subject}}` in the text        | Zendesk’s subject field.                                                                                                                     |
| Metadata                         | `source` set to `zendesk`, and `record_id` set to the record’s id, so the status and reply webhooks for this text can find the record again. |
| Service                          | Auto, the default: iMessage when the person uses it, otherwise SMS through your iPhone.                                                      |

### Test it

Put your own number in **To** and press **Test step**. A text arrives on your phone from your own number, and Zapier shows the message BlueBot returned with `state: "queued"`. Then map Zendesk’s field back into **To** and turn the Zap on.

## Put text replies on the ticket

| Part             | What it is                                                             |
| ---------------- | ---------------------------------------------------------------------- |
| Trigger          | A text comes in (BlueBot’s message.received webhook)                   |
| Action           | A webhook for `message.received` starts it, and Zendesk takes the text |
| Connects through | [API](https://usebluebot.com/docs/api)                                                       |

### Steps

1. Send the solved text from your code with the ticket ID in metadata.
2. When message.received comes in, find the last text you sent that number with GET /v1/messages and read the ticket ID from its metadata.
3. Add the reply to that ticket as a comment through Zendesk’s API.

### Map the fields

| From BlueBot       | Into Zendesk                                                                                                                                           |
| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `data.from`        | The phone number to find the person by in Zendesk. It’s in E.164 (`+15555550123`); search by the last 10 digits if Zendesk stores numbers another way. |
| `data.text`        | The words, for a note, a row or a message. Null when the person sent only a picture.                                                                   |
| `data.received_at` | When it came in, in UTC.                                                                                                                               |
| `data.files`       | Pictures and voice memos. Each `url` works for an hour, so copy a file you want to keep.                                                               |
| `data.chat_id`     | Set when the text came in a group chat; null for a one-to-one text.                                                                                    |

### Test it

Run `bluebot listen --forward-to http://localhost:3000/webhooks`, then text your BlueBot number from another phone. The CLI forwards the event to your handler, signed. BlueBot copies texts from people you’ve texted through it, unless you set **Which chats to copy** to **Everything**.

## Before you turn it on

- Text only people who asked to hear from you. Anyone who replies STOP goes on your stop list, and BlueBot cancels texts to them. [Stop words](https://usebluebot.com/docs/concepts/stop-words)
- A text that can’t go yet waits with a hold rather than failing: quiet hours, your Mac away, a daily limit. [Holds](https://usebluebot.com/docs/concepts/holds)
- [Zendesk with BlueBot](https://usebluebot.com/integrations/zendesk) on the integrations page says what else the two do together.
