Apphud
Why Apphud?PricingContact
Ren
Ren
October 13, 2026
14 min read

You pay an MMP to learn your ROAS. Apphud Deeplinks cuts that bill.

One link per campaign — purchases go back to Meta, TikTok and Google, and revenue by ad shows up in the reports you already use.

14 min read
You pay an MMP to learn your ROAS. Apphud Deeplinks cuts that bill.

You paid for a subscriber. Your ad network sees an install. That gap is expensive.

When Meta, TikTok or Google gets a steady stream of purchase events, it can learn which users actually pay and optimize toward more of them. When all it gets is installs, it learns how to find people who install.

For subscription apps running web-to-app campaigns, that’s a fundamental problem.

The user clicks your ad, lands on your website, taps through to the App Store or Google Play, installs the app and eventually subscribes. Your website knows about the click. Your app knows about the subscription. Your ad network knows about the impression and maybe the install.

The connection between them is where things break.

Apphud Deeplinks closes that gap.

One campaign link connects the web click to the app install, then connects that user to the subscription revenue they generate. Apphud can send purchase, trial and renewal events back to Meta, TikTok and Google — while the resulting revenue stays available in the Apphud reports you already use.

So instead of optimizing for Click → Install, you can optimize for Click → Install → Trial → Purchase → Renewal

That’s the difference between buying installs and buying subscribers.

Your ad network can only optimize for what it can see

Consider a typical web-to-app campaign:

Ad → Landing page → App Store → Install → First open → Trial → Subscription

The web page records the click. Then the user leaves for the store.

On iOS, there’s no simple device identifier you can carry across that journey and hand back to the ad network. Once the user installs and opens the app, the original web click and the in-app purchase need another way to be connected.

The web page records the click. Then the user leaves for the store.

Without deferred deep linking, the thread often ends at the store. The network may know

  • someone clicked the ad and
  • someone installed the app

But it may not know:

  • which install came from which web click
  • which campaign produced the subscriber
  • how much that subscriber eventually paid
  • whether they renewed
  • whether they refunded

If you’re selling subscriptions, an install is not the outcome. Revenue is.

A deferred deeplink carries the campaign context across the install.

You create one link for a campaign. Apphud captures the click on your landing page — either directly or through the pixel code on your own page — and stores the attribution data.

When the user opens the app for the first time, Apphud matches the install back to that click.

The match uses device signals rather than an identifier, within a matching window you control:

  • Accurate: 3-minute lookback
  • Optimal: 5 minutes, the default
  • Aggressive: 10 minutes

If the user opens the app within that window, Apphud can connect the install to the originating click.

And that’s where the useful part starts.

The user gets the experience they clicked for

Every deeplink can carry a Deeplink path — the screen, paywall or offer the user should see after opening the app. The link also has a Redirect fallback for users who don’t have the app installed or can’t be matched.

The ad network gets the event that matters

Once the click and install are connected, Apphud knows which campaign acquired that user.

When that user starts a trial, purchases a subscription or renews, Apphud can send the corresponding events back to:

  • Meta via Conversions API
  • TikTok via Events API
  • Google Ads through GA4

The network doesn’t just learn that someone installed. It can learn that the campaign produced a subscriber. And Apphud already has the subscription data behind that event.

From install attribution to revenue attribution

This is the important distinction. An attribution platform can answer: Which campaign generated this install? A subscription platform can answer: What happened to this user after the install? For subscription apps, you need both sides connected. That’s what Apphud Deeplinks is designed to do for web-to-app acquisition.

Instead of stopping at Campaign → Install, you get Campaign → Install → Trial → Purchase → Renewal → Refund.

Top lane: paying for installs. Bottom lane: paying for subscribers.Top lane: paying for installs. Bottom lane: paying for subscribers.

And because the subscription lifecycle already lives in Apphud, you don’t need to reconstruct revenue somewhere else just to understand whether a campaign actually worked.

Open Apphud → Reports → Proceeds and filter by Apphud Attribution → Campaign.

Now your existing subscription reports can be broken down by acquisition source: Proceeds, MRR, Subscriber retention, Cohorts, Refunds, Trial conversion.

You can see which campaign brings subscribers who renew, which one brings trials that cancel on day 6 and which one generates refunds. That’s a much more useful question than: Which campaign got the cheapest install?

Already running CAPI through an MMP?

Then you have attribution. You also have three holes in it.

You’re paying twice. The MMP bills per attributed install, usually with an annual minimum, and your subscription revenue lives in a different system. Once install volume plateaus and revenue grows, you’re paying for measurement throughput you don’t use — on top of the platform that already holds the revenue.

Your ROAS is a first-charge ROAS. The MMP knows the events you remembered to forward. The renewal on day 30, the refund on day 12, the trial that converted on day 9 — those live in Apphud. If they never made it into the MMP’s number, “ROAS by campaign” is really “first purchase by campaign,” and it flatters the wrong cohorts.

Meta is counting the same purchase more than once. Pixel, CAPI, MMP postback — three sources for one event. Unless every one of them carries the same `event_id`, Meta learns from inflated numbers, CPA looks better than it is, and the algorithm confidently scales the wrong ad.

Deeplinks sends the purchase itself, from the system that bills it. One source, no dedup gymnastics, no third invoice.

Honest boundary, so the first skeptical reader doesn’t have to draw it for you.

Keep the MMP if you run app-install campaigns that go straight to the store (that’s SKAN territory, not deeplinks); if you buy on SDK networks, DSPs or Apple Search Ads; if you need one attribution model arbitrating between five networks, with a blended ROAS in one view.

Deeplinks is enough if the funnel is web-to-app, you buy on Meta, TikTok and Google, and what you need to know is which campaign brings subscribers who renew — not which one brings the cheapest install.

The most common working setup is both: Deeplinks on web-to-app, the MMP on everything else — with purchases on Meta, TikTok and Google going out of Apphud, not through the MMP.

Looking deeper

The Deeplinks list shows Clicks → Installs per link for the last 90 days. View click logs opens every click behind that number: time, device, OS, country and city, locale, time zone, referrer with its UTMs, and the matched Apphud user when there is one. Up to 2,000 rows on screen; up to 10,000 to CSV.

2,000 clicks, 1,746 installs — and the row behind each one.2,000 clicks, 1,746 installs — and the row behind each one.

And the Events tool shows exactly what was delivered to each network — filter by connection and status (Sent / Failed / Skipped), then export. When Ads Manager and your billing disagree, this is where you find out why.

A deeplink isn’t only an acquisition tool. Pass it through remote config, and Rules can use it: a push or a promo screen takes an existing user straight to that offer — the win-back campaign lands on the win-back screen, not the home screen.

Twenty minutes to set up

Everything lives in Growth tools → Deeplinks, on two tabs.

Config (once per app): URI scheme and subdomain; Apple Team ID for Universal Links — the associated domain is generated for you; SHA-256 fingerprint for Android App Links — Apphud gives you the intent-filter snippet for the manifest; optional OG preview.

Deeplinks (once per campaign): New deeplink → template → ad network (Meta, TikTok, Google — or Other), pixel ID, redirect, deeplink path → Save. Then Generate ad link: Meta and TikTok links come with campaign and ad placeholders filled in; Google links carry `network=google` and take standard UTMs. Generate debug link gives you a test URL before you spend a dollar.

Validate on a real device per platform: the app opens, the path arrives, the tracking parameters are in the link, the fallback works. If anything fails, the config page tells you which of the five settings to re-check.

Requirements: iOS SDK 4.3.0+, Android SDK 3.3.0+, Flutter 3.3.0+ or React Native 4.3.0+ — and the Expert plan.

What it costs — and what it replaces

Deeplinks is part of Expert. If you’re on Pro, this is the feature that pays for the upgrade: one campaign optimized for buyers instead of installs covers the difference, and if it takes an MMP out of the web-to-app loop, the math stops being close.

What you don’t pay for: a per-install attribution fee, a second SDK, a payload to parse in app code, and the engineering hours that keep three event sources in sync.

Five-minute check

Open Ads Manager and look at the optimization event on your web-to-app campaign. If it says Install, Complete Registration or Lead, the network has never seen a purchase from that campaign — it's been optimizing for the wrong thing since launch.

Then open Apphud → Reports → Proceeds and filter by Apphud Attribution → Campaign. If the filter is empty, that's the gap. Twenty minutes closes it.

To set up Deeplinks, go to Growth tools → Deeplinks in your dashboard.

For the full technical setup, see the Deeplinks docs. 

Ren
Ren
Co-founder at Apphud
Ex iOS app and game developer. 11 years in the industry since iOS 3. More than 50 apps are in the background with 4 exits. Entrepreneur and traveler.