← Back to glossary

Subscription Created (subscription_created)

The Subscription Created event is a standard ChatGPT Ads conversion event, named subscription_created, that you fire when a paid subscription starts so OpenAI can attribute that signup back to an ad a user clicked inside ChatGPT. It records the moment a plan becomes paid, so it sits a step past trial_started, which only marks a free trial beginning.

If you sell a subscription product, this event is how you tell ChatGPT Ads which clicks turned into paying customers and which did not. Skip it and your campaigns optimize toward clicks alone, so OpenAI never learns which audiences actually subscribe and your reporting stops at traffic.

What is the Subscription Created event?

A subscription_created event is a measurement signal in the plan_enrollment data shape that fires once per new paid subscription and carries the plan and, optionally, its monetary value to OpenAI. You send it through the ChatGPT Ads Measurement Pixel in the browser or through the server-side Conversions API, and OpenAI matches it to the ad click that preceded it within your attribution window.

The event itself is small. It needs a type field set to plan_enrollment, and when you include an amount you also include a currency, sent as an integer in the currency's minor unit so 12999 means 129.99 US dollars. A plan identifier tells you which tier converted, and a shared event_id lets the browser and server versions of the same subscription collapse into one count instead of two.

Among ChatGPT Ads conversion events, subscription_created sits beside order_created for one-time purchases and lead_created for form fills, and it pairs naturally with trial_started for funnels that begin on a free trial. It only works once a conversion data source and Pixel ID exist in Ads Manager. AirOps helps teams track how often ChatGPT surfaces and cites their brand, which shapes the upstream demand this event later measures.

a practical guide to planning and measuring ChatGPT Ads campaigns

How the Subscription Created event works

Firing this event is one line of code, but the signal only counts when the setup around it is correct. Each step below has to be in place before the next one produces usable data.

  1. Create the data source. In ChatGPT Ads Manager, add a conversion data source and copy its Pixel ID. Nothing can be attributed until this exists.

  2. Install the pixel. Load the oaiq SDK on your site and initialize it with your Pixel ID, or stand up the Conversions API endpoint on your server.

  3. Fire on activation. When a paid plan starts, call subscription_created with a plan_enrollment payload, including amount and currency if you want revenue in your reports.

  4. Deduplicate. If you send the same subscription from both the pixel and the server, pass an identical event_id so OpenAI counts it once.

  5. Attribute. OpenAI matches the event to the ad click that led to it inside your configured attribution window and reports it against the campaign.

The event tells you that a click became a paying subscriber and, if you sent it, how much that plan was worth. It does not tell you who the person is or what they typed into ChatGPT, because OpenAI keeps user-level data private.

The importance of Subscription Created (subscription_created) for marketers

Whether ChatGPT Ads deserves a line in your paid budget depends on proof that it drives real subscriptions instead of only visits. The subscription_created event turns that question into a number you can defend to your finance team.

  • It feeds bid optimization. Conversion-objective campaigns and CPA bidding can only steer toward likely subscribers once subscription_created events flow, so without it the system optimizes blindly on clicks and spends budget on audiences that browse but never pay.

  • It separates revenue from noise. Sending amount and currency with each event lets you compare cost per subscription across audiences, plans, and countries, which is the metric that decides where your next budget increment goes.

  • It prevents a silent attribution gap. If the event never fires, or fires with a mismatched event_id, ChatGPT Ads shows clicks with zero conversions, and a channel that is genuinely producing subscribers looks dead in your reporting.

Marketer use cases

  1. Growth marketers use the subscription_created event to tie ChatGPT Ads spend to new paid signups and calculate a true cost per subscription.

  2. Demand gen leads use the subscription_created event to prove channel ROI to finance before expanding the ChatGPT Ads budget.

  3. SEO managers use the subscription_created event alongside AI visibility data to connect brand presence in ChatGPT answers to downstream paid conversions.

Key concepts

Plan enrollment shape

The plan_enrollment data type that subscription_created uses, which requires a type field set to plan_enrollment and accepts optional fields describing the plan tier the customer bought and the subscription's monetary value.

Event deduplication

The practice of passing one shared event_id whenever the same subscription is reported by both the browser pixel and the server-side Conversions API, so a single signup collapses into one conversion instead of being counted twice.

Attribution window

The configurable period after an ad click during which a subscription_created event can still be credited to that click, which sets how long OpenAI keeps the signup connected to the campaign that earned it.

Benefits

  • Attribute paying subscribers in ChatGPT Ads back to the specific ad click that produced them.

  • Optimize conversion campaigns and CPA bidding toward audiences that subscribe instead of ones that only click.

  • Measure revenue per subscription by sending amount and currency with each event.

  • Deduplicate pixel and server signals with a shared event_id so counts stay accurate.

  • Compare cost per subscription across plans, audiences, and countries inside OpenAI Ads Manager.

Subscription Created (subscription_created) best practices

  • Fire subscription_created only when a plan actually becomes paid, so a free trial start does not inflate your subscription count.

  • Send amount and currency as integers in the correct minor unit, so revenue reporting matches your billing system.

  • Use a stable event_id you can regenerate server-side, so pixel and Conversions API events deduplicate cleanly.

  • Run the Conversions API alongside the pixel, so ad blockers and browser limits do not silently drop signups.

  • Confirm a conversion data source and attribution window are set before you launch a conversions-objective campaign, so the event has somewhere to land.

  • Validate events with the API's validate_only flag before sending live data, so malformed payloads surface in testing.

Avoid firing subscription_created on a thank-you page that also reloads or that users revisit, because repeated fires without a shared event_id turn one subscription into several and quietly distort your cost per subscription.

Tools and technologies

AirOps: Tracks how often ChatGPT surfaces and cites your brand, so you can see the AI visibility that drives the demand your subscription_created event later measures.

Google Tag Manager: Deploys and manages the oaiq pixel snippet so you can fire subscription_created without editing site code for every change.

Google Analytics 4: Corroborates subscription conversions downstream and reconciles ChatGPT Ads-attributed signups against your own funnel data.

Getting started with Subscription Created (subscription_created)

  1. Map your conversion. Decide exactly when a subscription becomes paid in your billing flow and which plan fields you want to report. You can document this in a day with no budget approval.

  2. Create the data source. In ChatGPT Ads Manager, add a conversion data source and copy the Pixel ID it generates for you.

  3. Install the pixel. Load the oaiq SDK on your site, or set up the Conversions API on your server if ad blockers are a concern for your audience.

  4. Fire and validate. Send a subscription_created event with the plan_enrollment shape when a plan activates, and use validate_only to confirm the payload is well formed before going live.

  5. Launch and watch. Set your attribution window, start a conversions-objective campaign, and review cost per subscription in Ads Manager as events accumulate, then let the data build before you judge the channel.

Key takeaways

  • The subscription_created event is the ChatGPT Ads conversion signal that marks the start of a paid subscription.

  • You send it from the Measurement Pixel or Conversions API using the plan_enrollment data shape, with optional amount and currency for revenue.

  • Attribution only works once a data source, Pixel ID, and attribution window are configured in Ads Manager.

  • The main risk is double counting or missed signals, which a shared event_id and a server-side backup prevent.

  • The leverage is handing conversion bidding a clean subscription signal so it can find audiences that genuinely pay.

Frequently asked questions about the Subscription Created event

How is the Subscription Created event different from the Trial Started event?

The subscription_created event fires when a paid plan begins, while trial_started fires when someone opens a free trial, so the two mark different moments in the same funnel. For a freemium or free-trial business, a user often triggers trial_started first and then subscription_created days or weeks later when their card is charged. Treating them as the same thing overstates revenue, because a trial start carries no money and may never convert. Keep them separate so you can see trial-to-paid conversion and optimize each stage on its own. If your product has no trial, you can skip trial_started entirely and fire subscription_created the moment billing confirms the first payment. The practical rule is simple: money changing hands belongs to subscription_created, and a free commitment belongs to trial_started.

When should the Subscription Created event fire in my signup flow?

It should fire at the exact moment your billing system confirms a paid plan, and never earlier. Firing on the pricing page, the checkout button click, or a trial start will count people who have not actually paid, which inflates conversions and misleads bidding. The safest trigger is a server-side confirmation from your payment processor, sent through the Conversions API, because that is the first point where the charge is real. If you fire client-side from a thank-you page instead, guard against reloads and revisits so the same subscription does not register more than once. For subscriptions that renew, fire subscription_created only on the first paid period and skip monthly or annual renewals, unless you specifically want to measure renewals as separate conversions. Getting the timing right is what keeps your reported subscriptions equal to the subscriptions in your billing records.

Why does my Subscription Created event count vary from my billing records?

Counts vary because the event and your billing system measure slightly different things over slightly different windows. The event only credits subscriptions that OpenAI can tie to an ad click inside your attribution window, so organic and other-channel subscriptions never appear in ChatGPT Ads reporting at all. Client-side fires can be blocked by ad blockers or lost when a user closes the tab before the pixel loads, which pulls the count below reality. Duplicate fires without a shared event_id push it above reality. Timing differences also matter: a subscription that converts on the last day of your window may land in a different reporting period than your finance team uses. Running the Conversions API alongside the pixel and using consistent event IDs narrows most of the gap, but a perfect match is rare, and a small, stable difference is normal.

Can I directly influence how many Subscription Created events my campaigns report?

Partly. You directly control the accuracy and completeness of the signal, but you cannot manufacture subscriptions that did not happen. On the technical side you decide where and when the event fires, whether you back the pixel with the Conversions API, and how you handle deduplication, and all of that changes how many real subscriptions get recorded. On the demand side, better targeting, creative, and landing pages increase how many clicks actually subscribe, which raises the count honestly. What you should not do is loosen the trigger to count trials or unpaid signups, because that corrupts the optimization signal and the bidding system will chase the wrong audiences. Treat the event as an honest mirror of paid conversions: improve the campaign and the plumbing, and the number reflects it.

What counts as a good cost per Subscription Created event for a campaign?

It depends, and any single benchmark you see quoted for another business is close to useless for yours. The honest answer is that a good cost per subscription is one that your subscription economics can sustain, so judge it against your average revenue per subscriber and your payback period instead of an external figure. If a subscriber is worth several hundred dollars over their lifetime and churns slowly, a higher acquisition cost is fine; if margins are thin or churn is fast, the same cost is a loss. Because ChatGPT Ads is a newer surface, give it enough conversion volume to stabilize before you judge it, and compare its cost per subscription to your other paid channels on the same payback math. The right target is the number at which one more subscriber still pays for itself.