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.

Agentic Task
Cal.comApolloSalesforceSlackSalesOperationsLead EnrichmentMeeting WorkflowsNotifications & Alerts

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?
The workflow keeps going. It still creates the Salesforce lead from the Cal.com booking data and sends the Slack brief, just without the enrichment fields. You won't get a failed run.
Will it create duplicate leads if the same person books twice?
No. The Salesforce step is an upsert keyed on email, so a second booking from the same person updates the existing lead or contact instead of creating a new record.
Does it work if our team uses Salesforce contacts instead of leads?
Yes. If a contact already exists for the invitee's email, the workflow updates that contact and links the prep task to it. New people land as leads.
Can the Slack message go to a channel instead of a DM?
Yes. After the prompt creates the workflow, edit the Slack step to post to your sales channel (or both the channel and the rep's DM) instead of a direct message.
How quickly does it run after a booking?
Cal.com bookings are picked up on a short polling cycle, so the Salesforce record and Slack DM typically land within a few minutes of the meeting being booked.

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.