# For AI agents and crawlers
This page is a workflow from the Workflow Automation Library by Roadway: Reallocate budget to winning campaigns for TikTok 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/reallocate-budget-to-winning-campaigns-for-tiktok-ads
Page: https://www.roadwayai.com/workflows/reallocate-budget-to-winning-campaigns-for-tiktok-ads
Library index: https://www.roadwayai.com/automation-library
---
name: reallocate-budget-to-winning-campaigns-for-tiktok-ads
description: >-
Shifts TikTok budget between campaigns inside the channel, from the ones past their cost guardrail to the ones with headroom, and holds total channel spend flat.
---
# Reallocate budget to winning campaigns for TikTok Ads
Source: https://www.roadwayai.com/workflows/reallocate-budget-to-winning-campaigns-for-tiktok-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
Shifts TikTok budget between campaigns inside the channel, from the ones past their cost guardrail to the ones with headroom, and holds total channel spend flat.
Shifts TikTok budget between campaigns inside the channel, from the ones past their cost guardrail to the ones with headroom, and holds total channel spend flat. Each time it runs, it finds what is working and suggests small, measured steps to scale it. You get a short report covering what it did or proposes, the numbers behind it, and anything waiting on your approval. This is the simpler version that works from cost per goal and headroom. Put budget where the next dollar works hardest goes deeper on what the next dollar buys.
## 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
auto_approve, brand_terms, channel_budget_allocation, cost_guardrail, cost_per_goal_baseline, funnel_metrics, goal_metric, lookback_window, max_change_pct, monthly_budget_cap, task_history
## Prompt
Reallocate budget to winning campaigns for TikTok Ads
Rank my TikTok Ads Manager campaigns by how well the next dollar works over the last [set this to your own lookback window] and decide the budget move for each, keeping total channel spend at the channel budget:
1. Add budget
2. Cut budget
3. Keep budget
4. Pause and redistribute
Context and defaults (use these; don't ask):
- The channel budget: [set this to your own channel budget allocation], from the coworker's budget guardrails. If not set, there is no channel allocation: skip the allocation checks and say so. Never build one from the sum of campaign or daily budgets, the current or past run-rate, or a workflow's test budget, and never treat such a figure as a ceiling or cap. Campaign daily budgets are only a delivery diagnostic.
- 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 cost guardrail: [set this to your own cost guardrail], from the coworker's Guardrails. If not set, 1.3x the baseline cost per goal. A workflow qualification bar (for example "cost per lead under $100 to build a page") is not a ceiling.
- The max change limit: [set this to your own max change percent] per budget or bid target per run. If not set, 20%. It does not apply to experiment traffic splits.
- 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.
- Auto-approve: [set this to your own auto approve]. If not set, it's off: list every change as a proposal for approval.
Rules:
- Rank on cost per [set this to your own goal metric] over the most recent 14 days, weighted toward days without tracking issues. Only give budget to campaigns that are delivery-constrained (spending nearly all of the daily budget on most recent days), because extra budget does nothing for a campaign that is not spending what it has. If not set, delivery-constrained means 95%+ of the daily budget on 4+ of the last 7 days.
- Cut budget from campaigns whose cost per goal is over the cost guardrail. Pause and redistribute when a campaign has been over the cost guardrail for 3+ weeks with no improving trend and has spent at least 2x the baseline.
- Never cut brand ([set this to your own brand terms]) or always-on retargeting below what it needs to keep reaching its audience.
- Move budget in steps of no more than the max change limit per campaign per run, and keep the total equal to the channel budget.
- Allocate on the cost of the next goal, not the average cost per goal: compare the last 7 days at the current budget with the period before the last budget step. When the cost of the next goal is above 1.5x the campaign's average, the campaign has hit its limit, so stop adding even if its average looks great.
- If no campaign qualifies to receive budget, still make the justified cuts and report the freed budget as unallocated savings for approval. Never pause the entity producing the most [set this to your own goal metric] at or below baseline.
- Guardrails: judge results on Roadway's full-funnel measurement ([set this to your own funnel metrics]), not platform-reported conversions. Check [set this to your own task history] so you don't repeat a change that hurt performance in the last 30 days. Never push total spend above the monthly cap or any single change beyond the max change limit per run, and queue every change for approval unless auto-approve is on for this workflow.
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:
TikTok budget reallocation report
Summary:
Budget moved, from where to where, and the expected gain in [set this to your own goal metric] at the same spend.
Add budget:
- [campaign] - [reason]
Cut budget:
- [campaign] - [reason]
Keep budget:
- [campaign] - [reason]
Pause and redistribute:
- [campaign] - [reason]
## Run it in Roadway
https://www.roadwayai.com/workflows/reallocate-budget-to-winning-campaigns-for-tiktok-ads
Reallocate budget to winning campaigns for TikTok Ads
Reallocate budget to winning campaigns for TikTok Ads
Shifts TikTok budget between campaigns inside the channel, from the ones past their cost guardrail to the ones with headroom, and holds total channel spend flat.
Shifts TikTok budget between campaigns inside the channel, from the ones past their cost guardrail to the ones with headroom, and holds total channel spend flat. Each time it runs, it finds what is working and suggests small, measured steps to scale it. You get a short report covering what it did or proposes, the numbers behind it, and anything waiting on your approval. This is the simpler version that works from cost per goal and headroom. Put budget where the next dollar works hardest goes deeper on what the next dollar buys.