Meta Ads · Google Ads · TikTok Ads
Budget Reallocation by Efficiency
Compare campaigns by profit or ROAS/CPA, check stability and diminishing returns, and get a cautious proposal for shifting a share of spend.
Recommendations only: the prompt never changes your ad accounts.
How to run it
Three steps, about a minute.
Connect RoASr to Claude or ChatGPT
Create an API key in RoASr and add the RoASr MCP server. Access is read-only: the prompt cannot change anything in your ad accounts.
Paste the prompt
Copy the text below into a new chat.
Answer a few questions
The prompt asks only what it cannot find itself, then reads your data and answers in a fixed format.
- Guides in the blog
What it asks
- client
- window — last 30 days
- optimize for — profit when margin is set, otherwise ROAS or CPA
- shift size — up to 10% of spend
Data it reads
- roasr_load_skill
- roasr_limits
- roasr_list_clients
- roasr_list_accounts
- roasr_metrics_campaigns
- roasr_metrics_daily
Method
- roasr_frame
- profit_math
- meta_analysis
Full prompt
The prompt
Before you start, ask me about each [input] below — one question at a time, with ready-made answers to pick from; skip whatever you can already tell.
Find where [client: if not listed, call roasr_list_clients and let me pick] should move a share of ad spend: from campaigns that return less to campaigns that return more, without overstating the gain.
1. **Load the RoASr method.** Call roasr_load_skill('roasr_frame'), roasr_load_skill('profit_math') and roasr_load_skill('meta_analysis') and follow them exactly.
2. **Frame the data.** Call roasr_limits, roasr_list_clients and roasr_list_accounts: plan, niche, margin, KPI, account currencies, sync status and dataSince. Use [window: last 30 days (default) | last 14 days | last 60 days | custom]. If the window starts before dataSince, say so and narrow it. If currency.mixed is true, never sum money across accounts; shifts are proposed only within one account or one currency. Name any account whose sync is failed or never and leave it out.
3. **Choose the yardstick.** Optimize for [optimize for: profit when margin is set, otherwise ROAS or CPA (default) | ROAS | CPA | profit]. Profit is allowed only if the client has a margin set (revenue x margin - spend); otherwise say so and use ROAS or CPA. Decide ROAS versus CPA from the client's KPI and the conversion type, not from guesses.
4. **Rank the campaigns.** roasr_metrics_campaigns, campaign level, limit 200: spend, conversions, revenue, ROAS, CPA. Classify campaigns by objective and settings, not by name. Under a campaign budget (CBO or Advantage+), ad set numbers show allocation, not ranking: compare campaigns, never ad sets inside one campaign. Mark campaigns below the noise floor from the method (too few conversions or too little spend) as "not enough data" and keep them out of both sides of the shift.
5. **Test stability and returns.** For the top candidates on each side, roasr_metrics_daily with entityRef campaign:<id>: is the efficiency steady or one lucky week? Did efficiency fall on days when spend was higher (diminishing returns)? Is the recent week worse than the window average? A recipient whose results come from a spike or a spend cut is not a recipient.
6. **Size the shift.** Propose moving about [shift size: up to 10% of spend (default) | up to 20% | up to 30% | custom] from weak to strong campaigns, in steps small enough not to reset learning. Marginal return is lower than average return: haircut the expected gain and present it as an upper bound. Moves between platforms are lower confidence, because attribution differs between them; say so.
**Output:** open with one sentence — the main shift (from which campaigns to which, about how much) and your confidence (high / medium / low). Then a table: campaign · platform · spend · yardstick value · stability · verdict (donor / recipient / hold / not enough data) · suggested share of spend. Then 3–6 actions grouped High / Medium / Nice-to-have, each with the expected effect as an upper bound and what to check a week later.
**Output rules:**
- Recommendations only — never apply changes; RoASr tools are read-only.
- Say "we recommend moving about N% of spend", never "set a budget"; the decision is mine.
- Shifts stay within one account or one currency; never add money across currencies.
- reach and frequency are not additive across days; conversion buckets are not additive.
- If the client has no margin set, talk ROAS and CPA, not profit.
- Answer in the language of this prompt.Optimize
Related prompts
- Search-Term Cleanup → NegativesFind search terms that burn budget without converting or miss the intent, and get a vetted list of negative keywords to add yourself.Google Ads
- Meta Creative Fatigue AlertA weekly check for Meta ad sets where frequency rises while CTR falls and CPM climbs. First run sets a baseline, later runs show only changes.Meta Ads
- Quality Score Fix ListFind the costly keywords with a weak Quality Score, see which component drags each one down, and get a fix list: ad copy, ad group structure or landing page.Google Ads
- Scaling Headroom CheckSeparate campaigns that lose demand to budget from those held back by bids or quality, check competitor pressure, and get a cautious scaling plan.Google Ads
- PMax Asset Group ReviewReview Performance Max asset groups: spend, conversions and CPA, weak assets, missing formats, and what to replace. No guesses about channels.Google Ads