Skip to content

Create HubSpot contacts from qualified leads

Connect one HubSpot portal with a private-app token so Embers creates or updates a contact, with one note on the signal, whenever a lead qualifies.

Solo and above Updated 6 min read

Embers can keep HubSpot in step with your LinkedIn pipeline. When a lead qualifies, Embers creates or updates one contact, and the first time it creates that contact it attaches one note on why the lead matters.

Before you start

  • Access to a HubSpot portal where you can create a private app.
  • The private app needs the contact read and write scopes: crm.objects.contacts.read and crm.objects.contacts.write. Nothing else.
  • A Connect with HubSpot button, for OAuth instead of a token, appears only when Embers has it configured. A private-app token always works.

Connect HubSpot

  1. Create a HubSpot private app

    In your HubSpot portal, create a private app and grant it the two contact scopes above. Copy the access token it gives you; it starts with pat-.

  2. Save the token in Embers

    Open Integrations in the sidebar (/integrations) and choose HubSpot (/integrations/hubspot). On the Setup card, paste the token under Private app token and choose Save token.

    Embers validates the token against HubSpot before storing it, so a bad token fails here rather than later. It is stored encrypted and never shown again.

    Once connected, the page opens on one sentence, “Sending leads to HubSpot”, over a line of facts: the last send, the portal, “private app” or “connected with OAuth”, and which events go. Needs attention (only when something needs fixing), the Activity card, and the setup cards follow; the Connection card names the portal and how it is connected.

  3. Choose what to send

    The What to send card has two switches:

    • New leads (on): a lead qualified, so Embers creates or updates the contact.
    • Everything else (off): a known lead engaged again or changed pipeline status, which updates the same contact. Report-ready events are included in that switch but write nothing to HubSpot.
  4. Send a test

    Choose Send test beside the status at the top of the page (in the … menu on a phone). It validates the token and confirms the connection, and it never creates a HubSpot contact. If it fails, Needs attention shows “The last test failed” with the reason and Send test to try again.

What Embers writes

One contact, and one note when Embers creates it. That is the whole footprint.

HubSpot propertyWhere it comes from
firstname and lastnameThe lead’s name, split into two
jobtitleThe lead’s title
companyThe lead’s company
websiteThe lead’s LinkedIn profile URL
emailThe stored email, when Embers already has one
phoneThe stored phone, when Embers already has one

Empty values are left out rather than written as blanks, so Embers never wipes a field you filled in yourself. Email and phone are never invented, and they are only sent on a paid plan: contact details are not part of the free trial.

The note carries the score, the ICP verdict, up to three signals, the reason for the match, the LinkedIn profile, and a link to the lead in Embers. It is added only when Embers creates the contact, not when it updates one.

Who gets delivered

The Who gets delivered card holds HubSpot’s own delivery rules: a minimum lead score, ICP matches only, the sources that count, and titles and industries to exclude. Choose Save rules after changing them, or Reset to drop your edits. Many accounts set a higher minimum score here than on Slack.

A lead the rules hold back writes nothing to HubSpot and is not retried on its own. It is listed on the Activity card as Held back, with the reason; choose Send anyway on that row to send it. A manual push with Send to skips a lead Embers already synced, as already synced to HubSpot contact, unless you tick ignore rules, which updates that contact.

How duplicates are avoided

Embers remembers which HubSpot contact it created for each LinkedIn member in your account, so repeat events update that contact.

  1. A contact Embers created before: Embers updates it.
  2. No contact yet, but an email: Embers searches HubSpot by email and updates the match.
  3. Neither: Embers creates a contact and remembers it. A retry updates that same record rather than creating a second one.

Without an email, Embers cannot find a contact you created by hand in HubSpot, so the same person can end up with two records. Merge them in HubSpot; Embers keeps updating the one it created.

Activity, retries, and pauses

The Activity card lists the last 30 days of deliveries, newest first: the lead, with a link to the contact in HubSpot once one exists, the status (Delivered, Failed, Held back, Blocked, or Sending), the reason, and when. Filter by All, Failed, or Held back. Retry re-sends a failed or blocked row, and Send anyway a held-back one, while delivery is on and not paused. The newest three failures also sit under Needs attention with Retry.

HubSpot rate limits and outages are retried: the first attempt plus seven retries, from 30 seconds out to about 6.3 days.

A contact HubSpot refuses for its own values fails on its own and is not retried: a 400 VALIDATION_ERROR, such as an invalid email or a value a portal rule rejects, a 409 CONFLICT, or a lead with no properties to write. Embers keeps sending every other lead. If five leads in a row are refused like that with none synced in between, the install pauses, because a rule is turning every lead away.

Other failures pause the install at once: a rejected token (401 or 403), any other request HubSpot refuses outright, and retries that run out. The status then reads “Delivery to HubSpot is paused”, and Needs attention shows the reason with Resume. HubSpot delivery is paused walks through each one.

If delivery is turned off, the status reads “Delivery to HubSpot is turned off” and Needs attention offers Turn on; the portal and what to send stay saved.

Disconnect HubSpot, in the … menu beside the status, asks you to confirm, then stops Embers creating or updating contacts and leaves everything already in HubSpot untouched. You can reconnect the same portal later.

Troubleshooting

Saving the token fails. The token is wrong or lacks a contact scope. Check both scopes on the private app, copy the token again, and save.

Needs attention shows a pause with INVALID_AUTHENTICATION. HubSpot rejected the token, usually because the private app was deleted or its token rotated. The connected page has no token field, so choose Disconnect HubSpot in the … menu, then save a new token on the Setup card. Saving clears the pause and keeps your switches and rules.

Needs attention shows “HubSpot paused after 5 contacts in a row were rejected.” HubSpot refused five leads in a row for their values, usually because of a portal validation rule or a changed property type. Fix it in HubSpot, then choose Resume.

Needs attention shows “HubSpot paused after receiving HTTP” and a status. HubSpot refused the request for a reason other than one contact’s values, such as a contact it could no longer find. Fix the cause in HubSpot, then choose Resume.

The status reads “Not sending: nothing is selected to send”. Both switches on What to send are off. Turn on New leads.

Contacts arrive without an email. Embers had not revealed one for that lead, or the workspace is on the trial. Emails are copied, never looked up for HubSpot.

Frequently asked questions

Does Embers create companies or deals?
No. Embers creates or updates a contact and attaches one note when it creates the contact. Companies and deals are left to your own HubSpot workflows.
Will a test create a contact in HubSpot?
No. A test only validates the stored token and confirms the connection.
Can I connect two HubSpot portals?
No. One HubSpot portal per Embers account. An agency connects each client workspace to that client's portal separately.

Was this article helpful?

Your first 2,000 engagers free

Every day Embers reads the public activity around your market, ranks the people who fit, and hands you a short list with the reason each one surfaced. You decide who to contact.

Start free trial
  • No card to start
  • No LinkedIn login
  • Cancel anytime

↑↓ to move ↵ to open esc to close