Score new Cognito Forms leads into HubSpot and Slack

Every 30 minutes, new Cognito Forms submissions get researched, scored against your ICP, deduped into HubSpot, and routed to your sales channel in Slack.

Agentic Task
Cognito FormsHubSpotSlack BotSalesOperationsLead EnrichmentNotifications & Alerts

Build me an agent workflow that runs every 30 minutes and turns new Cognito Forms lead submissions into scored, deduped HubSpot contacts plus a routing alert in our sales Slack channel.

Trigger: cron, every 30 minutes. Cognito Forms is not in pollProviders, so use cron plus the Cognito Forms List Entries operation as the polling fallback. Persist a high-water mark between runs (last seen entry Id or DateSubmitted timestamp) and only process entries that arrived after it. Use skip/top pagination if the first page is full.

Inputs the user should configure when they install this:

1) The Cognito Forms form name or numeric Id for the lead capture form. 2) The HubSpot contact owner or routing list. 3) The target Slack channel for routing alerts. 4) An ICP description in plain English: target industries, headcount range, geography, and any disqualifiers. 5) A block list of email domains to skip, defaulting to common free providers (gmail.com, yahoo.com, outlook.com, hotmail.com, icloud.com, aol.com, proton.me) plus any competitor domains the user adds.

For each new entry from Cognito Forms:

Step 1: Parse the entry into name, work email, company (if present), role/title (if present), and any free-text question fields. If the email domain is on the skip list, drop the lead and move on; do not write it to HubSpot or Slack.

Step 2: Do light web research on the person and the company. Use the email domain to infer the company website, then summarize what the company does in one or two sentences, estimate headcount range and primary industry, and confirm the person's role if their title was not provided. Keep research scoped and brief; this is a quick triage, not a deep dossier.

Step 3: Score fit against the ICP. Output a band (hot, warm, cold) and a one-sentence reason. Hot = clear ICP match on industry, size, and geography. Warm = partial match or unclear on one axis. Cold = clear mismatch but not blocked. Also produce a recommended next step (e.g. book a demo, send a tailored intro email, nurture sequence, disqualify).

Step 4: Upsert the contact in HubSpot using Batch Upsert Contacts with email as the idProperty so duplicates merge cleanly. Set firstname, lastname, email, company, jobtitle, and a custom property for lead source = 'Cognito Forms' if it exists; do not invent custom properties that aren't already on the contact schema.

Step 5: Attach a HubSpot note via Create Note, associated to the contact id returned from the upsert. The note body should include: the original form responses (or a link/summary), the research summary, the fit score band, the one-sentence reason, and the recommended next step. Use plain HTML in hs_note_body.

Step 6: Post a short, routing-ready message in the configured Slack channel via the Slack Bot Send a Message operation. Format the message in Slack mrkdwn with: the lead's name and email, company and role, the fit score band as a visible badge (use an emoji like :fire: hot, :sun_with_face: warm, :snowflake: cold), the one-sentence reason, the recommended next step, and a link to the HubSpot contact record. Keep it to about five short lines so reps can scan and claim it.

Operations to use: cognito-forms List Entries; hubspot Batch Upsert Contacts and Create Note; slackbot Send a Message. Do not invent operations.

Reliability: if HubSpot or Slack fails for a specific lead, log the failure and continue with the next lead so one bad record does not block the batch. Only advance the high-water mark for leads that were successfully processed end to end (or intentionally skipped by the block list).

Why an agent and not a fixed pipeline: the company research, ICP scoring, and recommended next step are open-ended judgement calls that change per lead. The deterministic parts (poll the form, upsert in HubSpot, post in Slack) are tools the agent calls, not a hard-coded sequence.

Additional information

What does this prompt do?
  • Checks your Cognito Forms lead capture form every 30 minutes and picks up only submissions that arrived since the last run.
  • Does light web research on the person's company and role, then scores fit against your ICP and labels each lead hot, warm, or cold.
  • Upserts the contact in HubSpot matched by email so duplicates merge into one record, then attaches a note with the research summary and score.
  • Posts a short, routing-ready alert in your Slack sales channel with the company, role, score band, and the recommended next step.
  • Skips leads from free email domains and your competitor block list so your sales team only sees real opportunities.
What do I need to use this?
  • A paid Cognito Forms plan with a lead capture form already collecting submissions.
  • A HubSpot login with permission to read and write contacts and notes.
  • A Slack workspace and a sales channel where the routing alerts should land.
  • A one-paragraph description of your ideal customer (industry, company size, geography) and a list of domains to skip.
How can I customize it?
  • Change how often it runs. Every 30 minutes is the default, but hourly or twice a day also works.
  • Rewrite the ICP description any time. Industry, headcount range, and geography are the usual knobs.
  • Edit the skip list to add or remove free email providers and competitor domains.
  • Change which Slack channel gets the routing alerts, or split alerts by region or product line.

Frequently asked questions

Does this work on the HubSpot Free plan?
Yes. Contacts and notes are available on the free tier, which is all this workflow writes to.
What happens if the same person fills out the form twice?
Leads are matched by email and merged into one HubSpot contact, so you will not get duplicate records. The newer research note is added to the existing contact.
Why every 30 minutes instead of instantly?
Cognito Forms does not push real-time events to General Input, so the workflow checks on a schedule. Half-hour cadence keeps response time tight without burning your form's API budget.
Can I change the ICP rules later?
Yes. The ICP description lives in plain language inside the workflow, so you can edit industry, headcount, geography, or anything else without rebuilding it.
Will my Slack channel get spammed if a batch of leads comes in?
Each new lead is posted once. The workflow remembers which submissions it has already seen, so old leads are never re-posted on the next run.

Stop pasting form submissions into HubSpot.

Connect Cognito Forms, HubSpot, and Slack once. Geni handles the research, the scoring, and the routing every 30 minutes.