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.
In this repository59 other files it gives its agents.
- ad-copy-generationSkill
- ad-creative-fatigue-detectorSkill
- ad-policy-complianceSkill
- amazon-ads-optimizerSkill
- anomaly-detectorSkill
- attribution-modelingSkill
- audience-expansion-strategySkill
- bid-optimizationSkill
- budget-optimizerSkill
- campaign-ide-handoffSkill
- campaign-structure-auditorSkill
- chatgpt-ads-conversion-trackingSkill
- chatgpt-ads-launchSkill
- competitor-analysisSkill
- creative-testingSkill
- cross-platform-attributionSkill
- cross-platform-launcherSkill
- dayparting-schedulerSkill
- executive-reportingSkill
- first-party-data-strategySkill
- google-ads-operatorSkill
- google-ads-quality-scoreSkill
- google-shopping-optimizerSkill
- gtm-metricsSkill
- incrementality-testingSkill
- keyword-researchSkill
- kill-scale-rulesSkill
- klaviyo-campaignsSkill
- landing-page-optimizerSkill
- launch-gatesSkill
- linkedin-ads-operatorSkill
- linkedin-ads-targetingSkill
- media-plan-builderSkill
- meta-ads-diagnosticsSkill
- meta-ads-operatorSkill
- mmm-budget-plannerSkill
- multi-channel-reportingSkill
- multi-platform-ads-operatorSkill
- multi-platform-launchSkill
- negative-keyword-minerSkill
- openai-ads-operatorSkill
- performance-max-optimizerSkill
- pixel-capi-auditorSkill
- pixel-capi-setupSkill
- platform-cost-benchmarksSkill
- public-ad-library-intelligenceSkill
- retargeting-sequence-designerSkill
- roas-calculatorSkill
- seasonal-budget-plannerSkill
- spearSkill
- spec-driven-devSkill
- synter-mcp-setupSkill
- tiktok-ads-operatorSkill
- tracking-leak-detectorSkill
- ugc-creative-briefSkill
- ui-contrast-reviewSkill
- utm-builderSkill
- video-ad-scriptwriterSkill
- x-ads-operatorSkill
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
- Distinctive: line 12
Before enabling any paused campaign
- Distinctive: line 13
After creating a new campaign
- Distinctive: line 14
When user asks to "review" or "check" campaign settings
- Distinctive: line 15
When user mentions geo targeting or exclusions
- Very specific: line 61
BLOCKING: If is_complete: false, DO NOT enable the campaign.
- Distinctive: line 78
Look for "Geo Targets: Not set" - this is a red flag.
- Very specific: line 116
Use the conversion-tracking skill for detailed tracking verification.
- Distinctive: line 138
Maximum CPC: Should be set for manual bidding strategies
- Distinctive: line 143
Check for common negative keywords:
- Distinctive: line 151
Verify ads run during business hours if B2B:
- Distinctive: line 195
When reviewing campaigns, output a summary like:
≈ “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.
Files
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
| Platform | Script | Checks |
google_ads_validate_campaign_structure | Ad groups, ads, keywords (Search), budget, conversion tracking | |
| Meta | meta_ads_validate_campaign_structure | Ad sets, ads, targeting, budget, pixel |
linkedin_ads_validate_campaign_structure | Creatives, approval status, targeting, budget, insight tag | |
reddit_ads_validate_campaign_structure | Ad groups, ads, targeting, budget, pixel | |
| Microsoft | microsoft_ads_validate_campaign_structure | Ad groups, ads, keywords (Search), budget, UET tag |
| TikTok | tiktok_ads_validate_campaign_structure | Ad groups, ads, targeting, budget, pixel |
| X | x_ads_validate_campaign_structure | Line 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)
- Video requirements:
- YouTube video must be public or unlisted
- Minimum 10 seconds for in-stream
- 6-15 seconds for bumper ads
- Location targeting at ad group level (not campaign level)
- Audience targeting:
- Custom intent keywords recommended
- Remarketing audiences for better performance
Search Campaigns
- Keyword match types:
- Broad match requires Smart Bidding
- Phrase/Exact for manual CPC
- Ad extensions:
- Sitelinks (minimum 4)
- Callouts (minimum 4)
- Structured snippets
Display Campaigns
- Image assets:
- Landscape (1200x628)
- Square (1200x1200)
- Logo (1200x1200)
- 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:
- Export all campaigns with geo targeting info
- Flag campaigns with issues
- Offer to fix automatically
- 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.
- 🌐 syntermedia.ai
- 📚 All free skills
- 💬 Built by @syntermedia — questions? Open an issue.
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
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.

