Ad Spend (CPA & ROAS)
Connect your ad platform to pull real spend into Trcker and see CPA and ROAS next to your conversions. ChatGPT Ads today; Google Ads and Meta next.
What it does
Trcker already tracks the conversions your paid traffic drives. The Ad Spend connector pulls the cost side too — real spend per campaign, per day — and joins it to your conversions so you can see:
- CPA (cost per acquisition) — ad spend ÷ the conversions that traffic drove
- ROAS (return on ad spend) — the revenue those conversions booked ÷ ad spend
The first connector is OpenAI ChatGPT Ads. It's built as an extensible adapter framework, so Google Ads and Meta will slot in behind the same connector and surface CPA/ROAS the same way.
---
Connecting ChatGPT Ads
- Go to Integrations → Ad Spend in your brand sidebar.
- Paste your OpenAI Advertiser API key and click Connect.
- - Find it in ChatGPT Ads Manager → Settings → General → "Create New API Key."
- - This is the Advertiser API key — it is not the same as the Conversions API key you use to send conversions back to OpenAI.
- Trcker stores the key encrypted at rest and runs a first sync immediately.
> Your API key is decrypted only at the moment Trcker calls the ad platform, and is never written to logs.
---
Mapping campaigns to offers
After the first successful sync, Trcker lists the campaigns it discovered. For each one, pick the Trcker offer it drives traffic to.
- Mapped campaigns get precise per-offer Spend / CPA / ROAS columns on your Offers table.
- Unmapped spend still counts toward your brand-level Spend / CPA / ROAS — so you see useful numbers from day one, even before you finish mapping.
You can re-map a campaign at any time; changes apply on the next dashboard load.
---
Where CPA & ROAS show up
- Overview — a brand-level Ad spend · ChatGPT Ads tile with Spend, CPA, and ROAS for the selected date range. It only appears once you have spend in the window.
- Offers table — Spend, CPA, and ROAS columns per offer. Offers with no mapped spend show "—".
How the numbers are computed
CPA and ROAS divide ad spend by the conversions attributed to ad-sourced traffic (clicks Trcker tagged as coming from ChatGPT) — never by your organic conversions. Dividing ad spend by all of your conversions would understate CPA and overstate ROAS, so Trcker scopes the denominator to the traffic your ad actually drove.
- Per-offer: spend from the campaigns mapped to that offer ÷ that offer's ad-sourced conversions.
- Brand-level (blended): all pulled spend ÷ all ad-sourced conversions.
Both CPA and ROAS show "—" when there's nothing to divide by (no conversions, or no spend).
---
Keeping spend fresh
- Automatic: a daily sync pulls a trailing window and updates spend (so late corrections from the ad platform are picked up).
- On demand: click Sync now on the connect card any time.
If a sync fails (bad key, ad-platform outage), the connection shows an error status with a short message and your dashboard keeps showing the last good data — Trcker never displays partial or guessed spend.
---
Disconnecting
Click Disconnect on the connect card. This deletes the stored API key. Your historical spend and campaign mappings are kept, so reconnecting later resumes where you left off.