Qualify Tally demo requests in HubSpot and Slack

Every new Tally form submission gets enriched, scored against your ICP, added to HubSpot, and posted to the right Slack channel.

Agentic Task
TallyHubSpotSlack BotSalesOperationsLead EnrichmentNotifications & AlertsData Sync

Build an agent workflow that triages new submissions on my Tally demo-request / contact form. When a submission arrives, the agent should enrich the lead, score it against my ICP, sync it to HubSpot, and post a summary into the right Slack channel.

Trigger: a Tally webhook on the form. (I will paste the form ID / form URL when I configure it.) Treat the webhook payload as the entry point, and use Tally's Get Submission to pull the full submission with all question and answer fields if any field is missing or truncated in the webhook body.

Step 1 - Read the submission. Parse the answers into a clean structure: name, work email, company name, company website, job title, team size / use case / budget / timeline / anything else the form asks. Keep the raw submission ID and the form ID so we can link back.

Step 2 - Enrich with a quick web pass. Using the company name and website, find: what the company does in one sentence, rough employee headcount band, industry / vertical, the buyer's likely role seniority, and anything notable (recent funding, hiring signals, public customer logos). Cap this at a short paragraph - this is decision support, not a research report.

Step 3 - Score against this ICP (edit before running):

ICP: [describe your ideal customer here - e.g. B2B SaaS companies, 50-500 employees, in North America or EU, buyer is a Head of RevOps / Sales Ops / GTM Eng, current pain is messy lead handoff or manual CRM updates. Disqualifiers: students, agencies pitching us, single-person shops, free-email-only signups with no company].

Output a verdict of qualified / nurture / disqualified, plus 1-3 sentences of reasoning that quote the specific form answers and enrichment facts that drove the call.

Step 4 - Sync to HubSpot. First use HubSpot Search Contacts (or Get Contact by email) to see if the person already exists. If they do, use Update Contact to refresh name, company, job title, lifecycle stage, and a 'Last Tally submission' note with the verdict and reasoning. If they don't, use Create Contact with email, first/last name, company, job title, lifecycle stage = 'lead' (or 'marketingqualifiedlead' if qualified), lead source = 'Tally - [form name]', and the same note. Always store the verdict so we can filter on it later.

Step 5 - If the verdict is qualified, use HubSpot Create Deal. Put it in the [pipeline name] pipeline at the [stage name] stage (default: New Business pipeline, Appointment Scheduled or equivalent first stage). Name the deal '[Company] - inbound demo request'. Associate it with the contact (and the company record if HubSpot auto-creates one). If the form captures budget or timeline, pass those through as deal amount / close date estimate. Do NOT create a deal for nurture or disqualified leads.

Step 6 - Post to Slack using the Slack Bot Send a Message action.

For qualified leads, post to #sales-qualified (or whichever channel I name) with: a one-line headline ('New qualified demo request: [Name] at [Company]'), the verdict + reasoning, the enrichment summary, the 3-5 most important form answers, and links to the HubSpot contact and the HubSpot deal.

For nurture leads, post a shorter message to #sales-nurture with: headline ('New low-fit submission: [Name] at [Company]'), the verdict + one-line reason, the form answers, and a link to the HubSpot contact only (no deal). For disqualified leads, also post to #sales-nurture but mark them clearly so the team can ignore most of them at a glance.

Formatting: Slack messages should be scannable in 5 seconds - use bold for the headline, bullet the key answers, and put long enrichment text behind a 'Show more' style collapse if it would crowd the channel. Use Slack's mrkdwn (single asterisks for bold, <url|text> for links), not standard Markdown.

Edge cases: if the email is missing or obviously fake, still create the contact with whatever data exists but mark the verdict 'disqualified - bad data' and post to the nurture channel. If HubSpot returns a duplicate or validation error, log it in the Slack message so I know to fix it. Never silently drop a submission.

Additional information

What does this prompt do?
  • Picks up every new submission from your Tally demo or contact form the moment it lands.
  • Looks up public info on the company so you know who they are before you open HubSpot.
  • Scores each lead against the ideal customer profile you describe in plain English.
  • Creates or updates the contact in HubSpot, and opens a deal in the right pipeline when the lead looks qualified.
  • Posts a quick summary to your sales Slack channel for hot leads, and a separate nurture channel for low-fit ones so reps only see real buyers.
What do I need to use this?
  • A Tally account with a demo-request or contact form you want to triage.
  • A HubSpot account where new contacts and deals should land, plus the pipeline you want deals to go into.
  • A Slack workspace with one channel for qualified leads and a second channel for nurture.
  • A short description of your ideal customer: industry, company size, buyer role, and any disqualifiers.
How can I customize it?
  • Rewrite the ICP block to match the customers you actually close, including any deal-breakers like geography or company size.
  • Point each lead at a different HubSpot pipeline, stage, or deal owner, and add custom contact properties like utm source or campaign.
  • Swap the qualified and nurture Slack channels, change the message format, or post into a thread under an existing lead alert.
  • Change the qualification bar so more or fewer leads cross over into a deal, or add a middle 'review' tier that pings a sales lead for a human call.

Frequently asked questions

Do I need a paid Tally plan to use this?
No. Tally's free plan can send out new form responses, which is all this workflow needs to get triggered.
What happens if the same person submits the form twice?
We look them up in HubSpot by email first. If they already exist, we update the existing contact instead of creating a duplicate, and we add a note about the new submission.
Will every lead get a HubSpot deal?
No. Only leads that clear the qualification bar you describe get a deal. Low-fit leads still get logged as contacts so sales has a paper trail, but they skip the deal and go to the nurture channel.
Can I tune the qualification rules later?
Yes. The ICP and scoring logic live inside the prompt, so you can edit the criteria, change what counts as qualified, or add new rules without rebuilding the workflow.
Does this work with HubSpot Free?
Yes. Creating contacts and deals works on any HubSpot tier, including Free. You will not be able to use Sales Hub features like custom deal pipelines on Free, but the default pipeline works fine.

Stop manually triaging demo requests.

Connect Tally, HubSpot, and Slack once, and Geni qualifies every new submission the moment it arrives.