agentleFS
Synter-Media-AISynter-Media-AI/free-skills/skills/campaign-preflight/SKILL.md

campaign-preflight

Skill4 starsChanged 6 months agoMITView on GitHub

Runs pre-flight checks on ad campaigns before launching. Use when creating campaigns, reviewing campaign settings, or before enabling paused campaigns. Checks geo targeting, exclusion lists, tracking setup, and budget settings.

The file

We split this skill into the rules it gives an agent

11 rules. About 0 are common, 9 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈9

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Before enabling any paused campaign

    line 12
  2. Distinctive:

    After creating a new campaign

    line 13
  3. Distinctive:

    When user asks to "review" or "check" campaign settings

    line 14
  4. Distinctive:

    When user mentions geo targeting or exclusions

    line 15
  5. Very specific:

    BLOCKING: If is_complete: false, DO NOT enable the campaign.

    line 61
  6. Distinctive:

    Look for "Geo Targets: Not set" - this is a red flag.

    line 78
  7. Very specific:

    Use the conversion-tracking skill for detailed tracking verification.

    line 116
  8. Distinctive:

    Maximum CPC: Should be set for manual bidding strategies

    line 138
  9. Distinctive:

    Check for common negative keywords:

    line 143
  10. Distinctive:

    Verify ads run during business hours if B2B:

    line 151
  11. Distinctive:

    When reviewing campaigns, output a summary like:

    line 195

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Campaign Pre-Flight Checks

Ensures campaigns are properly configured before launch to prevent wasted ad spend and spam traffic.

When to Use

  • Before enabling any paused campaign
  • After creating a new campaign
  • When user asks to "review" or "check" campaign settings
  • When user mentions geo targeting or exclusions

Pre-Flight Checklist

0. Campaign Structure Validation (CRITICAL)

Run structural validation FIRST before any other checks. This ensures the campaign has all required components to actually serve ads.

Platform-Specific Validators

PlatformScriptChecks
Googlegoogle_ads_validate_campaign_structureAd groups, ads, keywords (Search), budget, conversion tracking
Metameta_ads_validate_campaign_structureAd sets, ads, targeting, budget, pixel
LinkedInlinkedin_ads_validate_campaign_structureCreatives, approval status, targeting, budget, insight tag
Redditreddit_ads_validate_campaign_structureAd groups, ads, targeting, budget, pixel
Microsoftmicrosoft_ads_validate_campaign_structureAd groups, ads, keywords (Search), budget, UET tag
TikToktiktok_ads_validate_campaign_structureAd groups, ads, targeting, budget, pixel
Xx_ads_validate_campaign_structureLine items, promoted tweets, targeting, budget, funding

Run Structure Validation

POST /tools/run
{
  "script_name": "google_ads_validate_campaign_structure",
  "platform": "GOOGLE",
  "args": ["--campaign-id", "customers/123/campaigns/456"],
  "user_id": <USER_ID>
}

Output

{
  "success": true,
  "is_complete": true,
  "checks": [
    {"name": "has_ad_groups", "passed": true, "level": "error", "message": "Campaign has 2 ad groups"},
    {"name": "ad_groups_have_ads", "passed": true, "level": "error", "message": "All ad groups have enabled ads"},
    {"name": "has_keywords", "passed": true, "level": "error", "message": "Campaign has 15 keywords"},
    {"name": "budget_configured", "passed": true, "level": "error", "message": "Budget: $50.00/day"},
    {"name": "conversion_tracking", "passed": true, "level": "warning", "message": "Account has 3 conversion actions"}
  ]
}

BLOCKING: If is_complete: false, DO NOT enable the campaign. Fix missing components first.

1. Geo Targeting Verification

CRITICAL: Campaigns without geo targeting will show to ALL countries including spam countries.

Check Current Geo Targeting

POST /tools/run
{
  "script_name": "google_ads_export_campaigns",
  "platform": "GOOGLE",
  "args": ["--campaign-filter", "<CAMPAIGN_NAME>"],
  "user_id": <USER_ID>
}

Look for "Geo Targets: Not set" - this is a red flag.

Tier Definitions

Tier 1 (High-value markets):

  • United States, United Kingdom, Canada, Australia, New Zealand
  • Germany, France, Netherlands, Switzerland
  • Norway, Sweden, Denmark, Finland
  • Austria, Belgium, Ireland
  • Japan, Singapore

Tier 2 (Good secondary markets):

  • Spain, Italy, Portugal
  • Poland, Czech Republic
  • Israel, UAE, Saudi Arabia
  • South Korea, Taiwan, Hong Kong
  • Brazil, Mexico, South Africa

Spam Countries (AVOID):

  • India, Pakistan, Bangladesh
  • Russia, Ukraine
  • China (unless specifically targeting)

Fix Missing Geo Targeting

POST /tools/run
{
  "script_name": "google_ads_set_campaign_geo_targets",
  "platform": "GOOGLE",
  "args": ["--campaign-ids", "<CAMPAIGN_IDS>", "--tier", "1,2"],
  "user_id": <USER_ID>
}

Note: Demand Gen campaigns require ad group-level targeting. The script handles this automatically.

2. Conversion Tracking

Use the conversion-tracking skill for detailed tracking verification.

Quick check:

POST /tools/run
{
  "script_name": "google_ads_list_conversions",
  "platform": "GOOGLE",
  "args": [],
  "user_id": <USER_ID>
}

Requirements:

  • At least one conversion action must exist
  • Conversion must have recent data (last 30 days)
  • GTM tags must be published

3. Budget Sanity Check

Review daily budgets:

  • Minimum recommended: $25/day for Search, $50/day for Demand Gen
  • Maximum CPC: Should be set for manual bidding strategies
  • Conversion-based bidding: Requires 15+ conversions in last 30 days

4. Negative Keyword Lists (Search Campaigns)

Check for common negative keywords:

  • Brand misspellings to avoid
  • Irrelevant industry terms
  • Competitor brands (if not conquesting)
  • "free", "cheap" (if selling premium)

5. Ad Schedule

Verify ads run during business hours if B2B:

  • US: 6am-8pm PT / 9am-11pm ET
  • EMEA: 7am-7pm CET
  • APAC: 8am-8pm local

Campaign Type Specific Checks

Demand Gen (YouTube/Discover)

  1. Video requirements:
    • YouTube video must be public or unlisted
    • Minimum 10 seconds for in-stream
    • 6-15 seconds for bumper ads
  2. Location targeting at ad group level (not campaign level)
  3. Audience targeting:
    • Custom intent keywords recommended
    • Remarketing audiences for better performance

Search Campaigns

  1. Keyword match types:
    • Broad match requires Smart Bidding
    • Phrase/Exact for manual CPC
  2. Ad extensions:
    • Sitelinks (minimum 4)
    • Callouts (minimum 4)
    • Structured snippets

Display Campaigns

  1. Image assets:
    • Landscape (1200x628)
    • Square (1200x1200)
    • Logo (1200x1200)
  2. Placement exclusions:
    • Exclude mobile apps if not relevant
    • Exclude parked domains

Quick Pre-Flight Summary

When reviewing campaigns, output a summary like:

## Campaign Pre-Flight Report

| Check | Status | Notes |
|-------|--------|-------|
| Geo Targeting | ✅/⚠️/❌ | Tier 1+2 / Not set |
| Conversion Tracking | ✅/⚠️/❌ | Active / No conversions |
| Budget | ✅/⚠️ | $X/day |
| Ad Schedule | ✅/⚠️ | 24/7 / Business hours |
| Negative Keywords | ✅/⚠️ | X keywords / None |

**Recommendation:** [Enable/Fix issues first]

Automation Workflow

For bulk campaign review:

  1. Export all campaigns with geo targeting info
  2. Flag campaigns with issues
  3. Offer to fix automatically
  4. Re-verify after fixes

About this skill

Part of the Synter free skills collection — open-source agent skills for advertising, PPC, and marketing automation.

Want this skill (and 40+ more) running on autopilot against your live ad accounts? Try Synter — AI Agent Media Buyers that connect to Google, Meta, LinkedIn, TikTok, Reddit, Amazon, and 7+ more platforms.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.