Signal-based advertising.
What signal-based advertising is, which buying signals are real, which are noise, and what you can actually act on. A working guide to signal ads.
Signal-based advertising triggers ads off what a buyer just did rather than which list they sit on. The trigger is a dated event — a pricing-page visit, a job change, a competitor comparison — and the ad runs while it is still fresh. The idea is sound. The part nobody publishes is which signals survive contact with an ad platform.
Last reviewed: 2026-07-29.
I run a contact-level advertising platform, so I sit on the activation end of this. That is also why I am writing the version of this page that starts with the constraints instead of the promise.
Every vendor page on this topic describes the same happy path: a buyer does something, an audience updates, an ad appears. All true. What none of them tell you is that roughly half the signals people get excited about cannot be advertised to at all — because they are attached to a company rather than a person, because the audience they produce is too small for the platform to deliver, or because nobody actually observed the event.
So this page does four things. It disambiguates the search term, which is messier than it looks. It sorts the real signals from the noise with a table you can argue with. It explains why audience floors, not signal quality, kill most signal programmes. And it says plainly what this approach cannot do.
If you searched "signal ad," which one did you mean?
Worth clearing up first, because the live July 2026 search results for signal ad and signal ads are four different industries wearing the same name.
| What you may have meant | What it actually is | Where to go |
|---|---|---|
| Signal-based advertising (B2B) | Building ad audiences from observed buyer events instead of static lists | This page |
| Signal-based marketing (retail/DSP) | The addressability sense: reaching audiences without third-party cookies. Amazon Ads' framing | Amazon Ads' guide |
| Signal's ads | The encrypted messenger's 2021 Instagram campaign that displayed the ad-targeting data used to serve it. Signal said the campaign got its ad account disabled; Facebook said the ads were never actually submitted. It went viral either way | signal.org |
| Sovrn Signal | A publisher-side product that sets dynamic ad floors from attention and auction data. Sell side, not buy side | sovrn.com/signal |
| Ad Signal | A UK software company doing content management and ad tracking for broadcasters and post-production | Ad Signal coverage |
If you are a B2B marketer, you want the first row, and the second row is the useful cousin. Keep reading.
What is a signal ad?
A signal ad is an ad whose audience membership is driven by a dated event rather than by a fixed attribute. The event is the trigger; the ad is the response. "VP of Engineering at a 500-person SaaS company" is an attribute. "Read the pricing page twice this week" is a signal.
Amazon Ads gives the cleanest neutral definition of the underlying unit. Signals are "a wide range of consumer events and behaviors, at particular moments in time, that can indicate interests and affinities", and signal-based marketing is "leveraging available signals and machine learning to deliver relevant messages without the need to rely on third-party cookies."
Note the phrase doing the work: at particular moments in time. A signal without a timestamp is an attribute. An attribute without a decay window is a list.
The reason the category exists now rather than five years ago is addressability. Amazon's own guide puts almost 40% of web traffic and 37% of app traffic outside the reach of traditional methods today, and says brands running its DSP saw a 20% to 30% increase in addressability on Safari, Firefox and iOS — that second figure is footnoted as Amazon internal US data from 2022 across 140,000 campaigns, so read it as directional and four years old. The cookie-shaped hole is real even though Chrome reversed its deprecation plan in 2025. Signals are one of the things filling it.
Which signals actually exist, and which can you act on?
Here is the table I wish somebody had handed me. Two columns matter more than the rest: observed or inferred, and person or company. A signal that is inferred and company-level is a prioritisation input. Only a signal that is observed and person-level can start a campaign aimed at a named human.
| Signal | Source | Observed or inferred | Person or company | Roughly how long it stays true | Can you build an ad audience from it alone? |
|---|---|---|---|---|---|
| Ad click | Your ad account | Observed | Person | Days | Yes |
| Pricing / demo page visit by a known contact | Your site + your own audience | Observed | Person | Days | Yes |
| Product usage event | Your product | Observed | Person | Days to weeks | Yes |
| CRM stage change, demo no-show, closed-lost | Your CRM | Observed | Person | Weeks | Yes |
| Renewal or contract date | Your CRM | Observed | Person | Known in advance | Yes |
| Email or sequence engagement | Your sequencer | Observed | Person | Days | Yes |
| Person-level third-party research | An intent feed such as Buyerfeeds | Observed by the feed | Person | Days to weeks | Yes |
| Job change | Contact data vendor | Observed, but late | Person | Months, and it is a one-off | Yes, if the record is fresh |
| Anonymous visitor identification | RB2B, Dealfront, Datamoon | Observed then resolved | Person, partially | Days | Yes, at the coverage the vendor publishes |
| Third-party topic surge | Bombora, 6sense, Demandbase | Observed in aggregate | Company | Weeks | No — prioritise accounts, then resolve people |
| Technographic install | Contact data vendor | Inferred | Company | Months | No — it is a filter |
| Funding round, headcount growth, hiring | News and job boards | Observed | Company | Months | No — it is a filter |
| Modelled "person-level" intent | Vendor scoring model | Inferred | Person, modelled | Unstated | Only if you accept a guess as a trigger |
| Homepage or careers-page visit | Your site | Observed | Mostly anonymous | Days | No — fires on everyone, converts on no one |
Two rows deserve a note.
Modelled person-level intent is the one to read the contract on. Several vendors now ship something with "person" in the product name that is a model estimating which member of a buying committee probably did the research. That is genuinely useful for sequencing sales outreach. It is not evidence, and if you spend media budget as if it were, you are paying CPM to a name a model picked. I go through which providers observe versus model in intent data providers.
Anonymous visitor identification is a real signal and a real product, and it is not what ContactLevel does. If you need to know which unknown human is on your site right now, run a tool built for it. RB2B publishes its own coverage on its pricing page: 15-20% for contact-level site identification, rising to 35-45% on its top tier, US only. That is a coverage figure for your traffic, not a list match rate, and mixing the two is the single most common mistake in this category — see B2B match rates for the three different things the phrase is used for.
Which signals are noise?
Four failure patterns, in order of how much money they waste.
→ The company-level signal treated as a person-level trigger. A dashboard says Acme Corp is surging on account-based marketing. Acme has 240 employees. The tool cannot tell you which one read anything. A rep filters by title, picks a VP, and writes about a topic that person may never have touched. That is not a signal, it is a coin flip with a subscription fee. The account surge is still useful — it tells you where to spend the resolution effort. It just is not a trigger.
→ The signal that fires on everybody. Homepage visits. Blog readers. Careers-page traffic. If a trigger matches 40% of your database it is a segment with a fresh timestamp, and it will perform exactly like your all-contacts audience because it very nearly is one.
→ The signal with an unstated decay window. This is the quiet one. There is no independent benchmark for B2B data freshness, and the published estimates do not line up with each other. Landbase's blog states that "B2B contact data decays between 22.5% and 70.3% annually" and gives no citation for that range. Cleanlist publishes a flat 22.5% a year and attributes it to a Dun & Bradstreet benchmark report. A threefold spread usually means the underlying samples differ rather than that anyone is wrong — but none of these figures come with enough method to check, ours included. Set your decay windows from your own data, and treat any vendor freshness number, including any of ours, as an estimate until somebody shows the working.
→ The signal you cannot reach. Covered next, because it is the big one.
Why the audience, not the signal, is the hard part
A signal audience is small by definition. That is the point of it. It is also why signal programmes stall.
Ad platforms enforce minimum matched audience sizes before they will deliver anything:
| Platform | Minimum before delivery |
|---|---|
| 300 matched members (LinkedIn Help) | |
| Google Search, Display, YouTube | 100 active users in the last 30 days (Google Ads Help); Customer Match files need 100 user records minimum (Google Ads Help) |
| X | 100 matched (X Ads API; X's Business Help pages did not resolve on 2026-07-29) |
| Commonly cited as 1,000 matched, unverified — Reddit's help centre returns an error shell, so this figure has no readable public source |
Google is the lowest floor of the five, and it is the one people forget. Google cut the Search Network threshold from 1,000 active users to 100 in 2024, so a signal audience that is dead on LinkedIn can still run on Google Customer Match. That is the cheapest honest fix for a small audience, and audience minimums and filler accounts works through when to use it.
Now run the arithmetic on a real trigger. Say 40 known contacts hit your pricing page in a week. That is a strong signal and a healthy number for a mid-market B2B site. On LinkedIn it is worth nothing: 40 is not 300, and even at a perfect match rate the audience will not deliver.
And 40 is the optimistic version, because the platform does not receive 40 people — it receives however many of those 40 it can match to a real account. On a raw list of business emails that is commonly 2-20%. Forty becomes four.
That is the whole reason match rate matters more in signal-based advertising than in any other kind. In a broad campaign a mediocre match rate costs you reach. In a signal campaign it costs you the campaign, because you fall under the floor and nothing runs.
There are four honest responses, and the first three are better than the fourth:
- Widen the window. "Visited pricing in the last 30 days" instead of "today."
- Pool signals. One high-intent audience fed by six triggers, not six audiences of nine people.
- Route the small stuff to sales. Eight people is a terrible ad audience and an excellent call list.
- Raise the match rate so more of the people who did fire the signal actually reach the platform.
What you should not do is accept a vendor's offer to pad the audience up to the minimum with lookalike or filler accounts. That is how a 40-person signal audience becomes a 1,000-person audience of strangers, and how you end up paying to advertise to people who have never heard of you while your dashboard reports a healthy campaign. The mechanic, and what the padding is made of, is in audience minimums and filler accounts.
How is signal-based advertising different from intent data?
They get sold as the same thing and they are two different purchases.
| Intent data | Signal-based advertising | |
|---|---|---|
| What it is | A source of buying signals | The activation layer that turns signals into live audiences |
| Where it comes from | Mostly purchased, mostly third-party | Mostly your own site, product, CRM and ad accounts |
| What it resolves to | Usually an account; sometimes a person | Whatever you feed it |
| What it costs | Usually quoted on request, annual | Priced with your activation tool |
| What it cannot do | Reach anybody | Generate a signal |
You can run signal-based advertising with no purchased intent data at all, using nothing but your own events. Most teams should start there — first-party signals are observed, person-level and free, which is three properties no purchased feed gives you at once. I set out how to build that base in first-party data strategy.
And you can buy excellent intent data and be unable to run a single signal ad off it. That is the more common failure, and it is an identity problem rather than a data problem: the feed named an account, and an account cannot be added to an ad audience.
Where each layer sits in our own stack, since you should know the bias: Buyerfeeds is the person-level intent feed — you search a topic on the open web and get named contacts back, not an account surge. ContactLevel is the activation layer that puts those named people into ad platforms. Your CRM and sequencer do orchestration. That is the unbundled version of an annual enterprise ABM suite, and it is deliberately three tools rather than one. None of those suites publish a price, so I am not going to put a number on what you would otherwise pay — intent data providers documents who publishes what. More on the account-versus-person split in B2B intent data.
Which tools actually do this?
Named, with what each one contributes and what it does not. Checked against each vendor's live pages in July 2026.
| Tool | What it contributes to a signal programme | Published numbers (checked July 2026) | What it does not do |
|---|---|---|---|
| ContactLevel | Activation. Matches a named contact list to real ad accounts and syncs to LinkedIn, Meta, Google, Reddit, X; reports clicks per named person | 70-99% match rate. $1,000/month for 10,000 contacts, $3,000/quarter for 50,000 (pricing) | Not a signal source. No anonymous net-new visitor ID, no third-party intent, no person-level impression tracking (what we track) |
| Buyerfeeds | Person-level third-party intent as a feed, via dashboard or API | Not published | Not an ad platform. It names people; something else has to reach them |
| Vector | Contact-level advertising and signal-driven audiences; markets itself on the "signal-based advertising" framing | States "match rates up to 45% on Google/Meta and 90% on LinkedIn" | See ContactLevel vs Vector |
| RB2B | Anonymous website visitor identification — a genuine upstream signal source | 15-20% contact-level site-ID coverage on its lower tiers, 35-45% on Pro+, US only; its company-level ID is listed as global. $79-$199/month | Not an activation layer. Identifies visitors, does not run the ads |
| Bombora / 6sense / Demandbase | Third-party topic intent; account prioritisation | Not published; annual enterprise contracts | Account-level. Cannot start a person-level campaign on its own |
| HubSpot | Syncs contact and company segments to Facebook, Google and LinkedIn from CRM lists | No match rate published. Warns that "audience size is expected to be significantly lower than the number of… contacts in the segment" (HubSpot) | Sends the identifiers already on the record. No identity enrichment step |
| Clay | Waterfall enrichment and workflow automation; syncs ad audiences to LinkedIn, Meta and Google | No coverage figure published | Enrichment coverage varies by the providers you buy inside it; not an ad platform |
| Apollo | B2B contact and account data, CRM enrichment | No match rate published | Business contact data for outbound. No ad-audience sync on its enrichment product |
| LinkedIn native | Contact and company targeting from a CSV | 300 matched member minimum; shows sub-5% when fewer than 300 match | Matches only what you upload. LinkedIn only |
The pattern worth noticing: most of these publish no match rate at all, and the vendors who do publish one are measuring different things. Vector's 45% and 90% are list-to-platform match. RB2B's 15-45% is coverage of your website traffic. They are not comparable and they get compared constantly — the match-rate arithmetic goes through it vendor by vendor with sources.
What signal-based advertising cannot do
The section the category pages skip.
→ It cannot manufacture reach. Below the platform floor, nothing delivers. No amount of signal quality fixes an audience of nine.
→ It cannot identify your anonymous traffic. A signal is only a signal if you know who fired it. ContactLevel attributes a website visit to a named person only when that person is already in one of your audiences. For cold anonymous traffic you need an identification tool upstream, and we have customers running exactly that arrangement — an RB2B pixel feeding ContactLevel's audiences. Details in deanonymize website traffic.
→ It cannot tell you who saw the ad. ContactLevel resolves ad clicks to the individual person. Person-level ad impressions are on the roadmap and are not in the product today, and I am not putting a date on it because we have missed three. If per-person impression counts are a hard requirement, what we track says so plainly and names the vendor that does it.
→ It is weaker outside the United States. Person-level identification coverage is strongest in the US and degrades elsewhere. We have seen an EMEA list match as low as 25%. Test your own list before you build a signal programme on top of it.
→ It does not replace a demand base. Signals fire on people who already know you exist. If nobody is visiting your pricing page, a signal programme has nothing to work with, and the honest answer is a demand generation problem, not a targeting one.
→ It will not survive a bad decay assumption. Set the window from your own sales cycle, then check it. A 90-day "recent visitor" window on a 30-day sales cycle is a list.
How to run it without kidding yourself
- Inventory your own events first. Site, product, CRM, ad accounts, sequencer. Nearly everyone already has more first-party signal than they are using, and it is observed and person-level, which purchased data usually is not.
- Grade each one with the table above. Observed or inferred, person or company, decay window. Delete the company-level ones from your trigger list and move them to prioritisation.
- Do the audience arithmetic before you build. Expected weekly volume × expected match rate, against the platform floor. If it does not clear, widen, pool, or send it to sales.
- Fix the match rate, because it is the multiplier on everything. A trigger that fires on 500 people and matches at 20% delivers 100 matched — dead on LinkedIn. The same trigger at 70-99% delivers 350-495 and clears the floor. How to raise it.
- Measure per named person, not per audience. The reason to run signal ads instead of broad retargeting is that you can say which buyer clicked. If your reporting still ends at CPM and CTR, you bought the plumbing and kept the old scoreboard. ABM metrics covers what to put on the new one.
Go deeper.
→ B2B match rates — the reference page for what actually matches on each platform, and the three different things the phrase means.
→ B2B intent data — account-level versus person-level, and why the distinction decides what you can activate.
→ Intent data providers — eleven providers, which observe and which model.
→ Contact-level advertising — the activation layer in full: multi-platform reach, CPM maths, per-person attribution.
→ What we track today — the dated, versioned statement of what ContactLevel measures in production. It wins any disagreement with a marketing page, including this one.
→ See pricing — $1,000/month for 10,000 contacts, 14-day free trial, 10,000 contacts included.