App Installed (app_installed) is a ChatGPT Ads conversion event that records when someone installs your mobile app after interacting with your ad on ChatGPT. It differs from App Opened, which fires when an existing user launches your app; App Installed instead marks that first download.
If you run app-install campaigns on ChatGPT Ads, this event is the signal that tells OpenAI's bidding which clicks turned into installs, so choosing and wiring it correctly decides whether your budget optimizes toward downloads. Skip it or send it from the browser pixel, and ChatGPT Ads has no install signal to optimize against, leaving your spend aimed at clicks that never became users.
Measured as a server-side conversion, App Installed (app_installed) tells ChatGPT Ads that a mobile install happened and ties it back to the ad that drove it. OpenAI classifies it as a customer_action event, and it runs through the Conversions API only, sent with action_source set to mobile_app. The browser pixel cannot carry it, so this event always originates from your server or a mobile measurement partner.
Three things have to be true for the event to count: your server detects an install, it sends an app_installed payload to the Conversions API with a pixel ID and API key, and the request carries the attribution identifier ChatGPT Ads passed through. Each event also includes a type property matching its data shape. Without the attribution identifier, the install arrives but cannot be credited to your campaign.
App Installed sits alongside App Opened events, and you pick one as the optimization goal when you build a conversions campaign. It is the install-stage signal; App Opened covers activation after install. Teams measuring how AI-driven ad surfaces feed their funnel can track that performance in AirOps alongside their broader AI search visibility.
Resources: See ChatGPT Ads best practices for conversion tracking, creative specs, and policy
App Installed only produces useful data when every link in the chain is instrumented. Here is the sequence a working setup runs through, from account setup to optimized bidding.
Create the event: In the ChatGPT Ads Manager conversions tab, create an app_installed event and generate your pixel ID and Conversions API key.
Detect the install: Your backend or mobile measurement partner confirms a real install and prepares the event payload.
Send server-side: Post the event to the Conversions API with type app_installed, action_source mobile_app, and the attribution identifier from the click.
Match and attribute: ChatGPT Ads matches the install to the originating ad within the attribution window you set for the event.
Optimize bidding: Once installs flow in, set App Installed as the campaign's optimization goal so bidding chases installs instead of raw clicks.
The event count tells you how many installs ChatGPT Ads attributed to your campaign and at what cost per install. It does not tell you whether those users stayed; App Opened and downstream events carry that story.
Choosing App Installed as your conversion event is a budgeting decision. It determines what ChatGPT Ads treats as success and where your money flows, so getting it right shapes every install campaign you run. Unlike click or reach campaigns, a conversions campaign forces you to name this event up front, which makes the choice unavoidable.
Optimization accuracy: ChatGPT Ads can only bid toward installs if it receives App Installed events, so the event is what turns an install campaign from a guess into a measured one.
Wasted spend is the failure mode: wire the event to the browser pixel instead of the Conversions API and no installs ever register, so bidding keeps paying for clicks while your reporting shows zero conversions.
Cross-channel comparison: a clean install signal lets you compare ChatGPT Ads cost per install against your other paid channels and decide where app-growth budget belongs.
Growth marketers use App Installed to optimize ChatGPT Ads bidding toward users who actually download the app, instead of toward raw ad clicks.
Demand gen leads use App Installed to compare install cost on ChatGPT Ads against other paid channels when allocating app-growth budget.
SEO managers use App Installed data to brief landing-page and app-store copy changes that lift the install rate from ChatGPT-driven traffic.
App Installed travels only through the Conversions API, the server-side endpoint that accepts events straight from your backend and survives ad blockers that would stop a browser pixel, which is why app events have no pixel option at all.
The attribution window is the period after an ad interaction during which an install still counts toward that campaign, and you set it when you create the event in Ads Manager, so a longer window credits installs that happen days after the click.
Action source labels where an event came from, and App Installed must be sent with action_source set to mobile_app, which tells ChatGPT Ads the conversion is an app install and should route to mobile reporting.
Optimize ChatGPT Ads bidding toward real installs instead of clicks.
Attribute each install back to the exact ad and campaign that drove it.
Survive ad blockers by sending installs server-side through the Conversions API.
Compare install cost on ChatGPT Ads against your other paid acquisition channels.
Separate first installs from re-engagement by pairing it with App Opened.
Prioritize engineering work on the install events that feed campaign optimization.
Send App Installed through the Conversions API with action_source set to mobile_app, because the browser pixel cannot carry app events at all.
Confirm the pixel ID and API key match the event you created in Ads Manager, so your installs land on the right conversion.
Pass the attribution identifier from the ad click on every event, because without it ChatGPT Ads cannot credit the install to your campaign.
Watch the Event Stream after setup, since it shows in real time whether installs are actually arriving before you judge performance.
Set App Installed as the campaign optimization goal only once installs flow steadily, so bidding has enough signal to learn from.
Keep your custom and standard event names identical between your code and Ads Manager, because a mismatch means the two never reconcile.
Avoid treating the conversion setting as proof that tracking works. A configured event is inventory; until you see installs in the Event Stream, assume nothing is arriving and verify delivery before you put budget behind the campaign.
AirOps: connects your ChatGPT Ads performance with AI search visibility data, so you can see how install campaigns fit your wider answer-engine strategy in one place.
ChatGPT Ads Manager: the native OpenAI console where you create the App Installed event, generate the pixel ID and Conversions API key, and set it as a campaign goal.
Google Analytics 4: complements install tracking by measuring what app-store or web visitors do after they arrive from your ChatGPT ads.
Map your install flow: This week, document exactly where in your app or store funnel an install is confirmed and which system knows about it. No budget needed, just a clear picture of your stack.
Create the event: In ChatGPT Ads Manager, add an app_installed conversion event and save the pixel ID and Conversions API key it generates. This is a no-cost configuration step inside the ad account.
Wire the Conversions API: Have engineering send the app_installed event server-side with action_source mobile_app and the attribution identifier from the click. Test the payload in a staging environment first.
Verify in Event Stream: Trigger a test install and confirm the event appears in the real-time Event Stream before you spend anything.
Launch and optimize: Build a conversions campaign, set App Installed as the goal, and let bidding gather enough installs before you judge cost per install.
App Installed is the ChatGPT Ads conversion event that records a user installing your mobile app after an ad interaction.
It is sent server-side through the Conversions API with action_source set to mobile_app, never through the browser pixel.
The main constraint is engineering, since app events require server-side work and a mobile measurement partner before any campaign runs.
The biggest risk is silent failure, where a misconfigured event means bidding optimizes against installs that never register.
The leverage sits in attribution: a clean install signal lets ChatGPT Ads bid toward downloads and lets you compare channels fairly.
App Installed fires once, the first time a user installs your app after interacting with a ChatGPT ad, while App Opened fires every time someone launches the app, including long after install. The two answer different questions. App Installed tells you whether your ads are winning new downloads, which is the acquisition metric app-growth teams optimize bidding against. App Opened tells you whether those downloads turn into active use, which is an engagement and retention metric. Both are standard customer_action events in ChatGPT Ads, and both travel through the Conversions API with action_source set to mobile_app, so the plumbing is identical. The difference is what the signal means and how you act on it. If you optimize a conversions campaign on App Opened when your real goal is more installs, you will reward re-engagement of people who already have the app and underpay for genuinely new users.
Set App Installed as your optimization goal only after the event fires reliably and produces a steady flow of installs; launching with it on day one starves bidding of data. ChatGPT Ads bidding needs a consistent volume of conversion events to learn which audiences and placements drive installs, and a goal with only a trickle of data optimizes poorly. The practical sequence is to instrument the event, verify it in the Event Stream, let it accumulate real installs for a stretch, and only then build or switch a conversions campaign to bid toward it. If your install volume is genuinely low, a higher-funnel event can gather signal faster while installs build underneath. Remember that a conversions campaign requires you to name a conversion event at creation, so you commit to this choice up front; reach and click campaigns do not force it. Choose the event that matches the outcome you are actually paying for.
Your App Installed count rarely matches your app store dashboard exactly, and that gap is normal. Several things drive the difference. ChatGPT Ads only counts installs it can attribute to an ad interaction within your attribution window, so organic installs and installs from other channels never appear here. Your app store reports every install from every source, which makes its number larger. Timing also diverges: the store may log an install at download while your Conversions API event fires at first open or account creation, depending on how you defined it. De-duplication, consent choices, and blocked or dropped server calls shave the count further. The fix is to decide which number answers which question. Use the store for total installs, and use App Installed for the subset ChatGPT Ads actually drove, then reconcile the trend over time instead of chasing an exact match on any single day.
No. App Installed and App Opened are the two ChatGPT Ads events that run through the Conversions API only, so there is no browser-pixel or no-code route to capture them. The pixel and image-tag methods that work for web events like page views or purchases simply do not support app lifecycle events. That means tracking installs requires server-side work: either your own backend calls the Conversions API when an install is confirmed, or a mobile measurement partner sends the event on your behalf with action_source set to mobile_app. If you have no engineering capacity at all, the honest move is to hold off on install-optimized campaigns and run click or reach campaigns until you can instrument the event properly. Standing up a conversions campaign without the underlying install signal wastes budget, because bidding has nothing real to optimize toward. Treat app-install tracking as an engineering project first and a media decision second.
It depends, because a good App Installed cost per install is the one that keeps your app profitable, and that varies by business model, platform, and region. There is no universal benchmark that fits every app. The honest way to set a target is to work backward from unit economics: estimate the lifetime value of an installed user, decide what fraction of that value you can spend to acquire one, and use that as your ceiling for cost per install. Then judge ChatGPT Ads against your own history and your other paid channels, using an external number only as a loose reference. A result is good if the cost per install sits at or below your ceiling while install volume holds steady. Watch the trend across weeks, since early campaign data is noisy while bidding learns. If your cost per install sits well above what a new user is worth, tighten targeting or creative before you raise budget.