Olmec Dynamics
A
·7 min read

Automate Typeform to HubSpot and Slack Lead Routing Using Make.com

Automate Typeform to HubSpot and Slack with Make.com: webhook ingest, contact upsert, deal creation, Router-based assignment, and alerts in seconds today.

Introduction

If you collect leads with Typeform, the manual version usually looks like this: someone watches submissions, copies contact details into HubSpot, creates a deal, then posts a Slack message so the team can act. It is slow, inconsistent, and you miss the edge cases that make lead routing break, like missing emails or duplicate submissions.

In this guide, you will build a Cross-Platform Automation (XPA) that automates Typeform to HubSpot and Slack lead routing end-to-end. You will configure a Make.com scenario that ingests Typeform responses, upserts contacts, creates deals, and routes Slack notifications based on form answers.

By the end, you will know exactly how to wire the trigger to the CRM write and Slack notification in a way that holds up in production.

What You'll Need

  • Typeform: your form configured to capture the fields you need for routing, especially email.
  • Make.com (paid plan usually required for HubSpot and Slack modules, and for running scenarios reliably).
  • HubSpot: permission to create and update contacts and deals.
  • Slack: permission to post messages to the channels you plan to notify.
  • A routing rule you can encode, for example:
    • lead score threshold (high vs mid vs low)
    • form type (demo request, pricing request, webinar registration)
    • ICP fit answers

If you do not capture email in Typeform, you need a different strategy for deduping. In this guide, HubSpot upsert uses email as the key.

Also, if you are new to the approach, it helps to understand the mindset behind Cross-Platform Automation (XPA).

How It Works (The Logic)

Here is the trigger to action logic in plain English.

  1. A Typeform submission happens.
  2. Make.com receives the submission payload via a webhook-triggered scenario and extracts your key fields.
  3. Make.com validates required fields (email first) and routes invalid payloads to a QA Slack channel.
  4. Make.com upserts the contact in HubSpot so retries do not create duplicates.
  5. Make.com creates the deal in HubSpot and associates it to the upserted contact.
  6. Make.com uses a Router to set deal owner and pick the right Slack channel.
  7. Make.com posts a Slack message with the lead context and the HubSpot record link.

Step-by-Step Setup

This is an intermediate Make.com build. The goal is predictable routing, minimal duplicates, and fast team visibility.

1) Create a Make.com scenario starting from Typeform

  • In Make.com, create a new Scenario.
  • Add the Typeform module as the trigger for new form submissions (webhook-based trigger is the usual choice).
  • Run a test submission and confirm you can see the payload fields for:
    • email
    • name
    • company (if captured)
    • the answers that drive routing (lead score, ICP fit, form type)

2) Add a validation step for required fields

  • Add a data check step in Make.com to confirm email is present and not blank.
  • If your build supports it, use a Router right after validation.

At this point you have two paths:

  • Valid email: proceed to HubSpot writes
  • Missing/invalid email: skip HubSpot writes, notify Slack QA

3) Upsert the contact in HubSpot (dedupe by email)

  • Add a HubSpot CRM module to upsert contact.
  • Configure the upsert key to email.
  • Map these fields from Typeform into HubSpot properties:
    • email
    • first name and/or full name
    • company name
    • lead source / campaign
    • any custom properties you store from Typeform answers

Why this matters: Typeform webhooks can be retried if something fails in the chain. Upsert prevents duplicates.

If you want the mapping approach and a field-by-field template, see How to Automate Typeform Leads to HubSpot and Slack Using Make.com.

4) Create the HubSpot deal and associate it to the contact

  • Add another HubSpot CRM module to create a deal.
  • Set:
    • deal name (for example, Typeform: {form type})
    • pipeline and stage defaults (you can refine later)
    • association to the contact created/upserted in the previous step

Common gotcha: avoid setting a fixed owner here. You will set owner and Slack channel in the Router step next.

5) Use Make Router to set owner and Slack channel

  • Add a Router module.
  • Set your routing conditions in this recommended order:
    1. invalid email path (if you combined validation and routing)
    2. high-fit lead path (score or ICP match)
    3. mid-fit lead path
    4. fallback path

In each route, set:

  • HubSpot deal owner (owner user or queue, depending on your HubSpot setup)
  • Slack channel target (example channels below)

Example bucket choices:

  • high-fit: #leads-hot
  • mid-fit: #leads
  • low-fit: #lead-triage
  • invalid payload: #lead-ops-qa

6) Post Slack alerts with HubSpot links

  • Add a Slack module to create a message.
  • Post to the channel output from the Router.

Message content checklist:

  • Lead name
  • Email
  • Company
  • Form type or campaign
  • Deal owner
  • Link to the HubSpot contact and/or deal

The practical thing: include the HubSpot record link so the team does not have to search manually.

7) Make the scenario retry-safe

Treat this as at-least-once processing. Your scenario should tolerate repeated submissions.

Do these two things:

  • Keep upsert by email as your contact strategy
  • Ensure you only create deals on the valid payload path, and consider logging the Typeform submission ID to trace duplicates

In Make, your execution logs plus a stored submission identifier in HubSpot are your best debugging tools.

8) Test with 3 real Typeform submissions

Run a full test cycle with:

  1. valid email and high-fit answers
  2. valid email and mid-fit answers
  3. missing email (or blank email field)

Verify:

  • HubSpot contact is upserted (no duplicates)
  • Deal is created only for valid payloads
  • Correct Slack channel receives the right message

Real-World Business Scenario

A growing B2B services firm runs multiple Typeform forms for discovery calls and pricing requests. Their old process had a coordinator manually entering leads into HubSpot and then posting in Slack, which caused two issues:

  • high-fit leads did not always get flagged quickly
  • missing fields created messy partial CRM entries

With this Make.com XPA, they routed leads based on Typeform answers (budget range and ICP match). Valid leads were upserted into HubSpot, deals were created, and Slack alerts hit the right channel immediately. Submissions missing email went to a Slack QA channel, with no CRM write until the data was complete.

The outcome was not just speed. It was data hygiene and consistent ownership, which you feel immediately in pipeline quality.

If you want an extension that enriches deal context before routing, you can build on the pattern in How to Connect Typeform to HubSpot with OpenAI and Slack Using Make.com.

Common Variations

  1. Route using computed lead score
  • Add a step that calculates score from Typeform answers before the Router.
  • Route based on score bands, not raw answers.
  1. Create deals in different pipelines by form type
  • If you have multiple Typeform forms or multiple submission types, set different pipeline and stage defaults.
  1. Block CRM writes when consent is missing
  • If your Typeform captures marketing consent or required qualification, validate it and route to Slack QA.
  • Only upsert contacts and create deals when consent is valid.

The workflow you just built

You created an XPA where Typeform submissions trigger a Make.com scenario, which validates required fields, upserts contacts in HubSpot to avoid duplicates, creates and associates deals, and posts Slack alerts to channels based on routing rules.

This is the same kind of end-to-end wiring Olmec Dynamics builds for teams that want fewer manual steps and cleaner lead handling. If you want help designing your exact field mappings, routing logic, and channel structure, you can see what we do here.