Turn new Cal.com bookings into enriched Salesforce leads with a Slack brief
When someone books on Cal.com, enrich them with Apollo, upsert a Salesforce lead with full firmographics, file a prep task on the rep, and DM the brief to Slack.
Whenever a new booking is created in Cal.com, run an agent that turns the invitee into a fully enriched Salesforce record and briefs the assigned rep in Slack. Trigger: poll Cal.com for new_booking events.
Step 1: Enrich the invitee with Apollo. Use Apollo People Enrichment with the invitee's email (and name + company domain as fallbacks) to pull their title, seniority, LinkedIn URL, and current employer. Then take the email domain and call Apollo Organization Enrichment to pull industry, employee count, estimated revenue, headquarters, technologies, and recent funding. If People Enrichment returns no match, skip enrichment cleanly: continue the run with only the data Cal.com provided and note that enrichment was unavailable. Do not fail the workflow.
Step 2: Upsert into Salesforce. Use Salesforce Create or Update Lead (Upsert), keyed on Email, to create or update the lead. Populate FirstName, LastName, Email, Company, Title, Industry, NumberOfEmployees, Website, LinkedIn URL (custom field if present), LeadSource = 'Cal.com Booking', and a Description that includes the meeting type and booking time. If a Salesforce contact already exists for this email, update that contact via Create or Update Contact (Upsert) instead of creating a duplicate lead.
Step 3: Create a Salesforce prep task. Use Salesforce Create Task assigned to the meeting host (look up the OwnerId by matching the Cal.com host email to a Salesforce User). Subject: 'Prep for Cal.com meeting with {{invitee name}} ({{company}})'. Set the ActivityDate to the day of the booking, Priority to Normal, Status to Not Started, and link WhoId to the upserted lead or contact. Put the one-line 'why this prospect matters' summary in the task Description, plus the meeting time and any notes the invitee provided when booking.
Step 4: DM the rep on Slack. Open a direct message conversation with the meeting host (resolve their Slack user from their email) and send a short message containing: invitee name, title, company, the booking time in the rep's local timezone, the meeting type, the LinkedIn URL, and a single-sentence 'why this prospect matters' summary you generate from the firmographic data (industry, size, recent funding, technologies). Keep it tight and skimmable, not a wall of text.
Behavior notes: be idempotent so the same booking does not create duplicate Salesforce records or duplicate Slack messages on retries. If the invitee email is missing or clearly personal (gmail, yahoo, outlook), still upsert the lead but skip Organization Enrichment and say so in the Slack DM. Never block the rest of the workflow on a single failed enrichment call.
Additional information
What does this prompt do?
- Watches Cal.com for new bookings and reacts within minutes of a meeting being booked.
- Looks up the invitee in Apollo to pull their title, seniority, LinkedIn, plus their company's industry, size, and funding.
- Creates or updates a matching Salesforce lead or contact with all the firmographics filled in, no copy-paste required.
- Files a Salesforce prep task on the meeting owner and DMs them a one-glance brief in Slack with the booking time and why this prospect matters.
What do I need to use this?
- A Cal.com account where your team takes inbound bookings.
- An Apollo account with enrichment credits available.
- A Salesforce login with permission to create and update leads, contacts, and tasks.
- A Slack workspace where reps can receive a direct message from the workflow.
How can I customize it?
- Choose whether new invitees become Salesforce leads, contacts, or both depending on whether they already exist.
- Tweak which fields get populated, like adding lead source values, custom fields, or the LinkedIn URL field your team uses.
- Change the Slack brief tone, length, and which firmographic signals (industry, size, funding, tech stack) feed the 'why this matters' line.
- Skip enrichment for personal email domains, or only run the workflow for specific Cal.com event types like demos.
Frequently asked questions
What happens if Apollo can't find the person?
Will it create duplicate leads if the same person books twice?
Does it work if our team uses Salesforce contacts instead of leads?
Can the Slack message go to a channel instead of a DM?
How quickly does it run after a booking?
Stop manually researching every Cal.com booking.
Connect Cal.com, Apollo, Salesforce, and Slack once, and Geni handles enrichment, CRM hygiene, and rep prep for every new booking.