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:

  1. 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.
  2. 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 moveMetaGoogle AdsTikTok Ads
read the levelmeta_list_campaignsgoogle_ads_list_campaignstiktok_ads_list_campaigns
meta_list_ad_setsgoogle_ads_list_ad_groupstiktok_ads_list_ad_groups
meta_list_adsgoogle_ads_list_adstiktok_ads_list_ads
stop the losersmeta_pause_entitygoogle_ads_pause_entitytiktok_ads_pause_entity
start deliverymeta_activate_entitygoogle_ads_enable_entitytiktok_ads_enable_entity
move the moneymeta_set_budgetgoogle_ads_set_campaign_budgettiktok_ads_set_budget
build newmeta_draft_campaign_plan → meta_deploy_campaign_plangoogle_ads_create_campaign → google_ads_create_ad_group → google_ads_create_responsive_search_ad + google_ads_add_keywordstiktok_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 budgetMode is BUDGET_MODE_DAY is 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_creative on the ad, not scale_down on 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 baseline

The 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 result

Three 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; promotionId stamps 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_performance returns 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 evidence

Do 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 window

Steps 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/after

Step 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 days

Do 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 silently

When 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 high call 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

markdown
## <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.