Book a sales demo when someone requests one
Each demo request creates a booking on your sales demo event type, with the prospect as attendee and their chosen slot as the start.
New Submission on your "Request a demo" form
Create a Cal.com booking on the "Sales demo" event type with the prospect as the attendee and their preferred time as the start
One-directional. A submission triggers the action — nothing is written back into your form.
A demo request is only useful once it has a time on it. This flow takes the qualification answers a prospect gives — company, size, the problem they want solved — and turns the same submission into a confirmed meeting on the rep's Sales demo event type.
Sales teams with more inbound than reps reach for this first, because the reply-and-negotiate step disappears. The prospect picks a slot inside the form, Cal.com sends its own confirmation, and the demo is on the host's calendar before anyone has read the response.
Setting it up
- 1
Start from the Demo Request Form template and add a date-and-time question for the slot the prospect wants; the stock template collects qualification detail but no time, and the Cal.com action needs a start.
- 2
Publish the form and put it behind your "Request a demo" button, so the form is the only route to the demo.
- 3
In Cal.com, open the Sales demo event type and check its duration, buffer and minimum notice — a request for a slot inside the notice window will be rejected.
- 4
Create the Zap on formformform's New Submission trigger, select the demo form, and pull a sample submission so every field label appears in the mapper.
- 5
Add the Cal.com booking action and choose the Sales demo event type and the rep or team that owns it.
- 6
Map First Name and Last Name into the attendee name and Work Email into the attendee email — Cal.com sends the confirmation there, so a typo becomes a silent no-show.
- 7
Map the slot answer into the booking start, and drop Company, Company Size and the problem question into the booking description so the rep opens the invite already briefed.
- 8
Test with a submission using a real slot, confirm the booking appears on the rep's calendar, then switch the Zap on.
What maps where
Using the Demo Request Form as the starting point. These are its real fields — swap in your own and the mapping works the same way.
| Form field | Cal.com |
|---|---|
| First Name | Attendee first name on the Cal.com booking |
| Last Name | Attendee surname, joined to the first name |
| Work Email | Attendee email — where Cal.com sends the confirmation and calendar invite |
| Company | Booking title, so the calendar entry reads "Sales demo — Acme" |
| Company Size | Booking description, above the problem statement |
| What problem are you trying to solve? | Booking description — the rep's prep note for the call |
Variations worth knowing
Add a Zapier filter on Company Size. Requests above your threshold continue to the enterprise account executive's event type, everything smaller books the standard Sales demo. Two Cal.com actions, one filter each, and the same demo form feeds both.
Switch the Sales demo event type to requires confirmation. The Zap still creates a booking from every submission, but it lands as pending until a rep accepts it, which keeps speculative requests off the calendar without writing a qualification filter.
If something isn't arriving
Cal.com reads the start in the event type's timezone. Set that timezone explicitly in the Cal.com action instead of relying on the Zapier account default, and use a Formatter step to send an ISO timestamp if the form returns a plain date and time.
The requested time sat outside the event type's availability, inside its minimum notice, or was already taken. Widen the hours on the Sales demo event type, or limit the form's slot question to the hours the rep actually works so nobody can ask for 6am.
Frequently asked questions
Can the form show the rep's real availability before someone picks a slot?
No. The connection runs one way — a submission triggers a booking in Cal.com, and formformform never reads your calendar. Limit the slot question to your working hours, or turn on requires confirmation so a clashing request arrives as pending rather than confirmed.
What happens if the prospect wants to reschedule?
They use the reschedule link in Cal.com's confirmation, and Cal.com takes it from there. Nothing is written back into the form, so the submission stays as a record of what the prospect first asked for and when they asked for it.
Do I need a paid Cal.com plan for this?
Zapier works with whichever Cal.com account you authorise, and formformform is free during early access. Which event types you can create — a personal one or a team round-robin — depends on your Cal.com plan, so confirm the event type exists before building the Zap.
Related automations
- Book a phone screen the moment a candidate applies
An application books a phone screen on the recruiter's event type, with the candidate as attendee and the role in the booking notes.
- Book an onboarding kickoff for every new account
A finished onboarding questionnaire books the kickoff call, with the account name and first-30-day goals in the booking description.
- Spread office-hours signups across your hosts
Each office-hours signup books the next available host on a round-robin event type, so nobody balances the rota by hand.
- Turn callback requests into on-call bookings
Every callback request becomes a Support call booking, with the issue in the notes and a real slot instead of a queue position.
- Turn qualified consultation requests into discovery calls
Consultation requests that clear your budget threshold book a discovery call, with the challenge and budget already in the notes.
- Add service appointments to the dispatch calendar
A booking arrives and lands on the dispatch calendar with the address as a map pin and the job in the title.
Build the form first
The automation needs somewhere to fire from. Publish a form, connect it once, and every submission from then on runs this flow.
Start free