Emilia Korczynska is Head of Marketing and co-founder at ZenABM. Before that she was VP of Marketing at Userpilot for nearly 7 years, where she ran a large ABM program primarily on LinkedIn ads.

A LinkedIn ad CRM integration is only useful for ABM if it works at account level, and the native ones from HubSpot and Salesforce work on contacts who have already opted in or clicked. ABM needs the opposite: the company that saw your ad and never raised its hand. This post shows what the native routes miss, what a company-level integration has to write into your CRM, and how to set up a LinkedIn ad CRM sync in a few minutes.
The infographic below shows the whole flow from ad to deal in one view.

Manual syncing means scrolling through the companies that saw your ads, picking the most engaged ones, exporting a CSV and uploading it to your CRM so sales knows whom to contact. Then, on reporting day, you map every closed deal and pipeline addition back to ad engagement by hand.
Every CSV shuffle and manual campaign match is another place for an error to creep in. You can export from Campaign Manager to a spreadsheet, but that only gives you top-line ad metrics, and you have to repeat the export every time. Here is the loop most teams are stuck in 😅

Native CRM integrations work only on known, opted-in contacts, not on accounts, and that is why they are not suitable for ABM.
Here is what the flows actually do:
In every one of these, ad exposure attaches to a person who opted in or clicked. The account that saw your ad and never clicked has no contact record, so a contact-based flow cannot show it. Bilal Ahmad described the practitioner version of this in our ABM Bootcamp webinar on automatic follow-up sequences: a CRM gives you no easy way to see that one company, across ten associated contacts, clicked Google ads, clicked LinkedIn ads, visited the website and then opened a deal.
Known contact in, known contact out. ABM needs the account that never raised its hand.
The infographic below puts the two views side by side.

And here is how the options compare:
Route | Unit it works on | What lands in the CRM | Sees accounts that never clicked? |
|---|---|---|---|
HubSpot's LinkedIn connection | Contacts | Lead form contacts, contact audiences, contact-based attribution | No |
Salesforce Lead Gen sync | Leads | Lead records (500 a day cap, extras emailed) | No |
LinkedIn CRM Sync | Deals and campaigns | Revenue Attribution Report, campaign revenue reporting, auto-created conversions | Not at company-record level |
Conversions API | Hashed email | Nothing: it only sends conversions to LinkedIn | No |
Company-level sync (ZenABM) | Companies | Engagement, score, stage and intent per company | Yes |
Native has real upsides: it is free and fast. Anthony Blatner calls CRM sales data inside Campaign Manager "the most helpful integration ever", but he also says to treat its return on ad spend figure directionally. It is a good deal-to-campaign view, but it is not a per-company engagement record.
The Conversions API is the other thing people confuse with a CRM integration. As Filip Saračević explains, it is one-directional: the CRM pushes a hashed email plus plain-text name and company to LinkedIn, LinkedIn counts the conversion, and nothing is written back to your CRM. A wrong email in your CRM also costs you a conversion you earned, because LinkedIn can only match a hashed email that belongs to a member. So it sends contacts to LinkedIn, and it is not an account-level sync into your CRM.
I'd add one more reason this matters for reporting. CRMs are designed for MQL-level attribution, so ABM-influenced conversions fall through the cracks, and that is why a lot of the revenue from ABM goes unreported.
A LinkedIn ad CRM integration for ABM must write company-level engagement per campaign onto the company record, and then turn that data into something sales can act on. Use this checklist when you evaluate any option, native or not:

If an option misses items 1 and 2, it cannot do account-based work, however good the rest looks.
LinkedIn Campaign Manager shows company engagement in its Companies tab, but that data never reaches your CRM through the native routes, so your reps cannot see which companies engaged with which campaign. The CRM only gets what the native flows carry, which is totals and contacts.
When I was VP of Marketing at Userpilot, I struggled to run ABM on LinkedIn. My husband watched it up close and built ZenABM to fix it. I might be a bit biased as a co-founder, but I also know first-hand what it is like to struggle to find the right tool.
ZenABM's Company engagements view matches LinkedIn impressions, clicks and engagements to the company behind them, per campaign, and puts every engaging company on one row with its score, stage and CRM data:

Here is the same view as a company-by-company table, where you can sort by engagement and filter by campaign:

One limit to know about: LinkedIn does not show professional demographic data for a company when there are fewer than 3 interactions in a period, as LinkedIn's Ad Analytics help documents:

ZenABM works around this by aggregating at campaign level (what LinkedIn used to call the campaign group; an ad set is what used to be called a campaign), so small engagements still count.
Userpilot is a good example of what lands in the CRM. They needed per-campaign LinkedIn engagement inside HubSpot, which HubSpot could not do natively. ZenABM synced it to company properties such as "LinkedIn Ad Engagements, 7 days" and "LinkedIn Ad Clicks, 7 days", updated weekly:

You can search for them like any other property:

At the time, HubSpot workflows accumulated these into "Cumulative LinkedIn Ad Engagements" and "Cumulative LinkedIn Ad Clicks" properties, which gave a running total per account:

Property | What it holds | Updates |
|---|---|---|
LinkedIn Ad Engagements, 7 days | Engagements by the company in the last 7 days | Weekly |
LinkedIn Ad Clicks, 7 days | Clicks by the company in the last 7 days | Weekly |
Cumulative LinkedIn Ad Engagements | Running total built by a HubSpot workflow | Weekly |
Cumulative LinkedIn Ad Clicks | Running total built by a HubSpot workflow | Weekly |
Contact-level engagement is captured out of the box for HubSpot too, and the contact report opens the record in the CRM, as we showed in our webinar on AI reporting and revenue attribution.
First-party engagement data from LinkedIn tells you which companies saw your ads, while website visitor identification tools and display networks guess. Plenty of teams reach for those guesses because neither Campaign Manager nor the CRM gives them company-level data.
Website visitor identification tools only work after someone lands on your site, so they miss everyone who saw the ad and did not click. Most of them rely on reverse IP lookup, which matches an IP address to a company name. Someone on a VPN or a shared network (a café, a co-working space) can point to the wrong organisation entirely.
The accuracy is the problem. In a study by Syft, Clearbit (now HubSpot's Breeze Intelligence) and Dealfront were the most precise of the services tested, and Clearbit reached only 42%. Treat that as a ceiling for IP-based matching, and note that the study is undated.

On top of that, many companies don't register their IP addresses at all, as Kyle Ackerman points out:

Display ad networks have a similar weakness. They rely on third-party cookies and device fingerprinting, which browsers increasingly block. Their behavioural profiles go stale when someone changes jobs, and bot traffic that imitates real users skews the data.
That is why ZenABM relies on first-party interactions with your LinkedIn ads to capture company intent. It pulls company-level engagement per campaign straight from LinkedIn's official API, which gives you accounts that were served impressions even if they never clicked, with no cookies and no bot noise.
Scoring accounts on recent LinkedIn engagement tells your reps which accounts to contact first. Without it, you spend days or weeks building workflows in HubSpot to get something similar, and you still lack company-level ad data to feed it.
In our ABM Bootcamp webinar on automatic follow-up sequences, we described three account scores that live in the CRM as extra company variables: an engagement score (typically over the past 90 days), an account fit score against your ICP, and potential contract value.
ZenABM scores every account from its ad engagement and CRM data, keeps the score current, and lets you watch recent and all-time trends. It also moves each account through the ABM stages you define, so the stage is computed rather than updated by hand. You can read more about ABM stages and account scoring, and both the score and the stage are written back to the CRM.

Intent signals tell sales what an account is interested in, based on which themed campaign it engaged with. ZenABM attributes the theme of each campaign or ad set to the account as an intent signal, and syncs it to the CRM or pushes it over webhooks.
Say you promote project management software. A company engages heavily with your "productivity enhancement" ads and ignores the "secure file sharing" ones, so your BDR now knows which value prop to lead with. The lesson for your campaigns is to build one theme per campaign or ad set, because that is what produces usable intent signals. For how to design those campaigns, see our guide to running ABM on LinkedIn.
You can build this yourself in a CRM, but look at what the workflow looks like in HubSpot:

In ZenABM the intents are ready to filter on:

And here is the list of intent signals per account:

Here is how it looks on the HubSpot company list once the sync has run:

To connect LinkedIn campaigns to pipeline, read deals back from the CRM and match them to companies that saw or engaged with your ads before the deal opened. ZenABM reads deals back daily, and revenue attribution counts only deals opened after the company saw or engaged with the campaign, as Emilia explained at the ZenABM London meetup.
ZenABM applies one rule: influenced deal = a deal created after the company reached your impression threshold.
You choose the impression threshold in the CRM settings, and a company below it is not treated as influencing a deal. Pick a number that filters out token exposure, because the right level depends on your campaigns. Tim Davidson's client counted 3+ paid clicks as influence instead of last-click credit, and Tim Davidson reports that it turned a break-even account into nearly 3X ROI and 62X pipeline to spend. Treat his threshold as an example, not a universal number.
This is where you set the threshold in ZenABM:

And here is the result, with deals matched to the companies that engaged with your LinkedIn ads:

Open a single deal and you see the impressions, clicks, engagements and spend that touched the account before it opened and before it closed, by ad set and campaign:

ZenABM also has built-in dashboards for ROAS, influenced pipeline and ABM stages, so you do not have to build the reports in spreadsheets.
To retarget engaged accounts, rank them by score and ABM stage, remove customers and open deals, and build the follow-up audience from that list in Campaign Manager. Here is the flow:

One constraint to plan around: LinkedIn needs at least 300 matched members before it serves a company list or a contact list, per LinkedIn's company list help and its contact list help. For ABM, I'd use company lists, which LinkedIn recommends at 1,000 or more companies. A contact list only matches verified member emails, and small accounts may have just 2 or 3 ICP members, so a contact-based audience struggles to reach the minimum. Check every audience split against the 300-member rule before you build it.
ZenABM applies your exclusions across all campaigns, including new ones, so you do not re-upload a list every time you launch:

An ABM stage such as a warm list can also go to LinkedIn as an audience through HubSpot, but that needs HubSpot Marketing, which is a separate product from HubSpot CRM.
ZenABM syncs natively to HubSpot, Salesforce and Attio. If you use another CRM, you have two routes: webhooks, or the MCP server and API.
Webhooks fire on the weekly sync when an account reaches a stage. A filter builder scopes which companies qualify, and a payload builder lets you pick the fields. A common flow sends accounts at an interest stage to Clay for enrichment, then back to your CRM as a sales task. If you want a head start, use our ABM Clay templates, which hold ready-made intent-led outbound workflows.

The MCP server connects your workspace to Claude, ChatGPT or Cursor, and it reads and writes. Here it is sorting accounts by engagement:

You can set up the integration in a few minutes: connect LinkedIn, connect HubSpot, choose your ad accounts and set the threshold. Salesforce and Attio connect the same way. Check the documentation if you get stuck.
Before you start, do these three things:
Then follow these steps:





ZenABM keeps company creation opt-in, and everything it creates carries a "created by ZenABM" property. So if you ever need to clean up, it is a HubSpot filter and a bulk delete.
ZenABM does each step above, from the engagement data to the deal read-back, in one tool built for ABM on LinkedIn. One reviewer on G2 wrote that "the UI and UX are clean, intuitive, and easy to navigate."
Here is Zena, ZenABM's AI agent, answering a question about your engaged companies in plain language:

On pricing, ZenABM starts from $59/month billed annually ($69/month billed monthly). Reviewers also mention that more CRM integrations would help (one asks for Pipedrive) and that ABM takes time to compound. ZenABM is LinkedIn-first, so it does not buy display ads or sell third-party intent data, and the team keeps shipping new features based on customer feedback.
For lead forms, contact audiences and conversion feedback, yes. For ABM, no, because it only sees the people who raised their hand. Which accounts are your ads reaching today that your CRM cannot see?
A LinkedIn Ads CRM integration connects your LinkedIn ad data to your CRM, so ad engagement sits next to your companies and deals. A native one syncs contacts and lead forms. A company-level one also shows which companies saw or engaged with each campaign, including those that never clicked.
You push company-level engagement per campaign onto CRM company records instead of exporting CSVs by hand. The data lands where your sales team already works. You set the sync up once, choose which properties to write, and it keeps the records current.
Connect LinkedIn Ads, connect your CRM, pick the ad accounts and the impression threshold, then let engagement, scores and ABM stages sync to company records. ZenABM's CRM sync does this for HubSpot, Salesforce and Attio. The setup steps are above.
You can export from Campaign Manager to a spreadsheet, but it only gives you top-line ad metrics, and you repeat the export by hand each time. Each manual step invites errors. A CRM sync replaces that routine and puts the data on your company records, where sales can act on it.
A bi-directional sync should write company-level engagement per campaign, scores, ABM stages and intent to the CRM, and read deals back so you can link campaigns to pipeline. It should also let you set an impression threshold. The full checklist is in the section on what a LinkedIn ad CRM integration for ABM must do.
Yes. Rank engaged companies by score and ABM stage, remove customers and open deals, then build the follow-up audience in Campaign Manager. LinkedIn needs at least 300 matched members, so use company lists for ABM. Sending an ABM stage to LinkedIn as an audience through HubSpot needs HubSpot Marketing.
About the author