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.
90%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Ensures campaigns are properly configured before launch to prevent wasted ad spend and spam traffic.
Run structural validation FIRST before any other checks. This ensures the campaign has all required components to actually serve ads.
| 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 |
POST /tools/run
{
"script_name": "google_ads_validate_campaign_structure",
"platform": "GOOGLE",
"args": ["--campaign-id", "customers/123/campaigns/456"],
"user_id": <USER_ID>
}{
"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.
CRITICAL: Campaigns without geo targeting will show to ALL countries including spam countries.
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 1 (High-value markets):
Tier 2 (Good secondary markets):
Spam Countries (AVOID):
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.
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:
Review daily budgets:
Check for common negative keywords:
Verify ads run during business hours if B2B:
Video requirements:
Location targeting at ad group level (not campaign level)
Audience targeting:
Keyword match types:
Ad extensions:
Image assets:
Placement exclusions:
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]For bulk campaign review:
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.
Synter-Media-AI/free-skills
3df48f1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.