Cross-channel playbooks
Run a marketing job that crosses channels in one pass — paid ads, organic social, content, local SEO and AI-search visibility together.
The skills in this pack each own one channel. This one owns the order they run in — because the sequencing is the part that is actually hard, and the part a single-channel tool cannot do at all.
Prerequisite: the marketing-os foundation skill.
How to use a playbook
A playbook is a sequence, not a script. Run the steps in order; skip a step
whose channel is not connected and say you skipped it; stop at the first
high-tier call and show the user what is waiting.
Two rules hold across all of them:
- Every playbook ends with what is filed, not what is done. List the approvals the user now has, and say plainly that nothing has gone live.
- Organic before paid, wherever the timeline allows. Testing a message for free is always cheaper than buying the test.
Three paid channels, one set of moves
The steps below name Meta's tools because Meta is the channel every account has. Every paid step has a Google and a TikTok twin, at the same tier, and a playbook run on a business with more than one connected channel runs the step on each of them:
| The move | Meta | Google Ads | TikTok Ads |
|---|---|---|---|
| read the level | meta_list_campaigns | google_ads_list_campaigns | tiktok_ads_list_campaigns |
meta_list_ad_sets | google_ads_list_ad_groups | tiktok_ads_list_ad_groups | |
meta_list_ads | google_ads_list_ads | tiktok_ads_list_ads | |
| stop the losers | meta_pause_entity | google_ads_pause_entity | tiktok_ads_pause_entity |
| start delivery | meta_activate_entity | google_ads_enable_entity | tiktok_ads_enable_entity |
| move the money | meta_set_budget | google_ads_set_campaign_budget | tiktok_ads_set_budget |
| build new | meta_draft_campaign_plan → meta_deploy_campaign_plan | google_ads_create_campaign → google_ads_create_ad_group → google_ads_create_responsive_search_ad + google_ads_add_keywords | tiktok_ads_create_campaign → tiktok_ads_create_ad_group |
Three things to hold while doing it:
- The spend caps are one number across all three. Pausing on Meta frees headroom a TikTok budget increase can use. Say so when you use it — it is the single best argument for running a playbook across channels rather than one at a time.
- Budgets live in different places. Meta: a CBO campaign or the ad set.
Google: the campaign, always. TikTok: the campaign or the ad group — read
it first, and the one whose
budgetModeisBUDGET_MODE_DAYis the one carrying the money. - TikTok is a creative channel, not a targeting one. When a TikTok entity is
underperforming, the answer is almost always a new hook and a new video, not a
narrower audience.
refresh_creativeon the ad, notscale_downon the ad group.
Playbook — product or promo launch
"We're launching the spring collection on the 1st."
1 Ground it get_business_context · get_guardrails · get_brand_profile
search_knowledge ← what happened last launch
2 Test the hook create_marketing_asset_draft (social_post) × 3–5, one variable
social_create_post (HIGH) ← free hook test, 3–5 days
3 Build content create_marketing_asset_draft (blog_post) — the launch page,
targetKeywords from google_search_performance's top queries
4 Build paid meta_list_pages · list_media_files
meta_draft_campaign_plan (low) using the winning hook
→ show the plan → meta_deploy_campaign_plan (HIGH, paused)
→ meta_activate_campaign_plan (HIGH) on launch day
5 Local / AI localfalcon_list_reports — baseline the launch keyword now,
so the after-scan has a before
6 Record it add_knowledge (past_campaign) — the plan and the baselineThe order is the value: step 2 is what makes step 4's creative evidence-based instead of a guess, and step 5 is worthless if you only think of it afterwards.
Playbook — influencer / partner code
"We're doing a collab with Tory Media — TORY10 for 10% off, all of October."
1 The code promotions_list → promotions_create_draft (low) with the code
and discount the user stated — never invented
→ promotions_publish_to_store (HIGH) if a store is connected
2 Paid meta_draft_campaign_plan (low) with promotionId → show the plan
→ meta_deploy_campaign_plan (HIGH, paused)
3 Organic social_create_post (HIGH) with the same promotionId, one post
per platform in its own voice
4 Content create_marketing_asset_draft (email / blog_post) — the code in
the copy, the link from promotions_list's landingUrl
5 Judge it promotions_performance — orders and revenue on the code
6 Record it add_knowledge (past_campaign) — partner, code, the resultThree rules make this playbook worth running across channels:
- The code is in every channel's copy. A partner code is the one piece of attribution that survives a screenshot, a podcast mention and a forwarded email. Every ad, caption and email in the run says it.
- One UTM campaign for the whole run. The promotion carries its own
utmCampaign;promotionIdstamps it on the Meta ads and Google final URLs. Hand-built links elsewhere use that same value, never a new one per channel. - Judge it by the code, not by ROAS. Orders that used the code are the
partner's result, including the ones no ad touched. How long to wait before
that verdict is a question for the user — this pack has no threshold for it;
the promotion's own end date is the natural answer. With no store connected,
promotions_performancereturns zeros, which is "cannot tell", not "failed".
Playbook — the monthly review
"How did last month go?"
1 marketing-audit full read across every channel
2 marketing-diagnose on the two or three worst findings only
3 marketing-scale winners up, losers paused
4 creative-testing one test for next month, one variable
5 ai-search-visibility re-scan the same grid; trend vs. last month
6 add_knowledge the month's conclusions, so the next one starts
from evidenceDo not diagnose everything. Two or three findings well explained beat twelve listed.
Playbook — a winner, repeated everywhere
"The retargeting ad is crushing it."
This is the playbook Meta-only tooling cannot run, and the one with the best return per unit of effort.
1 Confirm meta_list_ads (7d and 30d) — ROAS ≥ 1.3 × break-even in BOTH
windows, ≥ 50 conversions in 7d, no fatigue
2 Paid meta_set_budget (HIGH) — clamped to 2 × and the daily cap
3 Same hook, the winner is a message, not an ad: run it on the other paid
other paid channels too, each created PAUSED and enabled separately
google_ads_create_campaign → google_ads_create_ad_group (HIGH)
→ google_ads_create_responsive_search_ad (HIGH)
+ google_ads_add_keywords (LOW) — no ad or keyword, no serving
tiktok_ads_create_campaign → tiktok_ads_create_ad_group (HIGH)
4 Organic the same claim, native to each platform:
create_marketing_asset_draft → social_create_post (HIGH)
5 Content create_marketing_asset_draft (blog_post) — the hook is the angle
6 Email create_marketing_asset_draft (email) — the hook is the subject
7 AI search the winning language belongs in the page AI surfaces will quote
8 Record add_knowledge (past_campaign) — the hook, the numbers, the windowSteps 4–7 cost no media budget at all. When budget is the constraint — and it usually is — they are the real answer to "scale this", not step 2. Step 3 is the one this product can do and a single-channel tool cannot: the same proven hook, filed as paused campaigns on every channel the business has connected.
Playbook — a new location
"We opened in Tempe."
1 Baseline localfalcon_list_locations → is the new place_id even there?
localfalcon_run_scan (HIGH) — chatgpt + gaio + google,
the head keyword, a grid matched to the real service area
2 Content create_marketing_asset_draft (blog_post) — a page that names the
city and the service area in words
3 Social social_create_post (HIGH) — location-specific, on the connected
accounts
4 Paid meta_draft_campaign_plan (low) — countries checked against the
geo guardrails BEFORE drafting
5 Re-scan same grid, same radius, 30 days later. ATRP and SoLV before/afterStep 1 before step 2, always. Without a baseline on the same grid, nothing you do afterwards can be shown to have worked.
Playbook — a competitor is outranking us
"They come up in ChatGPT and we don't."
1 Measure localfalcon_list_reports / _get_report — who is named, at which
points, on which surfaces. Name them from the data, not from
the user's impression
2 Read them what do they say about themselves in the text these surfaces
quote
3 Answer back create_marketing_asset_draft (blog_post) — the question,
answered directly, with the proof search_knowledge can support
4 Be current social_create_post (HIGH) — quiet businesses are hard to name
5 Compete paid meta_draft_campaign_plan (low) on the same intent, if the
economics support it
6 Re-scan same grid, 30 daysDo not promise to displace them. Measure, act on the inputs, re-measure.
Playbook — more leads on a fixed budget
"We need more leads and we can't spend more."
1 Find the waste marketing-audit, then pause what is bleeding, on every
connected channel (meta_pause_entity /
google_ads_pause_entity / tiktok_ads_pause_entity —
low, immediate)
2 Redeploy it the freed budget into entities that pass the scale gate,
wherever they are (meta_set_budget /
google_ads_set_campaign_budget / tiktok_ads_set_budget
— HIGH). The cap is one number across all three, so what
step 1 freed on one channel is spendable on another
3 Free channels social_create_post, create_marketing_asset_draft,
the AI-search work in ai-search-visibility — all of it
costs no media budget
4 Fix the target if targetCplCents is null, derive a candidate from deal
value × close rate × margin × ad-spend share, and ask the
user to SET it. Do not adopt it silentlyWhen you are asked for a playbook that is not here
Compose one. The rules that make a good sequence:
- Read everything before writing anything. Context, guardrails, brand profile, knowledge base.
- Baseline before you act, on any measurement you intend to claim credit for later.
- Test free before you test paid.
- One variable at a time, even across channels.
- Every
highcall is a stop. Show the user what is waiting; do not queue ten approvals and call it done. - Write the conclusion down with
add_knowledge. The next run starts there.
Closing a playbook
## <playbook> — <business>
**Done now** (low tier, already applied)
- <draft created, entity paused, plan drafted>
**Waiting for your approval** (nothing has happened yet)
- <the exact change, per item, with the number>
**Skipped**
- <channel> — not connected
**Next checkpoint**
- <date> — <what to look at, and why that date>Give the checkpoint a real date. An ad set needs 50 conversions in 7 days to leave learning, and a re-scan needs the market to have moved — so "check back tomorrow" is almost always the wrong answer.
Something wrong or missing on this page? Tell us and we will fix it.