How to Connect Zapier to HubSpot
Sync leads, deals and contacts from any app into HubSpot with Zapier. Field mapping, deduplication and rate limits covered step by step.
Updated · 9 days ago
Originally published
StackPipeline earns affiliate commissions from some links on this page. Our testing and rankings are independent. Learn more .
On this page
Connecting Zapier to HubSpot takes about fifteen minutes, but the default configuration most teams ship will quietly create duplicate contacts and lose campaign attribution within a month. This guide covers the setup that survives contact with real data.
Which connection method should you use?
Zapier is not always the right answer. If your source app already has a native HubSpot integration, use it — native connectors sync historical data and handle field mapping without per-task costs.
| Feature | Zapier Top pick | Native integration | Custom API |
|---|---|---|---|
| Setup time | 15–20 min | 5 min | 1–3 days |
| Engineering required | No | No | Yes |
| App coverage | 7,000+ apps | Marketplace only | Any API |
| Historical backfill | No | Yes | Yes |
| Custom transformation | Partial | No | Yes |
| Monthly cost | From $29.99 | Free | Engineering time |
| Handles 10k+ records/mo | Partial | Yes | Yes |
Zapier
Top pick- Setup time
- 15–20 min
- Engineering required
- No
- App coverage
- 7,000+ apps
- Historical backfill
- No
- Custom transformation
- Partial
- Monthly cost
- From $29.99
- Handles 10k+ records/mo
- Partial
Native integration
- Setup time
- 5 min
- Engineering required
- No
- App coverage
- Marketplace only
- Historical backfill
- Yes
- Custom transformation
- No
- Monthly cost
- Free
- Handles 10k+ records/mo
- Yes
Custom API
- Setup time
- 1–3 days
- Engineering required
- Yes
- App coverage
- Any API
- Historical backfill
- Yes
- Custom transformation
- Yes
- Monthly cost
- Engineering time
- Handles 10k+ records/mo
- Yes
Comparison of methods for connecting a data source to HubSpot, evaluated September 2026.
Before you start
You need three things: a Zapier account, a HubSpot account with permission to edit contact settings, and a decision about which field is your deduplication key. That last one is not optional — skip it and you will be cleaning up duplicates for months.
Step-by-step setup
Work through these in order. Each step depends on the previous one being correct.
What to monitor after launch
Check the Zap History tab daily for the first week. Look for two patterns: repeated errors on the same record (a mapping problem) and a gradual rise in task consumption without a matching rise in contacts (a filter problem).
Common problems and fixes
The table below covers the failures we hit most often when auditing existing Zapier to HubSpot connections.
Connection methods compared
There is more than one way to connect Zapier to HubSpot. Pick the row that matches your constraints.
| Feature | Zapier (no-code) Top pick | HubSpot native integration | HubSpot API + custom middleware |
|---|---|---|---|
| Best for | Most teams — fastest path, no engineering | Apps already in HubSpot's marketplace | High volume or complex transformation logic |
| Setup time | 15–20 min | 5 min | 1–3 days |
| Cost | From $29.99/mo above the free tier | Free | Engineering time |
| Code required | No | No | Yes |
Zapier (no-code)
Top pick- Best for
- Most teams — fastest path, no engineering
- Setup time
- 15–20 min
- Cost
- From $29.99/mo above the free tier
- Code required
- No
HubSpot native integration
- Best for
- Apps already in HubSpot's marketplace
- Setup time
- 5 min
- Cost
- Free
- Code required
- No
HubSpot API + custom middleware
- Best for
- High volume or complex transformation logic
- Setup time
- 1–3 days
- Cost
- Engineering time
- Code required
- Yes
Methods for connecting Zapier to HubSpot.
Step-by-step: connect Zapier to HubSpot
Estimated setup time is 18m. Each step assumes you completed the one before it.
-
Step 1: Create the Zap and choose your trigger app
In Zapier, click Create > Zaps. Select the app holding your lead data as the trigger — a form tool, ad platform, spreadsheet or webhook. Choose the specific event, such as 'New Form Submission' or 'New Row'. Connect the account and pull in a sample record so you have real field names to map later.
Tip: Always load a sample record before moving on. Mapping against placeholder data is the single most common cause of broken field mappings.
-
Step 2: Add a HubSpot search action to prevent duplicates
Before creating anything, add a 'Find Contact' action using HubSpot as the app. Search by email address and enable the 'Create HubSpot Contact if it doesn't exist yet' option. This single step prevents the duplicate-contact problem that makes most CRM syncs unusable within a few weeks.
Tip: Email is the only reliable deduplication key in HubSpot. Never dedupe on name or company.
-
Step 3: Map your fields to HubSpot properties
Add the 'Create or Update Contact' action and map each source field to its HubSpot property. Start with email, firstname, lastname and company. For custom properties, use the internal name from HubSpot Settings > Properties, not the display label — Zapier matches on internal names and silently drops mismatches.
{ "email": "{{trigger.email}}", "firstname": "{{trigger.first_name}}", "lastname": "{{trigger.last_name}}", "company": "{{trigger.company_name}}", "lifecyclestage": "lead", "hs_lead_status": "NEW", "lead_source_detail": "{{trigger.utm_campaign}}" } -
Step 4: Set lifecycle stage and lead source explicitly
Set lifecyclestage to 'lead' and populate a lead source property on every record. HubSpot will not backfill attribution data later, so a record created without a source is permanently unattributable. If you run paid campaigns, map the UTM parameters into dedicated custom properties at this step.
-
Step 5: Add a filter to block junk records
Insert a Filter step between the trigger and the HubSpot action. At minimum, require that the email field exists and does not contain 'test', and block free-mail domains if you only sell B2B. Filtering before the CRM write keeps your contact count — and therefore your HubSpot bill — clean.
Tip: Filter steps do not consume a task in Zapier when they stop a Zap, so aggressive filtering also reduces your task usage.
-
Step 6: Test with a live record, then turn the Zap on
Run Zapier's test, then open the contact in HubSpot and confirm every mapped property landed correctly — including the custom ones. Check the contact timeline to verify the source attribution. Only then publish the Zap and monitor the Zap History tab for the first 24 hours.
Troubleshooting
These are the failures we see most often on this integration.
| Problem | Fix |
|---|---|
| Contacts are created but custom properties are empty | You mapped the display label instead of the internal property name. In HubSpot go to Settings > Properties, open the property and copy the internal name shown under the label, then remap in Zapier. |
| Duplicate contacts appear for the same person | You are using 'Create Contact' instead of 'Create or Update Contact', or deduplicating on a field other than email. Switch the action and set email as the matching key. |
| Zap fails with a 429 error during bulk imports | HubSpot rate-limits at 100 requests per 10 seconds on most tiers. Add a Delay step of 1 second between iterations, or batch the import through HubSpot's native CSV importer instead of Zapier. |
| Lifecycle stage keeps reverting to an earlier value | HubSpot blocks backwards lifecycle transitions by default. Either stop writing lifecyclestage on updates, or enable the 'Set lifecycle stage backwards' setting in Contacts settings. |