Triage Calendly routing form leads to HubSpot and Slack

Score new Calendly routing form submissions against your ICP every 15 minutes, log them in HubSpot, and ping sales in Slack.

Agentic Task
CalendlyHubSpotSlackSalesOperationsLead EnrichmentNotifications & AlertsData Sync
PromptCreate

Build me an agent workflow that triages new Calendly routing form submissions every 15 minutes and routes qualified leads to sales while logging them in HubSpot.

Trigger: cron, every 15 minutes. Calendly is not a poll provider, so use a state file (or equivalent dedupe memory) keyed on submission ID and last-run timestamp so the same submission is never processed twice across runs.

On each run, in Calendly: call List Routing Forms to discover the active forms (or use a fixed form UUID I configure), then call List Routing Form Submissions filtered to submissions created since the last successful run. For each new submission, call Get Routing Form Submission to fetch the full questions and answers.

For each submission, the agent should read the Q and A pairs and score the lead against ICP rules I will provide in the prompt config. The ICP rules cover: company size, role / seniority, and use case fit. The agent decides exactly one of three labels: hot lead, nurture, or disqualify. It should also produce a one-line rationale ("why this is hot" or "why this is disqualified") grounded in the actual answers.

For hot and nurture leads: in HubSpot, call Batch Upsert Contacts using email as the unique property. Set lifecycle stage (e.g. "marketingqualifiedlead" for hot, "lead" for nurture, configurable) and a numeric lead_score property. Stamp any additional context from the routing form into standard or custom contact properties as available (company, jobtitle, use_case, etc.).

For hot leads: post a structured Slack message via Send a Message to a sales channel I configure. The message should include the prospect's name, email, company, the routed answers, the recommended account owner (based on owner rules I'll describe in plain English, e.g. round robin or territory), and the one-line "why this is hot" rationale. Format it cleanly with sections so a rep can act in seconds.

For disqualified leads: post a shorter Slack message to a separate triage channel with the prospect's email, the form they filled out, and the disqualification reason. Do not upsert disqualified leads into HubSpot.

Inputs I want to configure: Calendly routing form UUID(s) (or "all"), ICP rules in plain English, account owner rules in plain English, HubSpot lifecycle stage names per label, Slack sales channel, Slack triage channel, and the polling cadence.

Reliability: be conservative on errors. If the LLM cannot confidently classify a submission, default to nurture (not disqualify). If HubSpot upsert fails, still post to Slack. Log each run's processed submission IDs to the state file so retries don't double-post.

What does this prompt do?

  • Checks Calendly every 15 minutes for new routing form submissions and reads each visitor's answers.
  • Scores every lead against your ideal customer profile and labels it as a hot lead, a nurture lead, or disqualified.
  • Adds hot and nurture leads to HubSpot with a lifecycle stage and lead score so your CRM stays clean.
  • Posts hot leads to a sales Slack channel with a one-line reason and a suggested account owner, and quietly logs disqualifications in a separate triage channel.

What do I need to use this?

  • A Calendly account with at least one routing form collecting answers from inbound prospects.
  • A HubSpot account where you want new contacts and lifecycle stages updated.
  • A Slack workspace with a channel for sales alerts and a separate channel for triage notes.
  • Your ICP rules in plain English, covering company size, role, and use case fit.

How can I customize it?

  • Adjust the ICP rules so what counts as a hot, nurture, or disqualified lead matches how your team actually sells.
  • Change the Slack channels, mention your sales team, or pick a different account owner rotation for hot leads.
  • Tune the lead score range, lifecycle stage names, or any extra HubSpot properties you want stamped on each contact.
  • Speed up or slow down the cadence if 15 minutes is too aggressive or not fast enough for your inbound volume.

FAQs

Do I need a paid HubSpot plan for this to work?
No. As long as you can sign in to HubSpot and create or update contacts, this works on free and paid plans. Lead score and lifecycle stage are standard contact properties.
What if a lead fills out the same routing form twice?
The agent keeps a small memory of submissions it has already processed, so the same response will not be re-routed or re-posted to Slack on the next run.
Can I use this if I do not have routing forms set up yet?
You will need at least one Calendly routing form collecting the answers you want to score on, like company size, role, and use case. Once that exists, point this prompt at it.
How do hot leads get assigned to a rep?
You describe your account owner rules in plain English (by territory, segment, round robin, etc.) and the agent suggests an owner inside the Slack message so a human can confirm before assignment.
Will disqualified leads still show up in HubSpot?
By default no. Disqualifications are logged in a separate Slack channel for visibility, and only hot and nurture leads are upserted into HubSpot. You can change this in the prompt if you want a record of everyone.

Related templates

Auto-fix your calendar when a flight slips, and flag what's at risk

When your flight moves, your calendar times get corrected automatically and you get a Slack note naming the meetings you're about to miss.

Google Calendar
AviationStack
Slack
Agentic Task
Trace phishing emails to the sending IP and report abuse

Every 15 minutes, forwarded phishing reports get traced back to the server that really sent them, with a verdict in Slack and the worst senders reported.

AbuseIPDB
Gmail
Slack
Agentic Task
Log Agorapulse social conversations to HubSpot contacts

Twice every weekday, the conversations from your social inbox land on the right HubSpot contact timelines, with a Slack recap for sales.

Agorapulse
HubSpot
Slack Bot
Agentic Task
Turn procurement portal tenders into CRM deals each morning

Every weekday at 7am, sign in to the tender portals you track, filter new notices against your bid criteria, and open a deal for the ones worth chasing.

Anchor Browser
Google Sheets
HubSpot
+1
Agentic Task
Clean up HubSpot contacts from your Amazon SES suppression list

Every morning, find the addresses that hard bounced or filed a spam complaint, update the matching HubSpot contacts, and post a short Slack recap.

Amazon SES
HubSpot
Slack Bot
Agentic Task
Provision customer entitlements in DynamoDB when a deal is won

When a HubSpot deal hits Closed Won, the customer's plan, seats and renewal dates land in your DynamoDB accounts table, with a Slack note showing what changed.

HubSpot
Amazon DynamoDB
Slack Bot
Agentic Task

Stop letting inbound leads sit while sales sleeps.

Connect Calendly, HubSpot, and Slack once, and Geni will triage every new routing form submission within 15 minutes.