# Cal.com recipes

> Send Cal.com’s booking webhooks to a Text Hook and text each person who books.

Three recipes for Cal.com. 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 Cal.com connects

- **[Text Hook](https://usebluebot.com/docs/text-hooks)**: A Text Hook is a BlueBot address the app posts its own webhook to. You map its fields to a recipient and a template, and each post becomes a text.
- **[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.

## Confirm each booking

| Part             | What it is                                          |
| ---------------- | --------------------------------------------------- |
| Trigger          | Cal.com’s Booking Created webhook                   |
| Action           | A BlueBot **Text Hook** turns each post into a text |
| Connects through | [Text Hook](https://usebluebot.com/docs/text-hooks)                       |

### Steps

1. Ask for a phone number on the event type’s booking form.
2. Make a Text Hook in BlueBot and add its address as a webhook in Cal.com for Booking Created alone.
3. Book a test meeting, then pick the attendee’s name, phone and the event’s title from the payload BlueBot kept.
4. Write the template, and each booking becomes a text from your number.

### Map the fields

| Text Hook setting | Set it to                                                                                                                          |
| ----------------- | ---------------------------------------------------------------------------------------------------------------------------------- |
| Recipient         | The field in Cal.com’s post that holds the person’s phone number, written as a path such as `{{body.phone}}`.                      |
| Text              | Hi {{body.first_name}}, you’re booked for {{body.event_title}}. The details are in your email. Reply here if anything changes. |
| Metadata          | `source` set to `cal-com`. BlueBot adds the hook’s id by itself.                                                                   |

### Test it

Post a sample to the hook’s address with your own number in the phone field, as below. A text arrives on your phone, and the hook’s page lists the post.

```bash title="A test post shaped like Cal.com’s"
curl -X POST "https://usebluebot.com/h/YOUR_HOOK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+15555550123","first_name":"Maria","event_title":"sample event title"}'
```

## Text the new time when a booking moves

| Part             | What it is                                      |
| ---------------- | ----------------------------------------------- |
| Trigger          | Cal.com’s Booking Rescheduled trigger in Zapier |
| Action           | BlueBot’s **Send Text** action                  |
| Connects through | [Zapier](https://usebluebot.com/docs/zapier)                          |

### Steps

1. Start a Zap with Cal.com’s trigger for a rescheduled booking.
2. Use Formatter by Zapier to write the new start time the way people read it.
3. Add BlueBot’s Send Text action and map the attendee’s phone to To.

### Map the fields

| BlueBot field                | Map it to                                                                                                                                    |
| ---------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- |
| To                           | The person’s mobile number from Cal.com. US numbers can leave off the +1.                                                                    |
| Text                         | Hi {{first_name}}, your meeting is now {{start_time}}. Reply here if that doesn’t work.                                                  |
| `{{first_name}}` in the text | Cal.com’s first name field.                                                                                                                  |
| `{{start_time}}` in the text | Cal.com’s start time field.                                                                                                                  |
| Metadata                     | `source` set to `cal-com`, 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 Cal.com’s field back into **To** and turn the Zap on.

## Text yourself each booking

| Part             | What it is                                          |
| ---------------- | --------------------------------------------------- |
| Trigger          | Cal.com’s Booking Created webhook                   |
| Action           | A BlueBot **Text Hook** turns each post into a text |
| Connects through | [Text Hook](https://usebluebot.com/docs/text-hooks)                       |

### Steps

1. Make a Text Hook in BlueBot with your own number as the recipient.
2. Add its address as a webhook in Cal.com for Booking Created.
3. Book a test meeting, then map the attendee’s name and the event’s title into the template.

### Map the fields

| Text Hook setting | Set it to                                                                                                     |
| ----------------- | ------------------------------------------------------------------------------------------------------------- |
| Recipient         | The field in Cal.com’s post that holds the person’s phone number, written as a path such as `{{body.phone}}`. |
| Text              | New booking: {{body.attendee_name}} for {{body.event_title}}.                                             |
| Metadata          | `source` set to `cal-com`. BlueBot adds the hook’s id by itself.                                              |

### Test it

Post a sample to the hook’s address with your own number in the phone field, as below. A text arrives on your phone, and the hook’s page lists the post.

```bash title="A test post shaped like Cal.com’s"
curl -X POST "https://usebluebot.com/h/YOUR_HOOK_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"phone":"+15555550123","attendee_name":"sample attendee name","event_title":"sample event title"}'
```

## 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)
- [Cal.com with BlueBot](https://usebluebot.com/integrations/cal-com) on the integrations page says what else the two do together.
