HubSpot Integration

Fill the gaps in HubSpot, every week

Connect your portal once. Contacts missing a business email, a LinkedIn URL or a phone number get looked up and filled in — only into empty properties, never over anything a person typed.

Contacts scope only
Never overwrites
You choose the properties
Free health check first
3
Fields It Fills
25
Contacts per Run
Mon
Weekly, 10:00 UTC
0
Properties Overwritten
What it actually does
Two things, and they are separate. Run either, or both.
Free

A health check

Reads your contacts and counts what is missing. No writes, no credits, no connection required — you can upload a CSV export instead.
  • How many contacts have no email, no LinkedIn URL, no phone
  • What filling each gap would cost, before you decide
  • Nothing is written and nothing is charged
Run the health check

The weekly sync

Every Monday, works through contacts still missing the fields you picked, looks them up, and writes the results into your chosen properties.
  • 25 contacts a run by default, continuing where the last one stopped
  • Only ever fills an empty property
  • Runs whether or not you open LinkFinder that week
  • Included on a paid plan; a credit pack does not cover it, because the connection runs every week either way.
Set it up
Connecting your portal
About a minute. You will be sent to HubSpot's own authorization screen — LinkFinder never sees your HubSpot password.

Open CRM Sync

Sign in, then go to CRM Sync and choose HubSpot.

Approve the scopes in HubSpot

HubSpot will ask you to grant crm.objects.contacts.read and crm.objects.contacts.write, and to pick which portal to connect. That is the whole request: contacts, read and write. No deals, no companies, no email, no files. If you are not a super admin you may need someone who is to approve it.

Point each field at a property

The panel lists the writable contact properties in your portal and asks where each field should go. Do not skip this — the defaults are HubSpot's own standard names, and many portals do not use them. See which properties below.

Run one pass by hand first

Use Clean my HubSpot now before waiting for a Monday. It shows the ceiling cost first, then exactly which contacts got which values — so you can check a few in HubSpot before the unattended runs start.

Which properties it touches
Everything below is a contact property. Nothing else in your portal is read or written.

What it reads

PropertyWhyRequired?
firstname, lastnameThe person to look up.Yes — a contact with no name is skipped and not charged.
companyNarrows the search enormously. A name on its own matches thousands of people.Needed for the LinkedIn lookup.
websiteThe company domain the email lookup searches. A display name like "Acme Inc" is not a domain.Needed for the email lookup.
jobtitleSeparates two people with the same name at the same company.No — free to include, and it improves the match.
city, state, countrySeparates people who share a name across regions.No — same.
The last two rows are why a sync finds people it used to miss. The lookup takes one description of a person, and every part you have narrows it — at no extra cost. A contact with a job title and a city is far more likely to come back with the right email than the same contact without them. Filling jobtitle on your contacts is free and it improves your hit rate.

What it writes

FieldDefault propertyWatch out for
Business emailemailHubSpot's standard email property. Almost every portal uses it.
LinkedIn URLlinkedinbioCheck this one. linkedinbio is HubSpot's legacy LinkedIn field and many portals use a custom linkedin, hs_linkedin_url, or nothing at all.
Phone numberphoneStandard. Some teams prefer mobilephone — pick it in the panel if so.
A property that does not exist in your portal is written into nothing. The panel now reads your actual property list and marks anything it cannot find, so this is visible rather than silent. If you connected before that existed, open CRM Sync and check the "Where each one is written" rows once.
What it costs
Credits per contact, per field. A lookup that finds nothing is charged the same as one that succeeds — the search runs either way. This table is generated from the API's own catalog, so it cannot drift from what you are billed.
FieldLookup it runsCredits per contact
LinkedIn URL
On by default
lead_full_name_to_linkedin_url
Needs a name and a company on the contact.
1
Business email
On by default
lead_full_name_to_email
Needs a name and a website — the domain it searches.
7
Phone number
Off by default
linkedin_profile_to_phone
Runs from a LinkedIn URL. Reuses one already on the contact or found in the same run; only pays 1 more credit to derive one when there is none.
50
Phone numbers are the expensive one. One phone costs more than seven emails, which is why it is switched off by default. A 25-contact pass with all three fields on is up to 1,450 credits; with email and LinkedIn only it is 200. The ceiling is shown next to the button before you run anything.
Reading a finished run
"Looked at 25, filled 3" is a real answer, and the panel now says which of four different things happened to the other 22.
What it saysWhat happenedCharged?
Written into HubSpotFound and accepted by HubSpot. The value is listed so you can check it.Yes
Searched, nothing foundThe lookup ran and came back empty. Usually a person with little public presence, or too little on the contact to identify them.Yes
Skipped for email — no websiteNo company domain to search, so nothing was attempted. This is the most common one, and the most fixable.No
Skipped for LinkedIn — no companySame, for the LinkedIn lookup.No
Skipped — no nameNo first or last name on the contact.No
Already had every fieldNothing was missing. Picked up by the search, filtered out per-contact.No
If most of your run is "skipped for email", fill in website. That single property is the difference between a contact the email lookup can search for and one it cannot attempt at all — and a company-name-to-website pass costs 1 credit each.
When something looks wrong
It said it worked, but nothing appeared in HubSpot
Almost always the property. Open CRM Sync and look at "Where each one is written" — a property that is not in your portal is now flagged there. The usual culprit is linkedinbio: HubSpot's legacy field, which plenty of portals replaced with a custom one. Pick the right property and re-run; the contacts are still missing the field, so they will be picked up again.
It is finding the wrong person
Give it more to go on. The lookup sends the name, the company, the location and the job title as one description, and it uses whatever your contacts have. A contact with only a name and a company is genuinely ambiguous — there are many John Smiths. Filling jobtitle and city costs nothing and materially improves the match.
It overwrote something
It cannot. The write only ever includes properties that were empty on that contact, so HubSpot is never sent a value for a property that already had one. If a value changed, it was changed by something else — check the property's history in HubSpot, which records who set it.
The weekly run stopped happening
Two common reasons. The subscription lapsed — the sync is checked against your plan on every run, not only at connect time, so a cancelled plan stops it rather than letting it keep spending. Or the HubSpot connection was revoked on HubSpot's side (Settings → Integrations → Connected Apps). Reconnect from CRM Sync; your field and property choices are kept.
I want it to go faster than 25 a week
Use Clean my HubSpot now as many times as you like — each pass takes the next 25 and the cost is shown before each one. The weekly limit exists so an unattended job cannot quietly spend a large balance; running it by hand is the deliberate version of the same thing.
Can it fill job titles or company data?
Not from this sync. It starts from a name on a contact, and the lookups that return a full profile start from a LinkedIn URL. If the sync fills LinkedIn URLs for you first, a later pass can read profiles from them — for now that runs through Zapier, Make, n8n or the API, where you choose any of the 20 lookups.
What if I use Salesforce, Pipedrive, Zoho or Close?
You can connect and enrich on demand. The unattended weekly job is HubSpot-only for now, because it needs both a name and a company domain on the contact record itself — the others keep company on a related record, and an unattended run there would spend credits on names with nothing attached. Rather than run it badly, it stays off until that read is built.
What data leaves my portal?
For each contact being enriched: the name, company, website, job title and location listed above, sent as the search input. Nothing else — no deal, no note, no email history, no other contact. The connection has read and write access to contacts only, so nothing else is even reachable.

See what is missing, free

The health check reads your contacts, counts the gaps and costs nothing. Decide about filling them after you have the number.

Run the health check