Coming in 1.9.80 · Spend ledger

Cost from
the bill,
not a guess.

A flat CPC on a tracking link is an estimate. The spend ledger records what each ad platform actually billed, per ad per hour, and every report costs your clicks from it. Profit and ROI then use the money you spent.

An account with no spend recorded sees every report exactly as before.

Billed spend in, each click’s share out.

Rows are matched by the ad id your traffic source already passes on the click.

  1. Record what was billed

    Per ad, per hour: impressions, the platform’s clicks, and spend in your account’s currency. Send an hour again and it replaces the last one, so spend that’s still settling can be read again.

    p202 spend import · POST /api/v3/spend-ledger
  2. Clicks are matched by ad

    The ad is the click’s traffic source variable with the parameter ad_id, which the ChatGPT Ads source sets up for you.

    Traffic source variable · ad_id
  3. Each click gets its share

    A click is costed at its share of its ad’s spend for that hour. Every other click keeps its CPC.

    Reports · report pages
  4. Nothing is smeared

    Spend no click carries is reported as unallocated, never spread over other clicks, and each report says how far the spend data reaches.

    The note above the figures
02 / Where it shows

The same cost on every page and in every answer.

The browser reports and the API read the same ledger, so a number in Overview matches the one your script or AI assistant gets.

  • Overview’s tables and chart, Group Overview and Breakdown.
  • Day and Week Parting, the Analyze reports, Custom Variables and Publishers.
  • The REST API’s summary, breakdown, timeseries, daypart, weekpart, groups and redirector stats.
ChatGPT Ads

ChatGPT spend stays on ChatGPT clicks.

Spend recorded for ChatGPT Ads is shared only over clicks from your ChatGPT Ads traffic source. A click from another source that happens to carry the same ad id keeps its own cost, and where that decided something, the report says so.

Set your ChatGPT source up by hand? Mark it as ChatGPT Ads on its edit form, under Advanced.

From a file, a script, or your AI assistant.

Up to 2,000 rows a file, with a dry run to preview. The command line comes with Pro; the API is open on every install.

p202 spend import chatgpt-spend.json --dry-run   # preview, write nothing
p202 spend import chatgpt-spend.json             # record it
p202 spend list --period last7 --interval day

POST /api/v3/spend-ledger?dry_run=1
GET  /api/v3/spend-ledger

One ad, one owner

An ad id names one ad, so a row for an ad already recorded under another platform or ad account is refused.

Your currency only

Spend in a currency other than your account’s is refused by name, so it can’t be added up as if it were.

Who may write it

Writing needs an API key with the spend ledger scope and a role allowed to update the account’s data.

Every conversion keeps the currency it was recorded in.

Revenue in more than one currency used to be relabelled whenever you changed yours. Not any more.

No more relabelling

Change your account’s currency and earlier conversions stay in theirs. Reports say when a period holds more than one currency.

Payouts from foreign networks, converted

A postback or pixel amount on a campaign paid in another currency is converted at a daily exchange rate, and the amount that was sent is kept beside it.

Changed currency before?

Tell Personal settings when, and your earlier conversions take the currency they were really in.

Campaigns in another currency

Set a campaign’s payout in the network’s currency again. It’s converted to your account’s when you save.

Held, not lost

A payment-platform sale in a currency your account can’t take is held. The integration’s card says which setting to change, and one button records the held sales.

Sent in its own currency

The conversion log, the API, offline conversion files and the GA4 and Google Ads destinations carry each conversion’s own currency.

Know your real ROI, by the hour.

When 1.9.80 ships, upgrade, record what your platforms billed, and every report shows profit on the money you actually spent.