# Know which orders came from ChatGPT, and whether you paid for them

> Convrail matches each order to the ChatGPT channel using three signals in order of reliability: the `oppref` click identifier from ChatGPT Ads, the `utm_source` of the landing page, and the referrer. Orders are split between ads and organic, spend is imported from the OpenAI Advertiser API, and the dashboard shows revenue, top products and ROAS by day.

Canonical: https://convrail.com/attribution/

## The attribution rules, in plain sight

Attribution only earns trust when you can read the rule that produced each number. Convrail applies exactly this decision table to every order, and stores the evidence (the parameter or referrer that matched) next to the attribution.

*Decision table used to attribute an order to ChatGPT*

| Signal on the order | Verdict | Medium |
| --- | --- | --- |
| Landing URL contains `oppref=<id>` | ChatGPT | ads (the identifier is only set by ChatGPT Ads clicks) |
| `utm_source` is chatgpt, openai or chatgpt.com, `utm_medium` is cpc, ppc, paid or ads | ChatGPT | ads |
| `utm_source` is chatgpt, openai or chatgpt.com, any other medium | ChatGPT | organic |
| Referrer is chatgpt.com, chat.openai.com or openai.com (or a subdomain) | ChatGPT | organic |
| None of the above | Other channel | not attributed |

The first matching rule wins, so a paid click is never downgraded to organic because the referrer was stripped. When the visitor lands with `oppref`, the pixel also keeps the identifier in a first-party cookie for 7 days and attaches it to the conversion events, so the Ads Manager and your dashboard agree.

## Spend and campaign metrics from the Advertiser API

Revenue without spend is half a number. With an OpenAI Advertiser API key, Convrail imports your campaigns and their daily insights (impressions, clicks, spend, CTR, CPC, CPM, conversions) once a day and stores them per campaign and per day.

- ROAS is computed as attributed ads revenue divided by imported spend, over the period you select.
- The API key is validated when you save it and encrypted at rest.
- Imports are idempotent: re-running a day never double-counts spend.
- Organic attribution works without the Advertiser API; only ROAS needs it.

## What the dashboard shows


| Metric | Definition |
| --- | --- |
| Attributed revenue | Sum of order totals attributed to ChatGPT, split ads and organic |
| Attributed orders | Count of attributed orders next to the total order count for the period |
| Spend, impressions, clicks | Imported from the Advertiser API for the same period |
| ROAS | Ads revenue divided by spend, empty when no spend was imported |
| Top products | The 10 products with the most attributed revenue, from the line items of attributed orders |
| Daily trend | Revenue, orders and spend per day |

Attributed orders can be exported as CSV with the evidence column, for your own analysis or to reconcile with the Ads Manager. A weekly email report summarizes the same numbers every Monday if you opt in.

## What attribution can and cannot prove

These rules attribute last-touch, first-party evidence. They cannot see a shopper who asked ChatGPT for advice and later typed your URL by hand, and they are only as good as the landing URL and referrer your platform records. Convrail reports what it can prove and labels every attributed order with its method so you can decide how much weight to give to each.

## Frequently asked questions

### How does Convrail tell ChatGPT ads from ChatGPT organic?

Ads traffic carries the `oppref` click identifier, or a paid `utm_medium`. Organic traffic is identified by the chatgpt.com referrer or a non-paid `utm_source=chatgpt`. The rule that matched is stored with each order.

### Why do some orders show "source: chatgpt" in my store but not in Convrail?

Store platforms derive that label from the referrer alone, which is sometimes present on the first page view but lost by checkout. Convrail reads the landing URL parameters and the referrer of the order as recorded by your platform, and only attributes what it can evidence.

### Do I need the Advertiser API to use attribution?

No. Revenue and order attribution work from your order webhooks alone. The Advertiser API adds spend, clicks and impressions, which are needed for ROAS.

### What is the attribution window?

The `oppref` click identifier is kept for 7 days in a first-party cookie, matching OpenAI’s click window. UTM and referrer attribution apply to the session of the order itself.

### Can I export the attributed orders?

Yes, as a CSV file including order ID, amount, medium, method and evidence, from the Health screen of the app.
