How to Integrate Instantly With HubSpot: 2026 Setup Guide
By Kushal Magar · October 19, 2026 · 13 min read
Key Takeaway
Instantly connects to HubSpot through two native apps: Old HubSpot imports HubSpot lists into campaigns, and New HubSpot powers Automations that write replies and lead status back to HubSpot. For real-time events and deal creation, add Instantly webhooks (Hypergrowth plan, $97/mo, or higher) and call the HubSpot API. Dedupe on email only, use internal Lead Status values, and enrich contacts before they enter a sequence.
The Instantly HubSpot integration connects Instantly's cold email campaigns to HubSpot CRM, so contacts flow into sequences and replies, lead status, and bounces flow back. Without it, interested leads sit in the Instantly Unibox while HubSpot still lists them as New.
This guide covers both ways to connect the two tools: Instantly's native HubSpot apps and webhooks. You get the field mapping, a lead status map for every Instantly event, deal creation, and fixes for the sync errors teams hit most.
Menu paths come from Instantly's help center and event names from Instantly's live webhook event list. HubSpot limits and property values come from HubSpot's developer docs, checked October 2026.
TL;DR: Instantly HubSpot Integration
- Native route:connect HubSpot from Instantly's Integrations tab with OAuth. Old HubSpot imports lists into campaigns, and New HubSpot powers Automations that write replies and status back.
- Webhook route: Instantly webhooks (Hypergrowth plan, $97/mo, or higher) send 18 event types, such as reply_received and lead_interested, to Make, n8n, Zapier, or your own endpoint.
- Lead status:map Instantly interest status to HubSpot's Lead Status property with internal values. Use email as the only dedupe key.
- Deals: Instantly has no dedicated deal action. Create deals with a HubSpot workflow or the deals API, associated to the contact.
- Errors: most failures are duplicates, wrong property values, and HubSpot rate limits of 100 requests per 10 seconds on Free and Starter private apps.
- The better way: neither route cleans your data. Enrich and verify HubSpot contacts in SyncGTM before they enter a sequence, then write the results back.
What the Instantly HubSpot Integration Does
The Instantly HubSpot integration moves contacts from HubSpot into Instantly campaigns and moves campaign outcomes back into HubSpot. That covers replies, interest status, bounces, and the tasks your reps act on.
Instantly is a cold email platform that sends from unlimited connected inboxes with built-in warmup, starting at $47/mo on the Growth plan. HubSpot is the CRM where reps manage contacts, deals, and follow-up.

Instantly's help center now describes two-way lead sync through Automations. Older guides that call the connection import-only predate that change.
For a full breakdown of Instantly's plans and deliverability, read our Instantly review. For the CRM side, see our HubSpot review.
Native Integration vs Webhooks vs Zapier
Use the native integration for list imports and status write-back. Add webhooks when you need real-time events, custom properties, or deal creation logic.
| Method | Direction | What syncs | Requirement | Best for |
|---|---|---|---|---|
| Native: Old HubSpot (list import) | HubSpot → Instantly | Contacts from one HubSpot list into one campaign | HubSpot Super Admin or app install permission | Weekly list imports |
| Native: Automations (New HubSpot) | Both ways | Contact create/update, notes, tasks, events, triggered by Instantly or HubSpot events | Instantly Automations access | Reply and status write-back without code |
| Webhooks + your endpoint | Instantly → HubSpot | Any of 18 webhook events, custom deal and property logic | Instantly Hypergrowth ($97/mo) or higher, plus Make, n8n, or a server | Real-time sync and deal creation |
| Zapier | Both ways | Trigger-action pairs from the Zapier Instantly and HubSpot apps | Zapier plan sized to your task volume | Teams already running Zapier |
| OutboundSync | Instantly → HubSpot | Sends, opens, clicks, bounces, and replies on the contact timeline | Instantly Hypergrowth or higher, paid app | Full email activity history in HubSpot |
Zapier and OutboundSync are add-ons, not replacements. OutboundSync's own page warns that running it next to Instantly's native activity sync can double-log events.
Before You Start: What You Need
Ten minutes of prep here prevents most of the sync errors later in this guide. Check each item before you click Connect.
- HubSpot permissions: Super Admin, or a user with App Marketplace access, to approve the Instantly app.
- Instantly admin access to the workspace that runs your campaigns.
- Custom HubSpot properties created up front: instantly_campaign, instantly_last_event, and instantly_bounced.
- For webhooks: Instantly Hypergrowth ($97/mo) or higher, plus Make, n8n, Zapier, or a server that can receive POST requests.
- For workflow-based deal creation: a HubSpot Sales Hub or Marketing Hub Professional seat, since workflows are not on Free or Starter.
How to Connect Instantly to HubSpot (Native Setup)
To integrate Instantly with HubSpot, connect HubSpot from Instantly's Integrations tab, import a HubSpot list into a campaign, then build an Automation that writes replies and Lead Status back to HubSpot. The five steps below take 20 to 30 minutes for the first campaign.
Step 1: Connect Both HubSpot Apps
Open the Integrations tab in Instantly. You will see New HubSpot, which handles Automations and SuperSearch exports.
Scroll down and click Show more to find Old HubSpot, which handles list imports. Connect both, approve the OAuth screen in HubSpot, and confirm the right HubSpot portal.
Step 2: Build the HubSpot List
In HubSpot, go to CRM → Lists → Create list. Filter for contacts with an email, Lead Status of New, and no open deal.
Exclude customers and anyone already in an active sequence. That filter alone removes most of the duplicate and do-not-contact problems teams hit later.
Step 3: Import the List Into a Campaign
- Open the target campaign and go to the Leads tab.
- Click Add Leads, select HubSpot, and choose your list.
- Map the Email column to the predefined Email variable.
- Map personalization columns to custom variables and set the rest to Do Not Import.
- Review the duplicate checks, then click Upload all.
Instantly offers optional verification at import for 0.25 Instantly credits per lead. It checks deliverability only, not whether the person still works there.
Step 4: Build an Automation for Replies and Status
Go to Agents and click Create New, then start from scratch or a template. Add the Instantly trigger Lead Interest Status Changed, or Lead Replies if you want every reply.
Add the HubSpot action Find contact, which returns the HubSpot contact ID. Then add Create or update contact, Create task for the owner, and Create note with the reply text.
Type / in any field to map variables such as email, first name, and company name. Set Lead Status with the internal values in the table further down.
Step 5: Test, Then Activate
Click Continue to run a test and review the Data Out panel. Open the contact in HubSpot and confirm the property, task, and note landed.
Toggle the Automation on and watch the Live Feed for the first day. Fix mapping issues while volume is low.
Field Mapping: Instantly to HubSpot
Map every Instantly field to a HubSpot internal property name, never a display label. Email is the only safe matching key.
| Instantly field | HubSpot property | Notes |
|---|---|---|
| The only dedupe key. Lowercase and trim before matching. | ||
| First name | firstname | Map directly. |
| Last name | lastname | Map directly. |
| Company name | company | Contact-level text field. Company records match on domain. |
| Website | website | Use the root domain so HubSpot can associate the company. |
| Job title | jobtitle | Map directly. Stale titles are the most common data gap. |
| Phone | phone | Optional. Only map if you sequence calls. |
| Campaign name | instantly_campaign (custom) | Create this property first. Powers source reporting. |
| Last Instantly event | instantly_last_event (custom) | Stores the latest webhook or Automation event ID. |
| Interest status | hs_lead_status | Use internal values, not labels. See the next section. |
| Lifecycle stage | Do not map on import | HubSpot only moves lifecycle stage forward. Set it in a workflow. |
HubSpot lists every default property and its internal name in its default contact properties reference. Check it before you create a custom property that already exists.
Syncing Replies and Lead Status to HubSpot
Map each Instantly event to one HubSpot Lead Status value and one rep action. The event IDs below match Instantly's webhook event list, and the Automation triggers use the same outcomes.
| Instantly event | HubSpot update | Rep action |
|---|---|---|
| email_sent | Lead Status → ATTEMPTED_TO_CONTACT | Only if status is empty or NEW |
| reply_received | Lead Status → CONNECTED | Create a task for the contact owner. Save reply text as a note. |
| lead_interested | Lead Status → IN_PROGRESS | Create a deal (next section) |
| lead_meeting_booked | Lead Status → OPEN_DEAL | Move the deal to Appointment Scheduled |
| lead_not_interested | Lead Status → UNQUALIFIED | Add a note and suppress from new campaigns |
| lead_out_of_office | Keep current status | Create a follow-up task dated after the return date |
| lead_wrong_person | Lead Status → UNQUALIFIED | Find the right buyer at the same account |
| email_bounced | instantly_bounced (custom) → true | Re-find or verify the email before any new sequence |
| lead_unsubscribed | Add to a do-not-contact list | Sync that list to every Instantly campaign blocklist |
| lead_closed | Deal stage → Closed Won | Stop all sequences for the account |
Custom labels also fire events: custom_label_any_positive and custom_label_any_negative. Route both to the same updates as interested and not interested so custom labels do not fall through.
Creating HubSpot Deals From Positive Replies
Instantly's documented HubSpot actions cover contacts, notes, tasks, events, and a generic Create or update record. There is no dedicated deal action, so pick one of these two patterns.
Option A: HubSpot Workflow (No Code)
Build a contact-based workflow that enrolls contacts when Lead Status becomes IN_PROGRESS or OPEN_DEAL. Add the Create record action and set the object to Deal.
HubSpot associates the new deal with the enrolled contact. Set the pipeline, stage (Appointment Scheduled works for most teams), owner, and a deal name that includes the campaign.
Option B: Webhook Handler and Deals API
If you are not on a Professional hub, create the deal from your webhook handler. Send the association in the same request with type ID 3, which HubSpot defines as deal to contact in its associations API.
Guard against duplicates. Check for an open deal on the contact before you create a new one, or store the deal ID on the contact.
Webhook Setup for Real-Time Instantly HubSpot Sync
Webhooks push each Instantly event to your endpoint the moment it happens. Per Instantly's webhook guide, the feature needs the Hypergrowth plan or above.
- In Instantly, open Integrations → Webhooks → Add Webhook.
- Paste your endpoint URL from Make, n8n, Zapier, or your server.
- Choose All events or one event type, such as reply_received.
- Choose All campaigns or one campaign, and add custom headers for auth.
- Save, send a test event, and log the raw payload.
A trimmed payload looks like this. Fields vary by event, so build your mapping from a logged sample, not from this example.
Instantly webhook payload (trimmed example)
{
"timestamp": "2026-10-19T14:05:11.000Z",
"event_type": "lead_interested",
"workspace": "<workspace id>",
"campaign_id": "<campaign id>",
"campaign_name": "Q4 RevOps leaders",
"lead_email": "jane@acme.com",
"firstName": "Jane",
"lastName": "Doe",
"companyName": "Acme"
}Your handler then makes two HubSpot calls: an upsert keyed on email, and a deal create with the association.
HubSpot CRM v3 calls from the webhook handler
# 1. Upsert the contact by email and set Lead Status
POST https://api.hubapi.com/crm/v3/objects/contacts/batch/upsert
{
"inputs": [{
"idProperty": "email",
"id": "jane@acme.com",
"properties": {
"hs_lead_status": "IN_PROGRESS",
"instantly_campaign": "Q4 RevOps leaders",
"instantly_last_event": "lead_interested"
}
}]
}
# 2. Create a deal associated with that contact (type 3 = deal to contact)
POST https://api.hubapi.com/crm/v3/objects/deals
{
"properties": {
"dealname": "Acme - Outbound",
"pipeline": "default",
"dealstage": "appointmentscheduled"
},
"associations": [{
"to": { "id": "<contact id from step 1>" },
"types": [{ "associationCategory": "HUBSPOT_DEFINED", "associationTypeId": 3 }]
}]
}If you run your own server, authenticate with a HubSpot private app token scoped to contacts and deals. The Instantly API v2 can also update the lead from HubSpot events if you need the reverse direction.
Common Instantly HubSpot Sync Errors and Fixes
Most Instantly HubSpot sync errors trace back to three causes: duplicate contacts, wrong property values, and rate limits. Find your symptom below.
| Symptom | Cause | Fix |
|---|---|---|
| HubSpot list missing from the import dropdown | You connected the New HubSpot app, which does not handle list imports | Connect Old HubSpot from Integrations → Show more, then re-open Add Leads |
| Leads skipped during import | Instantly's duplicate check blocks leads already in another campaign or list, or the Email column is unmapped | Map the Email column to the Email variable and review the duplicate settings before Upload all |
| 409 Conflict: contact already exists | The sync tried to create a contact whose email is already in HubSpot | Run Find contact first, or use the batch upsert endpoint with idProperty set to email |
| 400 VALIDATION_ERROR on hs_lead_status | You sent a label such as In Progress instead of the internal value IN_PROGRESS | Use internal option values from the property settings |
| 429 Too Many Requests | Bursts above HubSpot's limit: 100 requests per 10 seconds for Free and Starter private apps, 190 for Professional and Enterprise | Queue webhook events, use batch endpoints, and retry with backoff |
| 403 MISSING_SCOPES | A private app token lacks write scopes for contacts or deals | Add crm.objects.contacts.write and crm.objects.deals.write, then rotate the token |
| Every email logged twice on the timeline | Two tools log the same activity, such as an Automation plus OutboundSync | Pick one activity logger and limit the other to status updates |
| Webhook never fires | Workspace is below Hypergrowth, the webhook is filtered to another campaign, or the endpoint returns non-2xx | Check the plan, set the campaign filter to All campaigns, and return 200 fast |
The rate limit numbers come from HubSpot's API usage guidelines. Public OAuth apps, which is how marketplace apps connect, get 110 requests per 10 seconds per HubSpot account.
Limitations of This Approach
The native integration and webhooks move data well. They do not fix the data you move.
- Stale contacts go straight to sequences.HubSpot records decay as people change jobs, and Instantly's import verification checks the inbox, not the person.
- List imports are point-in-time. New list members need another import or an extra Automation built on a HubSpot trigger.
- No dedicated deal action. Deals need a Professional HubSpot workflow or custom code.
- Webhooks are plan-gated. Real-time events start at Hypergrowth, $97/mo.
- Bounces hit sender reputation first. You learn an email is dead only after it has bounced from a warmed inbox.
A Better Way: Enrich HubSpot Contacts Before They Enter Instantly
SyncGTM sits between HubSpot and Instantly. It pulls contacts from HubSpot, enriches and verifies them, pushes only clean leads into Instantly, and writes the new data back to HubSpot.
Native sync only
- HubSpot list
- Instantly import
- Send
- Bounces and wrong people
- Status back to HubSpot
With SyncGTM in the middle
- HubSpot list
- SyncGTM enrich and verify
- Instantly campaign
- Replies and status
- Enriched HubSpot record
How the SyncGTM Workflow Runs
- Pull: the SyncGTM HubSpot integration searches or lists HubSpot contacts and companies into a table, such as every contact with Lead Status New.
- Check the person: job change detection (2 credits) flags people who moved in the past two months.
- Find and verify the email: find work email runs a provider waterfall for 1 credit per found email, and misses are not billed. Email verification costs 0.1 credits.
- Add company context: company enrichment (2 credits) adds industry, size, funding, and tech stack for segmentation and personalization.
- Push and write back: the SyncGTM Instantly integration adds verified leads to the right campaign. The 2-way HubSpot sync updates each contact with the verified email, title, and company data.
What It Costs
Take 1,000 HubSpot contacts. Verifying all of them costs 100 credits, and re-finding 200 dead emails costs up to 200 credits.
Enriching 300 companies adds 600 credits, for 900 credits in total. That fits inside the Solo plan's 1,000 monthly credits at $49/mo, per our pricing page, and the Free plan includes 50 credits to test it.
For the full setup on each side, read SyncGTM + HubSpot integration and SyncGTM + Instantly for signal-driven cold email.
Pros and Cons Summary
Native Instantly HubSpot Integration
- Pro: no code, OAuth setup in minutes.
- Pro: Automations write replies, tasks, and notes back to HubSpot.
- Con: list imports are manual unless you add an Automation.
- Con: no dedicated deal action and no data enrichment.
Webhooks and the HubSpot API
- Pro: real-time events and full control over deals and properties.
- Pro: works with any middleware or your own server.
- Con: needs Hypergrowth ($97/mo) or higher plus build time.
- Con: you own retries, rate limits, and token rotation.
SyncGTM Between HubSpot and Instantly
- Pro: verified, current contacts before the first send.
- Pro: enriched data flows back to HubSpot through 2-way sync.
- Con: one more tool in the stack.
- Con: enrichment uses credits, so filter lists before you run them.
Comparing sequencers before you commit? Our Smartlead vs Instantly comparison covers CRM sync on both.
Conclusion
Start with the native Instantly HubSpot integration: Old HubSpot for imports and an Automation for replies and Lead Status. Add webhooks when you need real-time deal creation.
Whatever route you pick, the sync only moves what HubSpot holds. Put enrichment and verification in front of it so every lead that reaches Instantly is real, current, and worth the send.
Try it on your own HubSpot list with SyncGTM. The Free plan includes 50 credits, no credit card required.
