Blog

How to Track App Installs from ChatGPT Ads: The Complete Setup Guide

Lakshith Dinesh

Lakshith Dinesh

Head of Growth, Linkrunner

How to Track App Installs from ChatGPT Ads: The Complete Setup Guide, with a dotted path from an ad click through a click ID to an app install and verification

Your ChatGPT Ads campaign goes live tomorrow. You have picked the audience, written the copy, set the daily budget at the ₹725 floor, and pasted your App Store URL into the landing page field. That last step is the one that will cost you.

A raw store URL carries nothing. When someone taps your sponsored answer inside ChatGPT and installs your app four hours later, that install arrives at your measurement stack with no campaign, no creative, and no click reference attached. It lands in your organic bucket, where it inflates a number you cannot spend against and deflates the channel you just paid for.

This is not a ChatGPT Ads problem. It is the same failure mode that hits every new channel in its first month, and the fix takes about twenty minutes. What follows is the full setup, from the click ID macro through to the QA checks you should run before you raise budget. All of it is current as of September 2026, which matters more than usual here: this channel has changed nine times since it launched in February.

What ChatGPT Ads actually sends you on a click

Before you build anything, it helps to know what you are working with.

ChatGPT Ads attribution is click-based. When a user taps a sponsored placement, the platform appends a click identifier to the destination URL. That identifier is the only durable thread connecting the ad to whatever the user does next. There is no device identifier passed, no fingerprinting fallback documented, and no view-through path for app installs beyond a fixed one-day window that was added on 19 August 2026 and is excluded from bidding, billing and CPA.

Click ID: A unique parameter appended to the destination URL on every ad click, used to match a later install or conversion back to the exact ad that produced it. On ChatGPT Ads this is exposed as a macro you insert into your own tracking link.

Three things follow from click-based attribution, and each one shapes the setup below.

First, if the click identifier does not survive the journey from ChatGPT to your app, you have no attribution at all. Not degraded attribution. None.

Second, attribution windows are not configured in Ads Manager. They live in your measurement platform, which is a genuine reversal of what most marketers expect and the single commonest source of confusion on this channel.

Third, because the match depends on a click rather than a device graph, the setup is unusually forgiving of privacy changes but unusually unforgiving of link hygiene. Get the link right and it works on iOS and Android alike. Get it wrong and it fails silently, with no error anywhere in Ads Manager.

Step 1: Create the tracking link

Your ad's landing page should never be a store URL. It should be a tracking link that captures the click, records the campaign parameters, and then routes the user to the correct store.

In Linkrunner, this is the link builder. In any other platform it will be called an attribution link, a tracking link, or a click URL. The structure is the same everywhere.

Build the link with your app selected, then add the campaign parameters you want to report on. At minimum you need a network or channel value that identifies ChatGPT Ads, a campaign name, and a slot for the click identifier. Keep the naming convention identical to what you already use for Meta and Google, because the whole point of adding a channel is being able to compare it against the ones you run today.

The click identifier is the part people miss. Your tracking link needs a parameter that ChatGPT Ads will populate at click time, using the platform's own macro rather than a static value:

https://your-subdomain.linkrunner.io/abc123?campaign=chatgpt_india_launch&clickid={oppref}

The braces matter. {oppref} is a macro, not a literal string. ChatGPT Ads replaces it with the real click reference when the ad is served. If you paste a hard-coded value there, or omit the parameter entirely, every install from that campaign will look identical to your system and none of them will attribute.

Confirm the exact macro token against your Ads Manager account before you launch. This platform has shipped changes roughly monthly since February, and a macro that was correct in July is worth re-checking in September.

Step 2: Point the campaign at the link, not the store

In Ads Manager, replace the destination URL on the campaign with your tracking link.

This sounds trivial and it is the step teams most often get half right. A common pattern is to set up the tracking link correctly, test it in a browser, confirm it redirects to the store, and then forget to actually swap it into the live campaign. The campaign keeps running against the old store URL and the tracking link sits unused.

If you are routing through your own marketing site rather than straight to the store, you have an extra failure point. Many web frameworks strip unrecognised query parameters on redirect, and some marketing sites redirect through a canonical URL that drops everything after the question mark. The click identifier disappears at that hop and never reaches your measurement platform.

Test this specific path before launch. Open your tracking link with a dummy click ID appended, follow it all the way through your landing page to the store, and check that the parameter survives every redirect. If it does not, either fix the passthrough on your site or point the ad directly at the tracking link and skip the intermediate page.

Step 3: Map install and your first post-install event

Attribution that stops at the install tells you volume and nothing else. Volume is the number you least need, because it is also the number Ads Manager already reports.

ChatGPT Ads supports twelve standard events plus a custom fallback. Resist the urge to map all of them on day one. Map two.

The first is app_installed. One detail here catches people out: app_installed and app_opened are available through the Conversions API only, sent with action_source set to mobile_app, and are not supported by the JavaScript pixel. A pixel-only setup cannot report an app install at all, no matter what else is configured. Your measurement platform handles this for you, but confirm it is actually forwarding the event rather than assuming.

The second is the earliest event that reliably separates a real user from a curious tap. For a fintech app that is usually account verification rather than signup. For a marketplace it is items_added. For an OTT app it is first playback of more than thirty seconds, not first app open.

One more thing worth knowing before you send revenue: monetary values go as integers in the currency's minor unit. A ₹499 subscription is 49900, not 499. Send rupees where the platform expects paise and every revenue figure you report will be out by a factor of a hundred, in the flattering direction.

The reason to be strict here is that the event you send back becomes the signal the platform optimises against. Send a noisy top-of-funnel event and the algorithm will get good at finding people who perform it and nothing else. If you have not thought about this recently, the principles in designing an event taxonomy that survives more than one quarter apply directly, and the vertical-specific starting points in which in-app events actually predict LTV will save you a mapping cycle.

Add revenue events once the first two are confirmed working. Not before.

Step 4: Set the attribution window in your measurement platform

Because windows live on your side rather than in Ads Manager, this step is easy to skip entirely and never notice.

The default click window for most MMPs is seven days. For a channel where the user is mid-task in a conversation when they see your ad, that default is usually too generous rather than too tight. Someone who taps a sponsored answer while researching a problem and installs six days later was probably converted by something else in between.

Start at one day and seven days as parallel reporting cuts if your platform supports it, and look at where the installs actually cluster before you settle. If most attributed installs land within a few hours, tighten the window and your channel comparison gets more honest rather than less flattering.

There is a wider argument here about which model to run on a new channel at all. For most teams adding one incremental channel to an existing Meta and Google mix, the case in why last-click attribution is fine for most growing apps holds. Do not build a multi-touch model to evaluate a ₹725 per day test.

Step 5: Verify before you raise budget

Reporting on this channel lags. OpenAI documents 24 to 48 hours before attributed events appear in the Conversions metric in Ads Manager, which means the first day of a new campaign will look broken even when it is not.

Wait the full 48 hours before you conclude anything. Then run these six checks.

  1. Does the click ID reach your platform? Open a raw click report or your click log and confirm the parameter is populated with real values, not the literal string {oppref}.
  2. Does the install count exist at all? If your platform shows zero attributed installs but Ads Manager shows conversions, the link is live but the store hand-off is broken.
  3. Do the two systems roughly agree? They will not match exactly, and they are not supposed to. A gap of ten to twenty percent between platform-reported conversions and MMP-attributed installs is normal on a new channel. A gap of ninety percent is a setup fault.
  4. Did your organic installs spike on the day the campaign launched? This is the tell for a stripped click identifier. The installs are arriving; they are just arriving anonymous.
  5. Is the post-install event firing? Check that your chosen activation event appears against ChatGPT Ads specifically, not only in your app-wide totals.
  6. Is the right link attached to the right campaign? If you built more than one link, confirm each campaign carries its own.

If any of these fail, the diagnostic order in the complete attribution discrepancy troubleshooting guide transfers cleanly to this channel, because the causes are the same ones that break Meta and Google setups.

Two limits to plan around

Two constraints on this channel as of September 2026 will affect how you read your own numbers, and neither is documented anywhere a marketer would naturally look.

Platform targeting is more granular than platform reporting. You can target iOS, Android and web separately. Insights returns two device buckets, with mobile web folded into Mobile. In an Android-first market like India, that means you cannot see your Android performance in Ads Manager at all. The workaround is to split platform on your measurement side, where the SDK knows exactly what the device was, and to run separate campaigns per platform so the spend side stays separable too.

There is no cost API. Spend does not flow automatically from ChatGPT Ads into your measurement platform the way it does from Meta or Google. Until that changes, ROAS for this channel has to be assembled by importing spend manually and dividing attributed revenue by it. Budget fifteen minutes a week for this, or accept that you are optimising on cost per install rather than return.

Neither limit is a reason to skip the channel. Both are reasons to set expectations with whoever reviews your dashboard, before they ask why one column is empty.

Where Linkrunner fits

Everything above works on any measurement platform that lets you build a tracking link and receive a click identifier. The workflow is the point, not the tool.

What differs between platforms is how much of it you have to assemble yourself. Linkrunner is the first MMP in India to go live with ChatGPT Ads, and attributes those installs alongside Meta, Google and TikTok in a single dashboard, without an enterprise contract or a minimum volume commitment, which matters on a channel most teams are testing at ₹725 a day rather than committing to. The link builder, the event mapping and the platform split described above are configured in the dashboard rather than assembled across a spreadsheet and a support ticket.

The setup itself is documented in the Linkrunner quickstart guide, and the SDK integration testing guide covers the end-to-end validation that step five describes. For the underlying platform behaviour, OpenAI's mobile measurement partner setup article is the primary source and worth reading directly rather than through a vendor summary.

Frequently asked questions

Do I need an MMP to run ChatGPT Ads for an app?

To spend on the channel, no. To know what the spend produced, effectively yes. The JavaScript pixel and Conversions API measure web conversions, and neither sees an app install. Without a measurement platform generating an attribution link, an app campaign will report clicks in Ads Manager and produce installs your own systems cannot tell apart from organic traffic.

Why do my ChatGPT Ads installs show up as organic?

Almost always because the click identifier did not reach your measurement platform. The three common causes, in order of frequency: the macro was omitted from the tracking link, the tracking link was never swapped into the live campaign, or an intermediate landing page stripped the query parameters on redirect. All three fail silently, and the signature is the same: a jump in organic installs on the day the campaign launched.

Does ChatGPT Ads attribution work on iOS after ATT?

Yes, and this is one of the channel's genuine advantages. Because the match rides on a click identifier rather than a device graph, it does not degrade with ATT opt-out rates. An iOS user who declined tracking attributes the same way as an Android user. The trade-off is that only clicks are measurable, since the view-through path is limited to a fixed one-day window that is excluded from bidding and CPA.

How long before I can tell whether the setup is working?

Allow a full 48 hours. OpenAI documents 24 to 48 hours before attributed events appear in the Conversions metric in Ads Manager, so a campaign checked on day one will show spend against zero conversions whether it is configured correctly or not. Judging the setup before the lag has passed is the commonest reason teams tear down a working configuration.

Can I recover installs from a campaign that ran without a tracking link?

No. Click-based attribution cannot be backfilled, because the clicks it would match against were never logged with a campaign reference. Stop the campaign, build the link, and relaunch rather than attempting to reconstruct the history.

Key takeaways

  • ChatGPT Ads attribution is click-based, so the click identifier surviving from ad to store is the whole game.
  • Your ad's landing page must be a tracking link with the click ID macro in it, not a raw store URL.
  • Map two events on day one: install, and the earliest event that separates a real user from a curious tap.
  • Attribution windows are configured in your measurement platform, not in Ads Manager.
  • Allow 24 to 48 hours before judging the setup, then run the six-point check.
  • An organic install spike on launch day is the signature of a stripped click identifier.

What to do this week

If your first campaign is already live without a tracking link, the installs it produced are not recoverable. Stop the campaign, build the link, and relaunch rather than trying to backfill. Attribution does not work retrospectively on a click-based channel.

If the campaign has not launched yet, the twenty minutes this setup takes is the highest-return twenty minutes available to you this week. Every rupee you spend before it is done is a rupee you cannot report on.

Once the channel is running and attributing, the next question is whether the installs are any good, which is a different problem with a different answer. The routine in the weekly attribution audit is the fastest way to catch a new channel drifting before the budget compounds.

If you would rather have the whole setup running in one place alongside the channels you already measure, request a demo from Linkrunner and we will walk through your specific link structure and event mapping.

Start measuring the installs your team cares about

Bring attribution, deep links, SKAN, cohorts, and campaign intelligence into one workflow your growth team can trust.