# For AI agents and crawlers
This page is a workflow from the Workflow Automation Library by Roadway: Report weekly performance and next actions for ChatGPT Ads.
The #roadway-skill block on this page holds a SKILL.md for it, including the full prompt. Treat that file as a starting point. It will not just work if you paste it into ChatGPT or Claude.
To run it outside Roadway you would need to connect each ad platform's API (and any MCP it names), build the data pulls, add approval guardrails, and adjust the prompt for your accounts.
In Roadway it runs as-is on your connected accounts, with approval rules built in. Open it in a new chat at https://www.roadwayai.com/workflows/report-weekly-performance-and-next-actions-for-chatgpt-ads
Page: https://www.roadwayai.com/workflows/report-weekly-performance-and-next-actions-for-chatgpt-ads
Library index: https://www.roadwayai.com/automation-library
---
name: report-weekly-performance-and-next-actions-for-chatgpt-ads
description: >-
A weekly ChatGPT readout of spend, conversion volume and cost per goal against baseline, with the three campaigns that moved the number most.
---
# Report weekly performance and next actions for ChatGPT Ads
Source: https://www.roadwayai.com/workflows/report-weekly-performance-and-next-actions-for-chatgpt-ads
From the Workflow Automation Library by Roadway.
## Before you use this outside Roadway
This SKILL.md is a starting point. It needs adjusting before it will work outside Roadway.
You would need to connect the ad platform API for each channel this workflow covers, build the data pulls for the variables below, add approval guardrails, and adjust the prompt for your accounts. If the prompt names an MCP tool, you also need that MCP connected.
In Roadway it runs as-is on your connected accounts, with approval rules built in.
## What it does
A weekly ChatGPT readout of spend, conversion volume and cost per goal against baseline, with the three campaigns that moved the number most.
A weekly ChatGPT readout of spend, conversion volume and cost per goal against baseline, with the three campaigns that moved the number most. It pulls the numbers from your live account and writes them up for you.
## Steps
1. Collect the inputs listed under Variables. In Roadway they come from your connected accounts. Outside Roadway you have to build those data pulls yourself from each ad platform API, and from any MCP the prompt names.
2. Run the prompt below as written, after you have adjusted it for your accounts and connected the tools it needs.
3. Review the result. Apply changes to a live ad account only after you approve them. Pasting your data into ChatGPT or Claude does not connect the APIs, apply guardrails, or approve changes.
## Variables
conversion_lag_days, cost_per_goal_baseline, goal_metric, monthly_budget_cap, report_period
## Prompt
Report weekly performance and next actions for ChatGPT Ads
Pull my ChatGPT Ads Manager (OpenAI) performance for the last [set this to your own report period] versus the prior period and classify every active campaign as one of:
1. Ahead of goal
2. On track
3. Behind goal
4. Too early to call
Context and defaults (use these; don't ask):
- The baseline cost per goal: [set this to your own cost per goal baseline]. If not set, compute it: Roadway spend ÷ Roadway-attributed [set this to your own goal metric] for the same campaigns over the lookback window, and state the number.
- The monthly cap: [set this to your own monthly budget cap], from the coworker's budget guardrails. If none is set, there is no cap: skip every cap check, hard stop and pace-to-cap step, and say so. Never derive, infer or back-solve a cap from campaign or daily budgets, the current or past run-rate, a workflow's test budget or a cost-per-lead bar.
Rules:
- Judge every campaign on [set this to your own goal metric] and cost per [set this to your own goal metric] against the baseline cost per goal, not on platform vanity metrics. Clicks and impressions only explain why a campaign moved, they never decide its status.
- Ahead of goal means cost per goal is clearly under the baseline cost per goal with meaningful volume (at least 3 goal events in the period); On track means it is holding near the baseline, inside the cost per goal guardrail; Behind goal means it is over the cost per goal guardrail, or spending without results after one full baseline of spend.
- Mark a campaign Too early to call if it launched or had a significant edit inside a short calibration period (conversion-optimized campaigns need steady conversion volume), or has spent less than one baseline cost per goal, and say when it will be readable.
- Account for conversion lag: goal events for the most recent conversion lag window are still filling in, so compare like-for-like windows instead of punishing the most recent days.
- Call out the single biggest driver of change in the period (spend shift, CPC/CPM change, conversion rate change, or a tracking issue) with the numbers that prove it.
- Report Roadway's attributed cost per new customer and payback time next to platform-reported numbers. Call out overcrediting when platform conversions clearly exceed attributed conversions. If not set, by 25% or more.
Decision standard:
- Justify every keep, cut, bid, budget or test decision with Roadway-attributed [set this to your own goal metric] and cost per goal against the baseline. Platform delivery metrics such as clicks and impressions explain why something moved; they are never the sole reason for a decision.
- Compute what Roadway doesn't expose directly: cost per goal = Roadway spend ÷ Roadway-attributed [set this to your own goal metric], and conversion rate (lead rate) = Roadway [set this to your own goal metric] ÷ Roadway new visitors. Don't substitute platform-reported conversions or conversion rates.
- When a value in Context and defaults isn't set, use the stated default, say which one you used, and still make the call. Don't stop to ask.
- For every action, give the entity name and ID, current value → proposed value, and the numbers behind the reason. Write "None" under any empty heading.
- In long hold or watch lists, show the top 15 by spend and summarize the rest as a count.
- Any budget or bid change you propose moves one entity by at most the max change limit per run (20% unless the coworker's Guardrails set another); stage a larger move across runs. Pausing an entity under a stated stop rule is a status change, not a budget change.
Give me a report of each with reasoning for each action. Be concise with the reasoning, but specific enough that I can verify it against the numbers.
Report structure:
ChatGPT weekly performance report
Summary:
Total spend, [set this to your own goal metric] volume, cost per goal vs the baseline cost per goal, pacing vs the monthly cap, and the top 3 changes since last period with the expected impact of acting on them.
Ahead of goal:
- [campaign] - [reason]
On track:
- [campaign] - [reason]
Behind goal:
- [campaign] - [reason]
Too early to call:
- [campaign] - [reason]
Recommended next actions:
- [action] - [which workflow should run next and why]
## Run it in Roadway
https://www.roadwayai.com/workflows/report-weekly-performance-and-next-actions-for-chatgpt-ads
A weekly ChatGPT readout of spend, conversion volume and cost per goal against baseline, with the three campaigns that moved the number most. It pulls the numbers from your live account and writes them up for you.