# For AI agents and crawlers
This page is a workflow from the Workflow Automation Library by Roadway: Report true results after adjusting for real ad impact.
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-incrementality-adjusted-cac-and-roas
Page: https://www.roadwayai.com/workflows/report-incrementality-adjusted-cac-and-roas
Library index: https://www.roadwayai.com/automation-library
---
name: report-incrementality-adjusted-cac-and-roas
description: >-
Restates every channel's cost per goal and return using impact-test results, so budget decisions are based on real results, not attributed ones.
---
# Report true results after adjusting for real ad impact
Source: https://www.roadwayai.com/workflows/report-incrementality-adjusted-cac-and-roas
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
Restates every channel's cost per goal and return using impact-test results, so budget decisions are based on real results, not attributed ones.
Restates every channel's cost per goal and return using impact-test results, so budget decisions are based on real results, not attributed ones. 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
goal_metric, win_bar
## Prompt
Report true results after adjusting for real ad impact
Apply the latest true-impact factors from impact tests and control groups to each channel and campaign type, and classify each:
1. Better than reported
2. As reported
3. Worse than reported
4. No impact test data yet
Context and defaults (use these; don't ask):
- The win bar: [set this to your own win bar]. If not set, enough data to call a clear winner.
Rules:
- Incremental cost per goal = reported cost per goal / true-impact factor. Retargeting and brand search typically have low factors, prospecting higher.
- Factors older than 6 months, or from tests that did not reach the win bar, are flagged as stale.
- No impact test data yet: recommend the next control-group test, starting with the biggest spend.
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.
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:
Impact-adjusted report
Summary:
Reported vs real cost per goal and return on spend by channel, and the budget implications.
Better than reported:
- [channel / campaign type] - [reason]
As reported:
- [channel / campaign type] - [reason]
Worse than reported:
- [channel / campaign type] - [reason]
No impact test data yet:
- [channel / campaign type] - [reason]
## Run it in Roadway
https://www.roadwayai.com/workflows/report-incrementality-adjusted-cac-and-roas
Restates every channel's cost per goal and return using impact-test results, so budget decisions are based on real results, not attributed ones. It pulls the numbers from your live account and writes them up for you.