Cold EmailSmartleadHubSpot12 min read

Smartlead HubSpot Integration: Sync Replies Without Duplicates

Set up Smartlead's native HubSpot integration or an email-keyed upsert, keep cold leads out of HubSpot, avoid duplicate contacts, and verify deals and opt-outs.

Smartlead has a native HubSpot integration: connect it under Integrations → native integrations → HubSpot, pick the lead category that should create a HubSpot deal, and turn on activity tracking. The decision that matters is what happens to cold leads. On a CSV campaign, Smartlead only syncs when you enable "Create Leads in HubSpot" at import, and that creates or updates a HubSpot record for every lead added to the campaign, not only the people who reply. If HubSpot should receive interested replies only, leave that toggle off and use an email-keyed upsert triggered by Smartlead's Lead Category Update event, through a SmartAgent or a webhook into Make or Zapier.

This guide is based on Smartlead's native HubSpot guide, HubSpot sync FAQ, campaign setup guide and SmartAgents HubSpot guide, plus HubSpot's deduplication and contacts API documentation, all checked October 16, 2026. We did not connect a private Smartlead or HubSpot account, so treat each step as documented behavior to confirm with one test lead. Smartlead's older and newer articles use slightly different labels; the screen in your account wins.

Choose the route before you connect anything

Route What reaches HubSpot Who becomes a HubSpot record Main limit
Native, leads imported from a HubSpot list or view Sent and replied emails as email activities; opens, clicks, bounces and unsubscribes as notes; a deal when a lead gets your chosen category Nobody new: the leads already exist in HubSpot Deals are created in one stage and never moved
Native, CSV upload with Create Leads in HubSpot Same as above Every lead added to the campaign HubSpot fills with people who never replied
SmartAgent with HubSpot Upsert Contact Email, first name, last name, company name Only leads matching your trigger, such as Interested Basic fields; the workflow is AI-generated, so review every step
Webhook to Make, Zapier or your own code Whatever you map Only events you let through You own retries, deduplication and maintenance

Smartlead's overview promises bringing warm leads into HubSpot "based on interactions" such as replies or clicks. The setup steps it documents push records at import, though, and we found no documented native setting that creates the HubSpot contact only after a positive reply. That gap is why the interested-only routes exist. Paid sync apps such as OutboundSync are a fifth option; we haven't tested them.

Prerequisites

  • A Smartlead plan with CRM access. Smartlead's pricing page marks CRM access and API & webhooks as not included on Base ($39/month billed monthly) and included from Pro ($94/month) upward. The row doesn't name HubSpot, so confirm the option appears in your Integrations tab. The SmartAgent route also needs SmartAgents access.
  • A HubSpot user who can authorize OAuth apps and create properties. Involve your HubSpot admin; this writes into your sales team's system of record.
  • Written decisions: the category that creates a deal (start with Interested), its pipeline stage, its owner, the HubSpot fields Smartlead may write, and how opt-outs flow each way.
  • Agencies: Smartlead doesn't document a separate HubSpot portal per client, so confirm which portal the connection writes to before enabling it on a client campaign. Our Smartlead client access guide explains how clients and campaigns are separated.

Set up the native integration

1. Create HubSpot properties for custom fields

Name, email and company need no preparation. For custom fields such as a personalized first line, go to Settings → Data Management → Properties in HubSpot, create a property group called Smartlead, and add the properties there. Smartlead recommends prefixing each label with "Smartlead" so the sync never writes into an existing property. Smartlead also lets you pre-map HubSpot fields to Smartlead fields so they fill in whenever HubSpot is the lead source.

2. Connect the HubSpot portal

In Smartlead, open the Integrations tab, go to the native integrations sub-tab and select HubSpot. If your login sees several HubSpot accounts, choose carefully. Smartlead's guide says an "unverified" message will appear and you can continue; have your HubSpot admin confirm the app and requested access first.

3. Configure deal creation and activity tracking

Smartlead then shows three settings: the lead category that creates a deal, the activity tracking toggle, and the HubSpot stage for new deals. Smartlead says all three are needed for deal creation plus activity tracking. Its note on tracking activity without deals is ambiguous about which setting to keep, so test that combination with one lead.

Smartlead event Logged in HubSpot as
Sent email, replied email Email activity
Email open, link click, lead unsubscribed, email bounced Note

Notes are visible on the timeline but harder to filter and report on. Smartlead also says it does not move deals to another stage; it only creates them in the stage you select.

4. Enable HubSpot on each campaign

The connection doesn't apply to every campaign. Smartlead's sync FAQ says you enable it per campaign when adding leads, and it can't be added midway through an active campaign.

  • HubSpot as the source: choose Import from a CRM, then the HubSpot list or view and the property group.
  • CSV upload: under CRM Sync, enable Create Leads in HubSpot, choose the HubSpot list and group, and map fields. Smartlead's newer campaign guide says this creates or updates leads in HubSpot when they're added to the campaign. The older FAQ labels it "Create the lead in Hubspot if they don't exist in Hubspot already" and says campaign data only syncs when it's on.

Then check the campaign's Import leads section: the HubSpot integrated column should show Yes.

How HubSpot decides what is a duplicate

HubSpot deduplicates contacts on the Email property for manual entry, forms and imports, and its contacts API treats email as the primary unique identifier with upserts keyed on email. Smartlead says its CSV push won't create duplicates, and its SmartAgent upsert searches by email first. Duplicates still appear in four places:

  • Another address for the same person. A reply from a personal address, alias or secondary email won't match the imported work address. Route those to a person instead of creating a second contact.
  • Companies. HubSpot says companies created through the API or third-party sync apps aren't deduplicated by domain. Smartlead's guides don't mention companies, so don't add automation that creates them from email domains.
  • Deals. Smartlead doesn't document what happens when a lead is recategorized or reaches Interested again in another campaign. Test it.
  • Two routes on one event. Native auto-deal, a SmartAgent and a Zap all reacting to Interested will compete. Give one route ownership of deal creation.

Two more HubSpot rules matter if you push every lead. HubSpot says any integration or API sets new contacts as non-marketing by default; a Marketing Hub admin can change that per app under Integrations → Marketing Contacts, so check it before thousands of cold leads arrive. And through the API, Lifecycle stage only moves forward unless cleared first. Smartlead's guides don't mention lifecycle stage or contact owner, so manage both with HubSpot rules.

Interested-only routes that keep cold leads out

SmartAgent upsert

Smartlead's SmartAgents HubSpot guide documents a separate connection:

  1. Go to SmartAgents → Integrations, find HubSpot, click Connect and authorize through HubSpot's OAuth page until the status reads Connected.
  2. From SmartAgents → Home, start from the Inbox Reply Sync with Upsert template, a daily batch, or prompt it: when a reply is categorized Interested, search HubSpot by email, create the contact if missing, update it if found.
  3. For a real-time handoff, choose an Event-Based Trigger, scope it Account-Level, Client-Level or Campaign-Level, and select Lead Category Update. Event triggers can't be edited after the agent is created.
  4. Review the generated workflow node by node, click Test Run, and confirm HubSpot: Upsert Contact returns a created or updated contact. Then Deploy and watch the run logs.

The documented fields are email, first name, last name and company name, and empty Smartlead fields don't overwrite HubSpot values. You get a clean contact, not a deal or owner.

Webhook into Make or Zapier

In Smartlead, go to Settings → Webhooks → Add Webhook, select the campaign and the Lead Category Updated event, and paste a Make or Zapier webhook URL. Continue only when the new category is Interested, search HubSpot contacts by email, then create or update one contact. Smartlead's retry guide says slow or failed responses trigger retries and recommends checking the event ID so nothing is processed twice; its troubleshooting article adds that a user-level webhook overrides client- and campaign-level hooks. Our Smartlead and Make guide covers the full build with a dedupe ledger and failure recovery; swap its Pipedrive modules for HubSpot's.

Give every interested reply an owner

A deal with no owner is a lost reply in another database. Assign ownership in HubSpot: a workflow on the Smartlead deal stage if your subscription includes workflows, or a saved view of that stage that a named rep works daily. Keep existing contact owners; a cold campaign shouldn't reassign a managed account.

Jan recommended this kind of handoff in a March 2024 video on his agency's sales process: the setter creates a deal when someone replies positively and follows up, then switches the deal owner to the person taking the call once it's booked. His team ran that in Pipedrive, not HubSpot, so it isn't a test of this integration. It maps onto Smartlead's limit, though: Smartlead creates the deal in its first stage, and the booked-meeting stage and owner change are yours to run in HubSpot.

Start with manual categorization. Smartlead's campaign setup offers SmartLead AI auto-categorization or Manual Only; if AI labels decide which replies become deals, sample its Interested calls first.

Keep opt-outs suppressed in both directions

Smartlead to HubSpot. The native tracker logs Lead unsubscribed as a note, which is a timeline entry rather than a change to the contact's subscription status. If anyone emails these people from HubSpot, route opt-outs into an agreed HubSpot property or list as well, for example through a separate Lead Unsubscribed webhook. Never send opt-outs through the interested route. Our Smartlead unsubscribe guide covers the Smartlead side.

HubSpot to Smartlead. Smartlead's native guide doesn't document syncing HubSpot customers, open deals or opt-outs back as a block list. The documented manual path is the Global Block List: Settings → Global Block List, then Add Block List or Import CSV File. An unassigned entry only blocks campaigns with no client, so agencies need one entry per client. Keep the Global Block List and Unsubscribe List exclusions on at every import.

In a May 2023 CRM walkthrough, Jan said his team only added people to Pipedrive after a positive reply or an unsubscribe, and exported the CRM's domains every Friday into the sending tool's block list so nobody already in the CRM got cold email again. That's a dated manual process, not current Smartlead behavior. If you copy it, note that a domain entry stops outreach to everyone at that company.

Test with one lead before real campaigns

Use a pilot campaign and an address you control:

  1. Add the lead through your chosen route. On the native route, confirm HubSpot integrated: Yes.
  2. In HubSpot, confirm exactly one record, which object it landed in (the native guide says "leads", the SmartAgents guide says contacts), its mapped properties and its marketing status.
  3. Send a step and reply; confirm both email activities appear.
  4. Mark the reply Interested; confirm one deal in your stage, associated with the contact and owned by your rule.
  5. Change the category away and back, or repeat in a second campaign; record whether a second deal appears.
  6. Repeat with an existing HubSpot contact that has an owner and lifecycle stage; confirm neither was overwritten.
  7. Unsubscribe the test lead; confirm the HubSpot note and the Smartlead suppression.

Troubleshooting

Symptom Likely cause What to do
Connected, but nothing reaches HubSpot HubSpot wasn't enabled when leads were added It can't be added to an active campaign; use a new campaign or import with the toggle on
Activities sync, no deal No category or stage selected, or the lead got another category Recheck the three deal settings with a test lead
HubSpot fills with prospects who never replied Create Leads in HubSpot on a CSV campaign Turn it off for future campaigns, use an upsert route, and review existing records with your admin before any cleanup
Duplicate contacts Different addresses, or two routes on one event Merge in HubSpot and give one route ownership
SmartAgent ran, contact missing No valid email, or OAuth disconnected Check run logs and SmartAgents → Integrations
Webhook never fires A user-level or newer same-level webhook takes priority Keep one webhook per level that handles several events

OutboundXYZ has an affiliate relationship with Smartlead. It did not decide these steps or recommendations, which come from current public documentation rather than a private account test. Our Smartlead review covers the sender itself, the RevOps outbound stack covers routing and ownership across tools, and the HubSpot integrations hub compares other outbound tools that connect to HubSpot. Instantly users can follow our Instantly-to-HubSpot interested replies guide.

Frequently asked questions

Does Smartlead have a native HubSpot integration?

Yes. Smartlead documents a native connection under its Integrations tab that imports leads from HubSpot lists or views, logs email activities and notes, and creates a deal when a lead receives your chosen category. You enable it per campaign when adding leads.

How do I stop Smartlead from creating a HubSpot contact for every lead?

Leave Create Leads in HubSpot off on CSV campaigns and upsert contacts by email only when a lead's category changes to Interested, using a SmartAgent or webhook. Leads imported from HubSpot already exist there, so that native pattern adds nobody new.

Will Smartlead update HubSpot deal stages?

No. Smartlead says it creates deals in the stage you select and doesn't move them. Stage changes, owners and lifecycle stage belong in HubSpot.

Which Smartlead plan includes the HubSpot integration?

Smartlead's pricing page lists CRM access and API & webhooks from Pro upward, not on Base. It doesn't name HubSpot in that row, so confirm the option in your account.

Back to blog

The outbound tool memo.

One useful note when a tool is worth testing, skipping, or swapping out of your stack.

Friendly OutboundXYZ mascot waving with an envelope