> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesfinity.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Call people who book a demo

> When someone books a meeting in Calendly, Chili Piper, HubSpot Meetings or a similar tool, a rep calls to confirm the time and qualify them before the meeting.

Someone books a demo. A short call soon after confirms the time, checks they're a fit, and gives
your rep a head start before the meeting. Send each booking to Salesfinity with a tag, and the rep
dialing your bookings list calls them next, with the meeting time in the notes.

## When to use it

* People book meetings with your team in Calendly, Chili Piper, HubSpot Meetings or a similar
  scheduling tool.
* Someone on your team, often an SDR, confirms and qualifies bookings before the meeting.

## What you need

* A list the rep dials, its `_id`, and an API key. See
  [Before you start](https://docs.salesfinity.ai/workflows/overview.md#before-you-start).
* A **phone number question** on the booking page, preferably required.
* Zapier or Make, or your scheduling tool's own webhooks with a small piece of code.

## Set it up

**1. Ask for a phone number on the booking page**

Add a required phone question to the event or meeting type, and say why: *"We'll call to
confirm your time."*

**2. Catch each new booking**

| Scheduling tool | Trigger |
| - | - |
| Calendly | Zapier: **Calendly** → **Invitee Created or Rescheduled**. Make: **Calendly** → **Watch events**, then a filter that keeps created events only. Both need a Calendly Standard plan or higher. |
| Chili Piper | Zapier: **Chili Piper** → **Meeting Created**. |
| HubSpot Meetings | Zapier: **HubSpot** → **New Contact Property Change**, on the property **Date of last meeting booked in meetings tool**. |
| Something else | Your tool's trigger for a new booking, in Zapier or Make. |

Pick only the event types that should get a call, such as your demo, not internal meetings.

> [!TIP]
>
> On HubSpot with **Data Hub Professional or Enterprise**, a workflow can do it without
> Zapier: the **Meeting booked** trigger and a **Custom code** action, as in
> [New leads in your CRM](https://docs.salesfinity.ai/workflows/crm-new-leads.md#hubspot). That trigger also fires for
> meetings reps log or schedule from a record, so test that it catches only the bookings you
> want.

**3. Write the meeting time in the rep's words**

The booking arrives with a raw date and time. In Zapier, add **Formatter** → **Date / Time** →
**Format**, with a format such as *Thu 30 Oct, 10:00 AM* and the rep's time zone in **To
Timezone**. Then write it into `notes` with the time zone, for example *Booked: Demo, Thu 30 Oct,
10:00 AM ET*.

**4. Format the phone number**

Add **Formatter** → **Numbers** → **Format Phone Number**, with the E.164 format
(`+17205550148`).

**5. Send the booking to Salesfinity**

Use the tag `"Booked a call"`. Put the meeting time, the event type, the host and the booking
answers in `notes`.

## What to send

| Field | From the booking |
| - | - |
| `first_name`, `last_name` | The invitee's name |
| `email` | The invitee's email |
| `company`, `title` | From the booking questions, if you ask |
| `phone_numbers` | `[{ "type": "mobile", "number": "+17205550148" }]` |
| `notes` | *Booked: Demo, Thu 30 Oct, 10:00 AM ET, with Sam. "We want to cut no-shows." Call to confirm and qualify.* At most 2,000 characters. |
| `tag` | `"Booked a call"` |

```bash cURL theme={"system"}
curl https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID \
  --request POST \
  --header 'x-api-key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
    "first_name": "Alex",
    "last_name": "Moreno",
    "email": "alex.moreno@quarryline.com",
    "company": "Quarryline",
    "phone_numbers": [{ "type": "mobile", "number": "+15125550163" }],
    "notes": "Booked: Demo, Thu 30 Oct, 10:00 AM ET, with Sam. Call to confirm and qualify.",
    "tag": "Booked a call"
  }'
```

```text Zapier theme={"system"}
1. Trigger: Calendly → Invitee Created or Rescheduled, Chili Piper →
   Meeting Created, or your scheduling tool's trigger for a new booking.
2. Filter by Zapier: only the event types that should get a call.
3. Formatter → Date / Time → Format: the start time, in the rep's
   time zone.
4. Formatter → Numbers → Format Phone Number, to E.164.
5. Action: Webhooks by Zapier → Custom Request
   Method:  POST
   URL:     https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID
   Headers: x-api-key     YOUR_API_KEY
            Content-Type  application/json
   Data:    the JSON from the cURL tab, with the booking's fields
            mapped into it, and "tag": "Booked a call".
```

```text Make theme={"system"}
1. Trigger: Calendly → Watch events, or your scheduling tool's module
   for new bookings.
2. Filter: only new bookings (not cancellations), and only the event
   types that should get a call.
3. Action: HTTP → Make a request
   URL:               https://client-api.salesfinity.co/v1/contact-lists/YOUR_LIST_ID
   Method:            POST
   Headers:           x-api-key = YOUR_API_KEY
   Body content type: application/JSON
   Body input method: JSON string
   Body:              the JSON from the cURL tab, with the booking's
                      fields and the formatted start time mapped into
                      it, and your tag.
```

## Test it

1. Start dialing the list, with your phone ready.
2. Book a meeting on your own booking page, with your own name, email and mobile number.
3. Check that the notification shows, that **Next up** shows your name, and that your phone rings
   once the current call is logged. The notes should show the meeting time in the rep's time zone.
4. Cancel the test booking.

## Good to know

* **Who makes the call.** If an SDR confirms every booking, send them all to the SDR's list. If
  each host calls their own bookings, give each host a list and send each booking to the host's,
  for example with a **Formatter** → **Utilities** → **Lookup Table** step from host email to list
  ID.
* **Booking answers with quotes or line breaks.** In a Zapier **Custom Request**, they break the
  JSON and the API answers `400`. Clean them first, as in
  [Clean up the reply text](https://docs.salesfinity.ai/workflows/outreach-replies.md#clean-up-the-reply-text).
* **Meetings that start soon.** A booking for the next half hour doesn't need a confirmation
  call. Add a filter on the start time if your reps would rather skip those.
* **Cancellations.** A cancelled booking doesn't take the person off the list. The rep sees the
  booking in the notes, so tell reps to check the calendar before they confirm.
* **Reschedules.** A reschedule can arrive as a new booking: Calendly's Zapier trigger fires for
  both. If the person is still on the list,
  they move to the top again and take the tag, but keep the notes from their first booking. So the
  old meeting time still shows. Tell reps to check the calendar, or remove the old contact first.

For errors and what the rep sees, see
[Troubleshooting](https://docs.salesfinity.ai/dialer/speed-to-lead.md#troubleshooting) in the speed-to-lead guide.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.