How do I get a form lead into my CRM and onto a booked call?
Create the CRM contact from the form first, and send the lead to a booking link that carries that contact's email. Then match every booking on that one key before anything is written. A booking that matches nothing waits for a person, and a lead who filled in the form but never booked gets a follow-up.
You know the moment. A call shows up on the calendar, and the person taking it has never seen the lead's form answers, because the booking landed on a different contact from the one the form made. The other version is a lead who filled in the form, never booked, and was never chased.
The handoff
A lead crosses seven steps between your form and a booked call. Three tools touch it along the way, and each one decides for itself whether this is someone it already knows.
| Step | What does it | Where it breaks |
|---|---|---|
| Form submitted | Your site's form | The lead closes the tab before booking, and since the form did its job, nothing looks wrong. |
| Contact created | Your CRM, matching on the email | This is the contact the booking has to find later. If it has no owner here, Calendly's HubSpot connection won't give it one when the booking lands. |
| Booking link shown | The thank-you page, a follow-up email or a person | A plain link knows nothing about the form, so whatever email the lead types again is the one the booking carries. |
| Call booked | Calendly, Cal.com or HubSpot's meetings tool | Through Calendly's HubSpot connection, a booking email that isn't already in HubSpot becomes a new contact, and the meeting goes on that one. |
| Booking matched | The booking tool's CRM connection, or a small system in between | An existing contact gets the meeting, but answers to the booking questions stay in the activity and don't update the contact's own fields. |
| Rescheduled or canceled | The booking tool | In Calendly's own booking events, a reschedule arrives as a cancel plus a new booking, so a lead who moved the call can look lost. |
| Owner told | A CRM workflow, the booking tool or a person | If the host's Calendly email is different from their HubSpot email, the contact owner is marked unassigned, so nobody is named to take the call. |
Where it breaks
The common break is the second email. HubSpot keeps one contact per email, so a lead who books with another address turns into a second contact, and the meeting lands on that one. The contact with the form answers and the owner now looks like a lead who never booked.
Then there are bookings with no form behind them, from a forwarded link or an old email signature. By default, every meeting booked with anyone in your Calendly organization goes to HubSpot, so these arrive as a name and an email, with nothing to say where they came from or who should take the call.
Reschedules are where the reports go wrong. Calendly's HubSpot connection updates the meeting and puts a cancel in its title, which works fine for one person reading one record. A system that listens to Calendly's own booking events gets a reschedule as a cancel flagged as a reschedule plus a new booking. If it reads every cancel as a lost lead, it closes out someone who only moved the call. Cal.com sends a reschedule as its own event.
The gap nobody sees is the lead who fills in the form and never books. A contact with no meeting also looks like a lead in the few minutes before they book, so unless something checks for a booking after each form, nobody follows up.
The source-of-truth and dedupe rule
- The CRM contact is the record. It's created from the form first, and the booking attaches to it.
- The key is the email from the form, lowercased and trimmed. The booking page is pre-filled with that email where the tool allows it, and Calendly's embed does on every plan, so the booking comes back on the same key.
- Every booking is matched on that key before anything is written. A match updates the same contact with the meeting, its time and its status.
- A booking that matches nothing is held for a person. It never becomes a new contact on its own.
- A reschedule updates the booking it replaced. Only a cancel that isn't a reschedule changes where the lead stands.
- Each booking carries its own id, so the same booking sent twice does nothing the second time.
A forwarded link or a second device still brings in new addresses. I hold a booking that matches nothing because a new email is either a new lead or one you already have under another address, and only someone who knows the lead can tell which. Calendly's own HubSpot connection creates the contact itself, so holding first takes a small system in between, or a person checking the contacts that bookings created.
What stays human
Deciding that a booking under a new email belongs to a lead you already have stays with a person, and so does merging the two contacts. A cancel that isn't a reschedule goes to the contact's owner too, since only they know whether it's worth a call back.
The follow-up for a lead who never booked can be a standard reminder with the booking link, signed off once at setup, and that goes on its own. A reply the AI drafts for that lead waits until someone at your business approves it from their phone, and you choose who at setup.
What I'd pick, per situation
| If you | I'd pick |
|---|---|
| Use HubSpot as your CRM and one person takes the calls | HubSpot's own meetings tool. It's on every plan, the free tools include one scheduling page, and it can pre-fill the booking form with what HubSpot already knows about a returning contact. |
| Use HubSpot forms and Calendly on the Teams plan or above | Calendly's routing from HubSpot forms. The booking opens on the same page as soon as the form is sent, and Calendly adds or updates the contact and assigns an owner, which shortens the gap where a lead fills in the form and leaves. |
| Use Calendly on the Standard plan with HubSpot | The native HubSpot connection, with the booking page embedded on your site and pre-filled with the form's email, and a person checking the contacts that bookings created. |
| Are on Calendly's free plan | Calendly's free plan leaves out the HubSpot connection and webhooks, so Calendly itself sends nothing to the CRM. Move up a plan, use HubSpot's meetings tool, or look at Cal.com, whose free plan lists two-way HubSpot sync. |
| Take bookings from more than one place, or want the hold and the never-booked follow-up | A small system in between. It matches every booking on the form's email, holds what matches nothing, reads a reschedule as a reschedule, and checks for a booking after each form. |
Whatever sits in between, I'd have it keep a record of each run and alert a named person when a step fails, because a booking it drops is a call nobody prepares for.
Questions
Why does Calendly create a second contact in HubSpot?
Because the lead booked with an email HubSpot doesn't have, and Calendly's HubSpot connection creates a new contact for any booking email that isn't already there. Pre-filling the form's email on the booking page makes it less likely, and a check on the contacts that bookings create catches the rest.
Does a reschedule or a cancel update my CRM?
Calendly's HubSpot connection updates the meeting and marks a cancel in its title. A system of your own built on Calendly's booking events gets a reschedule as a flagged cancel plus a new booking, so check that flag before marking anyone as lost.
What happens to a lead who fills in the form but never books?
Usually nothing, because no tool is waiting for a booking that doesn't come. I'd add one check after each form: when no booking has matched that contact within the time you choose, a reminder with the booking link goes out and the owner is told. A Calendly routing form sends its own event whether the lead books or not, which is a clean place to start.
Will the booking tool assign an owner?
Calendly's HubSpot connection leaves the owner of an existing contact as it was, and the owner shows as unassigned when the host's Calendly email differs from their HubSpot email. Routing from HubSpot forms, on Calendly's Teams plan and above, does assign one.
Should I use HubSpot's meetings tool or Calendly?
If HubSpot is your CRM and one person takes the calls, the meetings tool keeps the booking inside HubSpot on any plan, though team scheduling pages need a Sales or Service seat. Calendly makes more sense when you already run it, or want its routing in front of a team.
- Calendly Help, Calendly and HubSpot: a booking email that isn't in HubSpot creates a new contact; an existing contact gets the meeting with its details and owner unchanged, and booking answers don't update its fields; a host whose Calendly email differs from their HubSpot email leaves the owner unassigned; cancels and reschedules update the meeting; every meeting in the organization syncs by defaultREAD
- Calendly pricing: custom webhooks and the HubSpot connection start on Standard, and the Free plan leaves them out; routing by HubSpot assignment starts on TeamsREAD
- Calendly Help, How to pre-fill invitee information in an embed: on all plans, the name, email and answers your site already collected can be pre-filledREAD
- Calendly Help, How to set up routing from HubSpot forms: Teams, Teams Plus and Enterprise; a lead who completes the HubSpot form is sent to the right booking pageREAD
- Calendly Help, Routing from HubSpot FAQs: Calendly adds or updates the contact and assigns an owner, and the booking options open on the same pageREAD
- Calendly developer docs, Create a webhook subscription: separate events for a booking and a cancel, and a routing form event that fires whether the lead books or notREAD
- Calendly developer docs, Webhook payloads for rescheduled events: a reschedule sends a cancel flagged as rescheduled and a new bookingREAD
- Cal.com pricing: the Free plan lists two-way Salesforce and HubSpot sync, and routing forms start on TeamsREAD
- Cal.com docs, Webhooks: separate triggers for a booking created, rescheduled and cancelledREAD
- HubSpot Knowledge Base, Create scheduling pages with the meetings tool: all plans; the free tools get a single one-on-one scheduling page; team pages need a Sales or Service seat; booking fields can pre-fill with known values for a returning contactREAD
- HubSpot Knowledge Base, Deduplicate records: contacts are deduplicated on the emailREAD
Related
- How do I stop website form duplicates in HubSpot?Where the handoff from your website form to HubSpot makes duplicates or loses leads, which field is the key, what stays with a person, and what I'd pick.
- Dedupe keyA dedupe key is the field a system uses to decide two records are the same person or company. Which key to pick, an example, and what goes wrong without one.
- Speed to leadSpeed to lead is the time between a lead reaching you and a real reply going back. Why it matters, an example, and how a system shortens it.
- WebhookA webhook is a message one app sends another the moment something happens. What that means in plain English, how it fails, and how a system catches it.
- The lead-response bottleneck: how fast to answer a new leadHow fast to answer a new lead, why a slow reply hands the decision to someone else, and a system that drafts from your rules for a person to approve.
- The four places a lead diesLeads drain out of a pipeline in four places: never recorded, never answered, never followed up and never closed out. How to count each one this week.
- Website form leads, scored and answered with a reply I approveA system I built: each website form lead is checked, added to HubSpot once and scored. Gmail sends the drafted reply when I approve it in Telegram.
- What do slow replies to leads cost you?Multiply your leads, the value of a won client, your close rate and your own estimate of leads lost to slow replies to see the revenue at risk.