Skip to content
Automation Squad
TfHSMade to order

Lead capture & routing

Typeform response → HubSpot contact, owner assigned, Slack alert

Form answers become a HubSpot contact with an owner, and Slack hears about it.

A Typeform submission arrives as a webhook and leaves as a HubSpot contact with a stage, a source and an owner. Existing contacts are found by email and updated, not duplicated. The owner comes from a rotation or from an answer on the form, and Slack gets the lead with a link to the record. Built for sales and marketing teams whose enquiry forms live outside HubSpot.

How it works

  1. Tf

    Trigger

    New response submitted to a chosen Typeform form

    Typeform

  2. if

    Step 1

    Map the answers to contact properties

    Typeform answers arrive keyed by question reference; the map turns them into email, name, company, phone and the one answer you route on, and drops any response without an email.

  3. H

    Step 2

    Search HubSpot by email

    A contact search on the cleaned email decides the branch: found means update, not found means create, and the result is carried into the Slack message as new or returning.

  4. H

    Step 3

    Create or update the contact

    New contacts get lifecycle stage Lead, lead status New, the mapped properties and the form name in a custom Enquiry source property; existing ones only have blanks filled and a Last enquiry date stamped.

  5. if

    Step 4

    Choose the owner

    Owner IDs from HubSpot sit in a short table next to Slack user IDs; the step walks it in turn, or picks the row named by the routing answer, and writes hubspot_owner_id.

  6. S

    Step 5

    Post the lead to sales and DM the owner

    The channel message shows name, company, the routing answer and a link to the HubSpot record; the same text goes to the owner as a direct message.

What changes once it runs

  • A HubSpot contact with an owner, a stage and a source exists for every response, and nobody retyped it.
  • Returning contacts are updated in place, and the owner is told they have been in touch before.
  • Slack shows the lead in the sales channel with a link to the record, and the owner gets the same text as a direct message, seconds after Typeform receives it.
  • Adding a rep is one line in a table, not code.
  • No email, no contact: a blank response is logged and dropped.

What you get

  • Setup guide: Typeform webhook, HubSpot private app scopes and custom properties, Slack app install, first test.
  • n8n workflow export with the owner table and property map at the top, where you edit them.
  • Field-mapping sheet listing each Typeform question reference and the HubSpot property it fills.
  • Recorded walkthrough of a test submission travelling from form to Slack.
  • Make and Zapier versions of the flow, with the rotation step rebuilt for each.

Before you start

  • A Typeform form that collects at least an email address.
  • HubSpot (free CRM or any hub) with a private app granted contacts read and write scopes and the owners read scope.
  • Two custom contact properties, Enquiry source and Last enquiry date, which the guide has you create before the first run.
  • At least one HubSpot user set up as an owner for each person you want leads routed to.
  • Slack workspace where you can install an app, plus a channel for new leads.
  • n8n Cloud or a self-hosted n8n reachable over HTTPS for the Typeform webhook.

Built for

Questions before you buy

Typeform already connects to HubSpot. Why buy this?
Typeform's native connection creates the contact and stops there. It does not choose an owner, tell Slack, or distinguish a returning contact from a new one. HubSpot's own rotation is a workflow action that needs a Professional-tier hub, so a team on the free CRM has no other way to rotate. If a contact record is all you need, use the native connection and keep your money.
Can I route by territory instead of rotating?
Yes. The owner step reads one answer on your form, such as a region or product dropdown, and looks it up in the table. Rotation is the fallback when the answer is blank or unmatched.
What happens if HubSpot rate-limits or is down?
Each HubSpot node retries after a short wait. A run that still fails is caught by the error workflow, which posts the raw answers to Slack so the lead can be logged by hand. A single response uses two or three HubSpot calls, so the form would need to be very busy to hit the limit.
Is there a Make or Zapier version?
Both are in the package. On Zapier the owner rotation uses a Storage step and the new-versus-returning branch uses Paths, which needs a paid Zapier plan.

Nearby on the shelf

Whole catalog