← Toffu for Meta AdsCONTENT HISTORY

Update to Toffu for Meta Ads

Snapshot Nov 7, 2026 · 00:09 UTC · version 1.0.0

Collection source: downloaded plugin package.

WHAT CHANGED

First saved snapshot

No earlier snapshot is available to establish a change.

Save Toffu for Meta Ads and check future changes in Following.

Up to 3 plugins free · no card required.

Compare saved observations

Download comparison JSON
Full technical diff · 0 changed fields
Full snapshot data
{
  "description": "Break down Meta Ads results by age, gender and placement with Toffu. Use when the user asks who converts, which age group or gender to target, which placements (Facebook, Instagram, Reels, Stories) work, or how to structure ad sets. Finds the segments that waste or win and proposes targeting or budget changes the user confirms.",
  "included_files": [],
  "name": "audience-breakdown",
  "skill_md_contents": "---\nname: audience-breakdown\ndescription: Break down Meta Ads results by age, gender and placement with Toffu. Use when the user asks who converts, which age group or gender to target, which placements (Facebook, Instagram, Reels, Stories) work, or how to structure ad sets. Finds the segments that waste or win and proposes targeting or budget changes the user confirms.\n---\n\n# Meta Ads audience and placement breakdown\n\nUse the Toffu tools only. Never apply a change the user has not confirmed.\n\n## Steps\n\n1. Call `get_account_context`. If several Meta ad accounts are connected, ask which one. Pass its id as `account_ids` `{\"meta_ads\": \"<id>\"}` to `query_campaign_performance`, and as `account_id` to the other tools.\n2. Call `query_campaign_performance` for the last 30 full days (end date = yesterday) three times, with `breakdowns` `[\"age\"]`, then `[\"gender\"]`, then `[\"publisher_platform\", \"platform_position\"]`.\n3. For each segment, compute spend share, conversions, CPA = spend / conversions and ROAS = conversion_value / spend. Compare with the account average.\n4. Flag:\n   - **Waste segment:** at least 10% of spend, and CPA above 1.5x the account CPA (or 0 conversions).\n   - **Winning segment:** ROAS above 1.3x the account ROAS, with at least 10 conversions.\n   - **Placement gap:** a placement with spend and CTR below half of the account CTR.\n5. Call `list_ad_sets` with `filters` `{\"fields\": \"id,name,status,campaign_id,daily_budget,optimization_goal,targeting,promoted_object\"}` for the current targeting of the ad sets that carry the waste or winning segments.\n6. Report one table per breakdown (segment, spend, share, conversions, CPA, ROAS, flag) and at most 3 recommendations.\n7. Offer each recommendation as a change:\n   - Narrow an age range or placements with `propose_update_ad_set` `{\"targeting\": {...}}`. Meta replaces the whole targeting, so send the ad set's current targeting from step 5 with only the changed keys edited. Check that the preview's `current` and `data` differ only in those keys.\n   - Test a winning segment in a new paused ad set with `propose_create_ad_set` (`name`, `optimization_goal`, `targeting`, `promoted_object` copied from the current ad set).\n   - Move budget to the ad set with the winning segment with `propose_update_ad_set` or `propose_update_campaign` `{\"daily_budget_amount\": <amount>}`.\n   Show the preview. Call `apply_change` only after the user confirms that change.\n\n## Rules\n\n- Breakdowns are Meta's estimates and do not add up exactly to the campaign total. Say so when the gap is above 5%.\n- Advantage+ audiences and placements often do better than manual exclusions. Recommend a test before an exclusion when the segment has fewer than 30 conversions.\n- Do not narrow targeting under a special ad category (housing, employment, credit, politics).\n"
}

SHA-256 of public snapshot: 60a2cff0336f45fb59f0e883ba7de9188ccd59a3b85e860b58fd785ce060c35c