What Are Signal Campaigns? Attribution That Ends in Revenue

Simon SSimon S
9 min read
What Are Signal Campaigns? Attribution That Ends in Revenue

You launch a campaign on Meta, Google, or TikTok. A day later the dashboard looks healthy: clicks are up, the cost per install is reasonable, installs are climbing. Every number on the screen is green.

None of those numbers tell you the only thing that matters, which is whether any of those installs turned into paying users.

That is the gap a Signal Campaign closes. A normal campaign optimizes toward the install and stops there. A Signal Campaign keeps going: it connects the same user from the ad click through the install and into the in-app events that actually carry money, the trial start, the subscription, the purchase. Then it sends those outcomes back to the ad network so the network learns to find more people like them.

What a Signal Campaign actually is

A Signal Campaign is a paid acquisition campaign with the full journey instrumented, not just the front of it.

Concretely, that means four things are connected as one chain:

  1. The ad click is captured with its campaign context.
  2. The install that follows is connected back to that click.
  3. The in-app events after install (trial, subscription, purchase, or any custom event you log) are recorded against the same source.
  4. Those revenue events are forwarded back to the ad network in real time through its conversions API.
A Signal Campaign is a closed loop: an ad click leads to an install, the install leads to in-app revenue events like trials and subscriptions, and those revenue outcomes are fed back to the ad networks in real time.
A Signal Campaign is a closed loop: the outcome that matters, revenue, is fed back to the channel that drove it.

The result is a feedback loop instead of a funnel that dead-ends at the install. You stop asking "how many installs did this campaign buy" and start asking "how much subscription revenue did this campaign buy, and at what return on ad spend."

Why install metrics quietly mislead you

Cost per install is a satisfying number because it is easy to get and always available. It is also a poor proxy for campaign quality, because two campaigns with identical cost per install can produce wildly different revenue.

Campaign A buys cheap installs from users who open the app once and never come back. Campaign B buys slightly pricier installs from users who start a trial and convert to an annual plan. On a cost-per-install dashboard, Campaign A looks like the winner. In your bank account, Campaign B is the only one worth scaling.

Two campaigns with the same cost per install can have opposite returns on ad spend. The install number cannot tell them apart.

This problem got sharper after App Tracking Transparency (ATT). Before iOS 14.5, every iPhone carried an Identifier for Advertisers (IDFA), a device-level ID that let an ad network see exactly which ad drove which install, and which of those installs later subscribed. ATT made that identifier opt-in, and most users decline. As of Adjust's 2025 benchmark, the global average opt-in rate sits around 35 percent, higher in some verticals and lower in others, but a long way from a number you can build measurement on.

~35%
global average ATT opt-in rate in 2025, which means most installs arrive with no IDFA for the ad network to match on
Adjust, ATT opt-in benchmarks, 2025

Without the IDFA, the ad network goes partly blind to what happens after the click. It cannot see most of the conversions it actually drove, so it undercounts them. You have felt this if you have ever put Meta Ads Manager next to your own spreadsheet and watched the two refuse to agree. The campaign Ads Manager reports at a 40 dollar cost per acquisition is sitting closer to 25 dollars in your own numbers, because your spreadsheet counts the subscriptions Meta never saw. Same campaign, same week, a cost per acquisition that reads 50 to 60 percent higher inside the platform than in reality. The platform is not lying. It is reporting on the fraction of the outcome it can still observe.

So a Signal Campaign cannot depend on a single hard identifier being present. It has to connect the journey using the signals that are available, and then hand the network back the conversions it could not see on its own. That second half, feeding the truth back, is the reason the loop closes where it does.

How the connection is made: AI Probabilistic Signal Matching

When a hard device identifier is not available, you connect a click to the install that followed it by reasoning over a basket of privacy-safe signals together rather than relying on any one of them. SignalSeal calls this AI Probabilistic Signal Matching.

The idea is straightforward even if the math behind it is not. A single weak signal proves nothing on its own. A set of weak signals, weighted and evaluated together, can connect a click to an install with high confidence and a known error rate. The system produces a probability that this install belongs to that campaign, and you act on the matches that clear a confidence bar.

This is the part of the stack that the legacy mobile measurement partner (MMP) world built around SKAdNetwork (SKAN), Apple's privacy framework, treating its delayed and lossy postbacks as the system of record. A Signal Campaign treats first-party signals as the system of record instead, and uses SKAN as one input among several rather than the foundation.

A Signal Campaign does not try to re-identify a specific person. It estimates, with a confidence score, whether an install belongs to a campaign, using signals together rather than tracking an individual across apps. The output is an attributed outcome, not a profile.

It is easy to conflate two things that are related but not the same.

A signal link is a single tracked link. It captures the click context for one tap. It is a component.

A Signal Campaign is the whole instrumented system: the link, the install connection, the in-app revenue events, and the real-time fan-out back to the network. The link is step one of four. On its own it tells you a click happened. The campaign tells you what that click was worth.

It is also distinct from a web-to-app funnel. Some teams route paid traffic through a marketing webpage, capture an email or a checkout intent there, and then send the user to the App Store. That can work, but it adds a page, a drop-off point, and friction between the ad and the install. A Signal Campaign does not require any of that. It connects the ad directly to the install and to the events that follow, with no intermediate funnel to leak users.

The metrics a Signal Campaign gives you

Once the loop is closed, your reporting changes shape. You stop looking at acquisition metrics in isolation and start looking at the whole chain per source.

Spend → Install
cost per install, the input most teams already track
Install → Trial
how many installs actually start a trial, by campaign
Trial → Revenue
trials, subscriptions, and purchases tied back to source

The number that ties it together is return on ad spend (ROAS) by source: revenue produced divided by spend, per campaign, ad group, and country. That is the metric you can actually make budget decisions on. Cost per install tells you how cheaply you bought attention. ROAS tells you whether the attention was worth buying.

When you are ready for Signal Campaigns

This is not a setup every app needs on day one. A Signal Campaign earns its keep when three things are true:

  • You are spending real money on paid acquisition. If you are not running paid campaigns yet, there is no loop to close. Organic installs do not have an ad source to optimize.
  • You have a revenue model with measurable events. Subscription and in-app-purchase apps are the natural fit, because the trial and the subscription are clean, valuable events to optimize toward. A purely ad-monetized app has a fuzzier signal.
  • You already track revenue you trust. If your subscription revenue lives in RevenueCat or Superwall, the revenue half of the loop is mostly built. The campaign just needs to read it.

If those are true, you are leaving money on the table by optimizing toward installs. If they are not yet, build the revenue tracking first and come back.

Where SignalSeal fits

SignalSeal is a deliberately small MMP built to run Signal Campaigns and little else. The product is the loop in the diagram above: signal links that capture the click, AI Probabilistic Signal Matching that connects the install, an SDK that logs your in-app events, native revenue ingestion from RevenueCat and Superwall, and real-time conversion fan-out to Meta Conversions API (CAPI), Google Ads, and TikTok Events API. One blended view of spend, installs, and revenue per source sits on top.

What it deliberately does not do is worth saying plainly. SignalSeal is not a fraud suite, not an audience builder or customer data platform (CDP), not a multi-touch attribution model, and not a product-analytics tool. If you need those, use a specialist. If you need the click-to-revenue loop closed and fed back to your ad networks, that is the whole product.

Key takeaways
  • A Signal Campaign is a paid campaign instrumented end to end: click, install, in-app revenue event, and real-time fan-out back to the network. Not just the install.
  • Cost per install is a vanity metric in isolation. Two campaigns with the same CPI can have opposite ROAS. Only the revenue tie-back tells them apart.
  • It does not need a hard device identifier. AI Probabilistic Signal Matching connects the journey by weighing privacy-safe signals together, which is what post-ATT measurement requires.
  • It is not a single link and not a web funnel. The link is one component; the funnel is a different, leakier approach.
  • You are ready when you have real paid spend, a revenue model with measurable events, and revenue you already trust in a tool like RevenueCat or Superwall.

The shift is small to describe and large in practice. Stop optimizing toward the cheapest install and start optimizing toward the most valuable user. A Signal Campaign is just the plumbing that makes that possible, by carrying the outcome that matters all the way back to the channel that produced it.

Want to run your first Signal Campaign? Start for free. No credit card required.

Frequently asked questions

What is a Signal Campaign?

A Signal Campaign is a paid acquisition campaign instrumented end to end. It connects the ad click to the install that follows, then to the in-app events that carry revenue (trial, subscription, purchase), and forwards those outcomes back to the ad network in real time. The result is a feedback loop that optimizes toward paying users instead of stopping at the install.

How is a Signal Campaign different from a normal app install campaign?

A normal campaign optimizes toward the install and stops there, so two campaigns with the same cost per install look identical even when one produces paying subscribers and the other produces users who never come back. A Signal Campaign keeps measuring past the install, ties revenue back to the source, and reports return on ad spend per campaign instead of just cost per install.

Do Signal Campaigns need the IDFA to work?

No. The Identifier for Advertisers (IDFA) is opt-in under App Tracking Transparency, and most users decline, so a Signal Campaign cannot depend on it being present. It connects the journey using the privacy-safe signals that are available, weighed together with AI Probabilistic Signal Matching, and feeds the resulting conversions back to the ad networks that could not observe them on their own.

Why does Meta Ads Manager report a higher cost per acquisition than my own numbers?

Because without the IDFA the ad network cannot see most of the conversions it actually drove, so it undercounts them and the cost per acquisition it reports reads higher than reality. Your own spreadsheet, tied to real subscription revenue, counts the conversions the platform missed. A Signal Campaign closes that gap by sending the conversions back to the network through its conversions API.

When should an app start running Signal Campaigns?

When three things are true: you are spending real money on paid acquisition, you have a revenue model with measurable events such as trials and subscriptions, and you already track revenue you trust (for example in RevenueCat or Superwall). If you are not running paid campaigns yet, there is no loop to close. Build the revenue tracking first.

Share this article:

SignalSeal

Attribution that ships with you.

Self-serve onboarding, transparent pricing, and the signals your growth team has been asking for.

Start for freeNo credit card required

Keep reading