---
ref: workflow:inbound-lead-to-meeting
title: Turn qualified inbound leads into booked meetings
author: Shahzaib0217
tools: [tool:typeform/retrieve-responses, tool:apollo/enrich-person, tool:apollo/enrich-company, tool:bridge/list-booking-pages, tool:bridge/create-booking-page, tool:bridge/find-free-time, tool:google/create-draft]
tags: [capability:book-meetings, capability:collect-responses, capability:enrich-companies, capability:enrich-contacts, capability:send-email, channel:email, motion:inbound]
updated: 2026-10-28
---

# Turn qualified inbound leads into booked meetings

Reads new form leads, enriches and qualifies them, and drafts a personal reply with a Bridge booking link and open times for each good fit.

Set up the tools below, then run the steps in order for the user, carrying each step's results into the next. The run is done when the user has the outcome below.

## Outcome

- A table of every lead since the last run, with role, company, size, a fit verdict and the reason.
- A Bridge booking page for sales calls, created if you did not have one.
- A Gmail draft for each qualified lead, with a personal note, the booking link and three open times.

## Inputs

Ask the user for these before you start.

- `form`: the Typeform form that collects leads, by name, e.g. Contact sales
- `since`: when the last run happened, e.g. 2026-10-16
- `ideal_customer`: a sentence on who fits, e.g. B2B companies with 50 to 1,000 employees and a sales team
- `booking_page`: the booking page for these calls, by name, e.g. Intro call
- `max_lookups`: the most leads to enrich in one run, e.g. 50

## Set up

### Retrieve responses (Typeform, tool:typeform/retrieve-responses)

Use the API.

- Base URL: https://api.typeform.com
- Endpoint: `GET /forms/{form_id}/responses`
- Auth: send the header `Authorization: Bearer $TYPEFORM_API_KEY`
- Get a key: https://admin.typeform.com/user/tokens

Note: Forms with more than 1,000 responses need narrower `since` and `until` ranges or the `before` and `after` cursors. Responses from the last 30 minutes or so may be missing: use a webhook for real-time leads.

### Apollo (tool:apollo/enrich-person, tool:apollo/enrich-company)

Use the first option your agent supports.

Notes:

- Enrich a person: A match costs 1 credit, plus 8 for a mobile phone; no match costs nothing. Personal emails and phone numbers are off unless you set `reveal_personal_emails` or `reveal_phone_number`, and phone numbers arrive later at a `webhook_url`.
- Enrich a company: Costs 1 credit per company. To enrich up to 10 companies in one call, use bulk organization enrichment instead.

#### MCP (official, remote)

Add this server to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "apollo": { "url": "https://mcp.apollo.io/mcp" } } }
```

- Enrich a person: call the MCP tool `apollo_people_match`
- Enrich a company: call the MCP tool `apollo_organizations_enrich`

#### CLI (official)

Install the command and sign in with it, then confirm it runs.

```sh
brew install apolloio/apollo-io-cli/apollo-io-cli
apollo --version
```

- Enrich a person: run `apollo people enrich`
- Enrich a company: run `apollo companies enrich`

### Bridge (tool:bridge/list-booking-pages, tool:bridge/create-booking-page, tool:bridge/find-free-time)

Use the MCP server. Add it to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "bridge": { "url": "https://api.meetonbridge.com/mcp" } } }
```

- List booking pages: call the MCP tool `list_booking_pages`
- Create a booking page: call the MCP tool `create_booking_page`
- Find free time: call the MCP tool `find_free_time`

Note: Needs a paid Bridge plan (Professional or above); not on the free Starter plan or a trial. At sign-in the user grants read, or read and write, access. Call get_bridge_context first for the tools the plan and connection allow.

Notes:

- Create a booking page: Starts inactive unless `status` is `active`, which fails until every host has a calendar connected. Use `addQuestions` to keep the default Notes question; `questions` replaces the whole form.
- Find free time: Range is at most 31 days; returns 20 slots unless `maxResults` (up to 100) is set. Without `page`, slots fall Mon to Fri 9:00 to 17:00 unless `workingHours` is passed. With `page`, returns the slots `book_meeting` accepts; an inactive page has none.

### Create a draft (Google, tool:google/create-draft)

Use the MCP server. Add it to your agent's MCP settings, then sign in when asked.

```json
{ "mcpServers": { "google": { "url": "https://gmailmcp.googleapis.com/mcp/v1" } } }
```

Call the MCP tool `create_draft`.

Note: A Developer Preview, open only to Google Workspace accounts in the Workspace Developer Preview Program.

Before step 1, confirm access to each service with its cheapest read-only call, like a list or a search. Never send or change anything to test access.

## Steps

1. **Pull new leads** with Retrieve responses (Typeform). Get `form`'s responses submitted since `since`. Keep each lead's name, email, company and answers.
2. **Look them up** with Enrich a person (Apollo). Match up to `max_lookups` leads on their email. Keep title, seniority, employer and employer website; mark anyone without a match.
3. **Size the company** with Enrich a company (Apollo). For each employer website, keep industry and employee count.
4. **Qualify** yourself. Compare each lead with `ideal_customer` and their answers. Mark each as fit, maybe or not a fit, with a one-line reason, and show the table to the user.
5. **Find the booking page** with List booking pages (Bridge). Match `booking_page` to an active page. Keep its id and public link. If none matches, go to step 6; otherwise skip it.
6. **Create the page** with Create a booking page (Bridge). After the user agrees, create `booking_page` as a 30-minute page with status active. Keep its id and public link.
7. **Find open times** with Find free time (Bridge). Get the page's bookable slots for the next seven days, with `page` set to its id and `maxResults` set to 100. Keep three slots on different days.
8. **Write the replies** yourself. For each fit lead, draft a short reply that answers what they asked in the form, offers the three times in the lead's time zone when the form or Apollo gives one, otherwise in yours with the zone named, and links the booking page. The slot labels are in your time zone, so convert from their UTC start. Show the drafts to the user.
9. **Save the drafts** with Create a draft (Google). Create one Gmail draft per approved reply, addressed to the lead.

## Notes

Typeform is the lead source here; any form, CRM list or inbound inbox works if it gives a name, email and company. To book the meeting for a lead who already chose a time, use `bridge/book-meeting` with a slot from step 7.

Run it daily with `since` set to the previous run. Personal emails rarely match in Apollo; qualify those leads from their answers.

## Rules

- Use only the services set up above. The read-only calls they need, like listing ids or polling for results, are fine.
- Ask the user before anything that sends messages, costs money, or changes data, and say how many records it touches. One approval covers a batch the user has seen.
- Never print API keys.
