# LinkedIn Ads Account Engagement Score: How to Build One That Predicts Pipeline

> A LinkedIn ads account engagement score sounds simple. Add up what each company did with your ads, rank the list, and call the top of it. We built ours that way first, and it ranked large companies at the top for a while. Not companies that liked us. Just the big ones.

Author: Emilia Korczynska
Published: 2026-08-06
Updated: 2026-09-01
Categories: Intent & Stages
Source: https://zenabm.com/blog/linkedin-ads-account-engagement-score

---

![LinkedIn Ads Account Engagement Score: How to Build One That Predicts Pipeline](https://cdn.zenabm.com/media/Gemini_Generated_Image_yc4f1pyc4f1pyc4f-1-scaled-e1788232143734.png)

A [LinkedIn ads account engagement score](/use-cases/account-scoring) sounds simple.

Add up what each company did with your ads, rank the list, and call the top of it.

We built ours that way first, and it ranked large companies at the top for a while.

Not companies that liked us.

Just the big ones.

The reason is mechanical.

A 6,000-person company has more people in your target job titles, so it generates more impressions and more clicks than a perfect-fit 200-person company that is genuinely interested.

A raw count scores headcount.

The second flaw is that most scores only go up.

They are cumulative, so an account that was curious in March still looks hot in September.

This guide fixes both.

You get the five steps to build the score, the exact formulas, the decay curve, the thresholds that trigger action, and the backtest that tells you whether your weights are right.

## LinkedIn ads account engagement score: quick summary

A quick overview:

- A raw [engagement count is a company](/faq/see-companies-engaging-with-linkedin-ads) size proxy. Bigger companies generate more of everything, so your score ranks headcount rather than interest.
- Normalize it. Engagements divided by impressions turn a count into a rate, and a rate is comparable across [companies of any size](/blog/spend-on-linkedin-ads-budget-guide).
- Cumulative scores never fall, so they show you who was interested rather than who is. Add time decay or keep two scores.
- A workable decay curve: full value for the last 30 days, half for 31 to 90 days, near zero beyond that. Tie it to your sales cycle.
- Weight signals by effort. An impression is nearly free for the buyer, a document download is not.
- Score people breadth too. Four people from three teams is a buying committee, one person clicking four times is a curious individual.
- Do not weight CTR heavily. In the [ZenABM 2026 benchmark](/blog/linkedin-ads-ctr-benchmarks) of 211 companies, CTR against pipeline came back at a Spearman rho of minus 0.170.
- Gate on ICP fit before scoring, or agencies and competitors will crowd your top ten.
- A score is useless until it has a threshold. Ours [moved an account](/blog/how-to-move-accounts-from-aware-to-considering-abm-stage) to Interested at 5 or more clicks or 10 or more engagements.
- Validate by backtesting: run the [score on last year’s accounts](/blog/account-scoring-from-linkedin-ad-data) and check that your closed-won deals rank high. If they land in the bottom tier, the weights are wrong.
- Recalibrate quarterly because your [creative](/blog/linkedin-ad-performance-audit-claude-code), audience, and sales cycle all move.
- [ZenABM keeps a current and a total engagement score per company](/use-cases/account-scoring) out of the box, so you get the normalized and the cumulative view without building either.

## The two flaws that break most engagement scores

Before the build, understand what you are correcting for.

Almost every homemade score has one or both of these.

### Flaw 1: it measures company size

LinkedIn delivers ads to people, not companies.

So a [company with 40 people matching your job](/blog/linkedin-ads-personalization) titles gets far more impressions than one with 4, at the same bid, without wanting your product any more.

Add those impressions and clicks into a score, and the biggest names float to the top every time.

I have watched a [sales team lose faith in a scoring](/blog/demandbase-one-for-abm) model in about three weeks because of this.

They called the top accounts, found nobody had heard of us, and stopped opening the list.

### Flaw 2: it never goes down

If your score is a running total, it cannot fall.

An account that engaged heavily six months ago outranks one that engaged four times last week.

That is backwards.

Recent behavior is the whole point of an engagement score, because it is the part that tells you to act now.

ZenABM gives you exactly that.

[ZenABM pulls company-level LinkedIn ad engagement data for each ad campaign and campaign group](/companies-engagements) from the LinkedIn ads API, and then [calculates both a total engagement score and a current engagement score](/use-cases/account-scoring) for each account.

![ZenABM table of company-level LinkedIn ad engagement per campaign, pulled from the official LinkedIn API](https://cdn.zenabm.com/media/ZenABM-showing-company-level-ad-LinkedIn-engagement-data-per-campaign-pulled-straight-from-the-official-LinkedIn-API.png)

![ZenABM's current vs total engagement score](https://cdn.zenabm.com/media/ZenABMs-current-vs-total-engagement-score-scaled.png)

## Step 1: choose the signals, and weight them by effort

Only score things that are yours and that you can [trace to a named company](/faq/see-companies-engaging-with-linkedin-ads).

Guessing accounts from a third-party feed puts noise straight into the model.

Weight each signal by how much effort it took the buyer.

An impression costs them nothing.

Downloading a document costs them a little.

Clicking through to your pricing page costs them more.

Here is the starting weight set I would use.

Treat these as a first draft, because step 5 will correct them.

| Signal | Weight | Why |
| **Impression** | 1 | Almost no effort, but it still matters. Impressions correlate with [pipeline](/blog/abm-performance-audit-claude-code) in the benchmark data, even when clicks do not. |
| **Social engagement (like, comment)** | 2 | Cheap to give, and often from people outside your ICP. |
| **Landing page click** | 8 | The click you actually paid for. This is the workhorse signal. |
| **Document download** | 12 | Real effort and real interest in the topic. |
| **Video watched to 75 percent or more** | 10 | Attention over time, which is rarer than a click. |
| **Lead form opened but not submitted** | 10 | Interest plus hesitation. Badly underused as a signal. |
| **Lead form submitted** | 20 | They gave you their details on purpose. |
| **Pricing or demo page visit** | 25 | The strongest ad-adjacent signal you can collect. |

Two rules about this table.

Do not weight CTR heavily as its own factor.

In the [ZenABM ABM benchmarks report of 211 companies](/blog/linkedin-abm-performance-benchmarks-report-2026), 161,256 ads and $5.5M in spend, CTR against pipeline generation returned a Spearman rho of minus 0.170.

Higher CTR did not mean more pipeline, so a score that chases clicks can point away from revenue.

And weigh the person, not just the action.

An engagement from a buyer in your target role is worth more than one from an intern.

[ZenABM’s job title insights](/job-titles-insights) show which roles are actually engaging, so you can apply a multiplier for in-persona engagement.

![ZenABM job title analytics: campaign groups for Growth Specialist with impressions, clicks and CTR](https://cdn.zenabm.com/media/Job-title-analytics-in-ZenABM-e1763015217744.jpeg)

## Step 2: normalize, so you score interest and not headcount

This is the step that fixes flaw one, and it is one line of maths.

Instead of a raw total, divide by the exposure that the account received:

> **Engagement rate = weighted engagements divided by impressions, in your chosen window**

Now, a 200-person [company that engaged](/blog/track-companies-engaging-with-linkedin-ads) 6 times out of 400 impressions scores higher than a 6,000-person company that engaged 20 times out of 9,000 impressions.

Which is correct, because the small company is far more interested.

This is exactly what [ZenABM’s current engagement score](/use-cases/account-scoring) is calculated like this: engagements over impressions in the window you select.

So if you are using [ZenABM](/company-buyers-intent), the normalization is already done.

![ZenABM's current vs total engagement score](https://cdn.zenabm.com/media/ZenABMs-current-vs-total-engagement-score-scaled.png)

### Add a breadth multiplier

A rate alone still cannot tell one enthusiastic person from a committee.

The average B2B buying committee is 11 people, as per [Gartner,](https://www.gartner.com/en/sales/insights/b2b-buying-journey) so an account with four distinct people engaged is in a genuinely different state from an account with one person engaging four times.

Multiply your score by the number of distinct people engaged, capped at something sensible like 5, so one very active [account cannot run away with the list](/blog/abm-target-account-list-building-clay).

## Step 3: add time decay so the score can fall

This fixes flaw two.

Apply a multiplier based on how old each engagement is, then sum.

A curve that works for most B2B teams:

| Age of the engagement | Multiplier | What it means |
| **0 to 30 days** | 1.0 | Full value. This is what sales should act on. |
| **31 to 60 days** | 0.75 | Still warm, still worth nurturing. |
| **61 to 90 days** | 0.5 | Cooling. Change the message before you call. |
| **Over 90 days** | 0.1 | Context, not a reason to act. |

Tune the curve to your sales cycle rather than copying it blindly.

A reasonable rule: engagement should lose about half its value by the halfway point of your average cycle and be close to zero by the end of it.

A 60-day cycle needs a much steeper curve than a 9-month enterprise cycle.

### The shortcut: keep two scores instead of one

If decay maths feels like more than you want to maintain, there is a simpler version that gets you most of the value.

Keep a current score (a rate over the last 30 or 90 days) and a total score (all time), then read the pair.

- **High current, low total:** a new account heating up fast. Route this one today.
- **High current, high total:** steadily engaged. Your best nurture accounts.
- **Low current, high total:** cooling off. A re-engagement play, not a sales call.
- **Low current, low total:** not engaged. Leave it in the cold layer.

That four-box read is what we actually use day to day, and it needs no decay curve at all. It also feeds tiering cleanly, which we cover in the [tiered account segmentation guide](/blog/tiered-account-segmentation-abm).

## Step 4: gate on fit, then set the threshold that makes it act

Two things turn a number into a system.

### The fit gate comes first and stays separate

An [account only enters scoring](/blog/linkedin-ad-analytics-for-account-scoring) if it passes your ICP: industry, size, region, and any hard disqualifiers.

Keep fit as a gate rather than folding it into the score.

If you blend them, a perfect-fit account with no engagement can outrank a genuinely warm one, and nobody can explain why an account ranked where it did.

Without the gate, your top ten fills with agencies, competitors, and job seekers, all of whom engage happily and buy nothing.

### The threshold turns the score into a decision

A score with no threshold is a leaderboard nobody acts on.

Write the rule down as a number.

These are the thresholds Emilia Korczynska ran in her [ABM program](/blog/abm-program) at Userpilot, which produced $5.29M in pipeline from $490K of spend across 26,315 accounts (note: these success numbers are variable as their program is still running):

| Stage | Threshold to enter | What happens |
| **Identified** | On the [target account list](/blog/choose-target-accounts-for-abm) | Cold reach only |
| **Aware** | 50 or more ad impressions | Keep showing up, ask for nothing |
| **Interested** | 5 or more clicks, or 10 or more engagements | Switch to proof, fire a BDR task |
| **Considering** | Booked a demo or started a trial | Sales led, ads support the deal |
| **Selecting** | Open deal in the CRM | Multi-thread across the committee |

![Six-stage ABM funnel with 5-100 account scores per stage, used at Userpilot for LinkedIn ABM campaigns](https://cdn.zenabm.com/media/ABM-stages-framework-used-at-Userpilot-as-part-of-their-LinkedIn-ABM-campaign-strategy.png)

In ZenABM, you set these conditions yourself rather than accepting a fixed funnel, and you can build them from [ad engagement](/blog/linkedin-ad-engagement-analytics-zenabm), CRM properties, form fills, webinar signups, or deal stages in any combination.

![ABM stage tracking in ZenABM](https://cdn.zenabm.com/media/zenabm-abm-stages-management.png)

Then [ZenABM](/crm-sync) also pushes the score and stage into your CRM as company properties, so the account a rep opens already carries them.

![Interested stage as company property in the CRM](https://cdn.zenabm.com/media/ZenABM-interested-stage-as-company-property-in-the-CRM-1-scaled.png)

![ZenABM assigns accounts in the "interested" stage to BDRs in your CRM](https://cdn.zenabm.com/media/zenabm-hubspot-crm-account-assignment.png)

## Step 5: validate the score against closed-won

This is the step almost nobody runs, and it is the only one that tells you whether any of the above was right.

Your weights are guesses until you check them against outcomes.

### Run the backtest

Take the accounts from last year.

Apply your draft score using only the data that existed before each deal opened. Then sort.

If the [accounts you actually won cluster](/blog/ai-abm-segmentation) near the top, your weights are close.

If your closed-won deals land in the bottom tier, your weights are wrong, and you have just saved yourself a year of trusting a broken model.

Here is the prompt I use, run against live data through the [ZenABM MCP server](/mcp):

> Take every company with an open or closed-won deal in the last 12 months. For each, calculate its engagement score using only ad engagement that happened before the deal was created: weighted engagements divided by impressions, multiplied by the number of distinct people who engaged. Then do the same for a [comparison set of companies that engaged](/blog/demandbase-vs-rollworks) but never opened a deal. Tell me whether the deal accounts scored meaningfully higher, show the median score for each group, and say clearly if the sample is too small to conclude anything.

This is what the result would look like:

![Running the backtest in Claude Code connected to the ZenABM MCP server where it compared pre-deal ad engagement ratios for 59 deal accounts versus 488 non-deal accounts and concluded that the sample was too small](https://cdn.zenabm.com/assets/Running-the-backtest-in-Claude-Code.gif)

Notably, that last clause in the [prompt](/blog/optimize-linkedin-ads-with-chatgpt) matters!

Under about 10 accounts in a group there is nothing to conclude, and the `/revenue-attribution` skill applies the same rule rather than [reporting](/blog/linkedin-ads-data-export-ai-analysis) a confident number off four companies.

![Claude Code running a ZenABM revenue attribution skill, comparing influenced and non-influenced deal value](https://cdn.zenabm.com/media/Revenue-attribution-skill-result-using-ZenABM-MCP-server-in-Claude-Code.png)

![ZenABM revenue attribution dashboard tracking ABM ad spend, pipeline and closed revenue by month](https://cdn.zenabm.com/media/ZenABM-abm-revenue-attribution-campaign-dashboard-.png)

### Adjust one weight at a time

If the backtest is weak, change one weight and rerun.

Changing five at once teaches you nothing about which one mattered.

Recalibrate quarterly.

Your creative, audience, and sales cycle all move, and a score set in January is usually stale by summer.

The [ABM KPIs guide](/blog/abm-kpis) covers the wider reporting rhythm that this sits inside.

### Check the score against the journey

Numbers convince analysts.

Timelines convince sales.

The engagement journey in ZenBAM maps every [ad](/blog/track-linkedin-ad-contacts-in-crm) touchpoint against CRM deal events, so you can see whether high-scoring accounts really did engage before the deal opened.

![ZenABM ad sets timeline mapping PayPal's engagement journey across LinkedIn campaigns and dates](https://cdn.zenabm.com/media/PayPal-ZenABM-company-engagement-journey-mapping--scaled.png)

## Building it without writing any code

You can assemble all of this by hand from the LinkedIn Ads API, and I have.

It is a real engineering project, mostly spent on the company-level join.

If you would rather not, [ZenABM gives you the pieces](/blog/multi-touch-attribution-linkedin-ads) already built.

- **The scores.** Current and total engagement scores per company, computed from company-level engagement pulled straight from the LinkedIn Ads API. The [account scoring use case](/use-cases/account-scoring) walks through what the setup looks like end-to-end.

ZenABM’s current and total engagement scores help surface hot accounts.
- **The stages.** Your own names and thresholds, with stage history so you can see movement over time, which is the score expressed as an [ABM funnel](/blog/abm-funnel).

![ABM stage tracking and customization in ZenABM](https://cdn.zenabm.com/media/ABM-Stages.png)

- **The qualitative layer.** Tag campaigns with [intent themes](/company-buyers-intent) and engaging accounts inherit the label, so the score comes with a reason attached rather than just a number.

Company buyer’s qualitative intent in ZenABM, which essentially tracks which particular messaging has resonated the most with the account.
- **The other channels.** Ads are not the only place accounts engage, so ZenABM also folds in [Google Ads, Reddit Ads, organic traffic, and AI chatbot referrals](/multichannel-attribution) on the same account record.

Multi-channel closed-attribution in ZenABM

## Running and sanity-checking the score with AI

Once the [MCP server](/mcp) is connected (endpoint `https://app.zenabm.com/api/mcp`, Bearer token or OAuth, then `/init` to write a CLAUDE.md), [Claude Code](/blog/ai-for-abm-reporting) or ChatGPT can compute and interrogate the score directly.

> Rank my [accounts by engagement score](/faq/account-scoring-abm-linkedin) for the last 60 days. Calculate it as weighted engagements divided by impressions, where a landing page click counts 8, a document download 12, a form submit 20, a social engagement 2 and an impression 1. Multiply by the number of distinct people who engaged, capped at 5. Only include [accounts that match my ICP](/blog/abm-segmentation) of B2B SaaS, 200 to 2000 employees, in North America or Western Europe. Show the inputs next to each score so I can check the maths.

What the result would look like:

![Ranked table of 25 accounts by engagement score over 60 days, led by Palats at 0.8046 with impressions and clicks](https://cdn.zenabm.com/media/Ranking-engaged-accounts.png)

Ask it to challenge the model too, which is the step people skip:

> Look at my top 20 [accounts by engagement score](/blog/abm-engagement-penetration-strategy). For each, show total impressions and the number of distinct people who engaged. Tell me whether any of these accounts rank highly mainly because they are large rather than because they are genuinely engaged, and suggest a normalization that would correct it.

Three of the 15 skills the MCP server ships as slash commands do this work for you.

`/account-engagement` sorts every account into warm, cold, budget hog, or bad fit with an exclusion list. `/company-deep-dive` returns everything on one account with a single verdict.

`/sales-handoff` produces the scored call list with a talking point per row.

And if you would rather not set anything up, [Zena](/linkedin-ads-expert-chat) answers the same questions inside the app.

![Zena AI chat in ZenABM ranking top 10 engaged companies for November 2025 with ABM stage and engagements](https://cdn.zenabm.com/media/Zena-ZenABM-top-engaged-companies-in-a-month.png)

## Five mistakes that break an engagement score

The five scoring mistakes you must absolutely avoid:

### Scoring before gating on fit

The single fastest way to lose your sales team. Filter to ICP first, always.

### Making the score too complicated to explain

If a rep asks why an account ranked third and you cannot answer in one sentence, they will stop using it. [Every score should decompose into signals](/blog/b2b-buying-signals-abm), people, and dates.

### Weighting CTR heavily

The [benchmark says CTR](/blog/linkedin-ads-ctr-benchmarks) does not predict pipeline. Weight landing page clicks and deeper actions instead.

### Never validating

An unvalidated score is a guess wearing a decimal point. Run the backtest before you ask anyone to work the list.

### Changing the model mid-quarter

Tempting when the numbers look thin, and it destroys comparability. Change weights at quarter boundaries and note the change in your reporting.

## The takeaway

An account engagement score is easy to build and easy to build badly.

Divide by impressions so you are measuring interest rather than headcount. Multiply by the number of people engaged, so a committee outranks an individual.

Decay it so last quarter stops crowding out this week. Gate it on fit so agencies stay off the list. Then backtest it, because everything above is a hypothesis until closed-won deals confirm it.

If you want the fastest useful version, skip the decay maths entirely and read two numbers: a current engagement rate and an all-time total. That four-box view answers who is heating up, who is steady, and who has gone quiet, and it takes an afternoon rather than a sprint.

The company-level engagement underneath all of this is the part LinkedIn does not hand you.

If you want the scores already calculated on your own account, [ZenABM is free for 37 days](https://app.zenabm.com/signup) with full functionality, and the current and total scores, stages, and CRM sync can be live before your next pipeline review.

[You can also book a demo with us to learn more.](/book-a-demo)

## Frequently asked questions

### What is a LinkedIn ads account engagement score?

It is a single number per company that summarises how much that company has engaged with your LinkedIn ads, weighted by the effort each action took and adjusted for how recent it was. Unlike a lead score, it aggregates every person at the account, which matters because the average B2B buying committee is 11 people. It is used to decide which accounts get more budget, a message change, or a sales call.

### How do you calculate an account engagement score?

Start with weighted engagements divided by impressions in a chosen window, which normalizes for company size. Multiply by the number of distinct people who engaged, capped at around 5, so one active person cannot mimic a committee. Then apply a recency multiplier: full value in the last 30 days, 0.75 to 60 days, 0.5 to 90 days, and 0.1 beyond. Gate the whole thing on ICP fit first.

### Why does my engagement score always rank big companies highest?

Because you are scoring raw counts. LinkedIn delivers ads to people, so a company with 40 employees in your target roles collects far more impressions and clicks than one with 4, regardless of interest. The fix is normalization: divide engagements by impressions so the score becomes a rate. [ZenABM’s current engagement score is calculated](/free-tools/abm-budget-calculator) this way, so the correction is built in.

### What signals should a LinkedIn account engagement score include?

Weight by buyer effort. Impressions count 1, social engagements 2, landing page clicks 8, video views past 75 percent around 10, lead form opens 10, form submissions 20, and pricing or demo page visits 25. Add a multiplier for engagement from in-persona job titles. Avoid weighting CTR heavily, since the [ZenABM benchmark of 211 companies](/) found a slight negative relationship between CTR and pipeline.

### How do I know if my account scoring model actually works?

Backtest it. Take last year’s accounts, calculate the score using only data that existed before each deal was created, and check where your closed-won deals rank. If they cluster near the top, the weights are close. If they land in the bottom tier, the weights are wrong. Ignore any result drawn from fewer than 10 accounts, and recalibrate the model quarterly.

### Should account fit be part of the engagement score?

No, keep them separate. Use fit as a gate that decides which accounts enter scoring at all, then score engagement on its own. Blending them lets a perfect-fit account with zero engagement outrank a genuinely warm one, and it makes the number impossible to explain to a rep. Reading them as two axes, engagement against fit, gives you a clearer decision than one merged score.

## Images

- https://cdn.zenabm.com/assets/company-buyers-intent-in-ZenABM.gif
- https://cdn.zenabm.com/media/zenabm-linkedin-google-ads-analytics.png
