Meta Ads Standards
Every Session — Daily Scan
- 1.Filter by name → confirm every asterisked campaign is ON
- 2.Filter by ON → confirm everything that's ON has an asterisk
If anything fails either check, fix before moving on.
*[NICHE] [Market] $Monthly/$Daily
e.g. *CL Indianapolis $1700/$60
- —\* = active/ON — one asterisk per market per niche, no exceptions
- —Paused client → remove asterisk immediately, publish
- —Budget figures in name must match actual campaign spend
| Code | Niche |
|---|---|
| CL | Concrete Leveling |
| CF / CS | Crawlspace |
| FW | Flatwork |
Wed + Fri Full Review
- ✓One asterisk per market/niche · nothing else is ON
- ✓Budget in name matches actual spend
- ✓1 campaign per market per niche · 1 ad set per campaign · max 2 ads (B1 + B2)
- ✓Objective is Maximize Leads Through Messaging (use Conversations only if Leads not available yet — recheck weekly)
- ✓Placements: Facebook only — manual, no automatic placements
- ✓Select all ads → Edit (bulk view) → primary text is not grayed out
If primary text is grayed → something is ON → binary search to find it:
- 1.Deselect half the ads, check again. Repeat until you isolate the offending ad.
- 2.Open that ad → disable every Advantage Creative sub-toggle.
- 3.Check for tile strip in the media section → Related Media is on — remove all tiles.
- ✕Advantage+ Creative (every sub-toggle) — OFF on every ad
- ✕Related Media — no tiles, ever. Facebook re-enables this silently.
- ✕Multi-advertiser Ads — OFF
- ✕Text Variations / AI Generation — OFF
- ✕Multiple primary texts or headlines in one ad — 1 each only
- ✓Hook is correct for the niche — fixed, do not vary market to market
- ✓Body references the correct city and services throughout — top and bottom must match
- ✓City Served block present at the end of every caption
- ✓Page name casing is correct (e.g. NoVa, not Nova — check page-specific naming)
| Niche | Correct Headline |
|---|---|
| CL | Concrete Leveling Estimates |
| CF / CS | Crawlspace Repair Estimates |
| FW | Concrete Estimates |
Headlines are fixed per niche. No AI headlines. No variation.
- ✓Every active ad has the correct offline event attached
- ✓Dataset name matches the Facebook page / market name exactly
- ✓Two datasets per campaign — verify both are assigned
- ✓Audience size looks reasonable — ~1M+ is the target
- ✓Location targeting is correct — bulk edits can silently add or remove locations, always verify
- ✓Any Facebook recommendation prompt → Discard every time, no exceptions
Duplication Sequence
- 1.Remove the asterisk from the old campaign name → publish
- 2.Turn the old campaign OFF → publish
- 3.Duplicate the campaign
- 4.Re-add the asterisk to the new campaign name
- 5.Turn the new campaign ON → publish
After duplicating:
- —Delete any "Copy" suffixes from the name — asterisk is now the source of truth
- —Assign correct offline events to every ad — manually, one by one
- —Turn OFF on every ad: Related Media · Advantage+ Creative · Multi-advertiser Ads
- —Run bulk primary text check — text must not be grayed
After duplicating for a client still on Conversations → check if Maximize Leads Through Messaging is now available → if yes, switch before publishing.
- 1.Business Manager → Events Manager → Connect Data → Messaging → Next
- 2.Select the Facebook page → Next → Create New Dataset → Start Integration
- 3.Business Settings → Data Sources → Datasets → find the new dataset → Connected Assets → select iFly Clients 1
- 4.In Ads Manager, open each ad → select the correct offline event from the dropdown
Geo-Targeting Strategy
Facebook uses every signal we provide to target. The goal is hyper-local precision at scale — not just a radius circle, but weighting the actual towns where qualified homeowners live.
- —Primary 50-mile radius pin — catches everyone possible, ensures no qualified areas are excluded
- —Micro-city pins — 15–20 specific cities/towns added as individual location targets; these weight higher-value neighborhoods more in the algorithm
- —GHL bot serviceable areas — mirrors the same city list so the bot can disqualify leads that slip through geo targeting
At the bottom of every ad caption, include:
"We proudly service people in [City 1], [City 2], ... [City 15-20]"
The city list in the caption, the FB location targets, and the GHL bot serviceable areas setting should all match.
Real client service areas don't follow a perfect radius. For markets like Sioux Falls, population concentrates along a major highway corridor — a pure 50-mile circle includes a lot of rural area with low intent. Micro-city pins tell the algorithm to weight the actual population centers more heavily.
- ✓Err on the side of over-targeting on the FB side — it's OK if some radius pins extend slightly outside acceptable client service limits
- ✓The bot handles final disqualification for out-of-area leads
- ✓Page name and ad caption do additional filtering (market-specific branding discourages out-of-area inquiries)
- ✕Don't under-target trying to be precise — missed coverage = lost qualified leads, and the algorithm self-selects more than the geo boundaries do
Troubleshooting
| Symptom | Root Cause → Fix |
|---|---|
| Primary text grayed in bulk edit | Advantage+ Creative is on OR existing post ad in selection — deselect existing post ads first, then binary search for the Advantage+ offender |
| CPL spiked 2–3× | Related Media or Advantage+ re-enabled silently — go ad by ad and turn off |
| City Served block missing | Caption overwritten or template not used — re-add closing block, re-publish |
| Wrong dataset after duplication | Duplication carries source dataset — reassign per-ad manually every time |
| Two asterisked campaigns in same market | Old asterisk wasn't removed before duplicating — remove it |
| "Leads Through Messaging" not available | Dataset/page not fully connected yet — recheck weekly (~1 month after page creation) |
| Location targeting wrong | Bulk edit silently added/removed locations — verify geo targeting after any bulk action |
| Audience size too small | Over-targeted or location error — should be ~1M+, loosen targeting if needed |
| Lost social proof on ads | Page rename or re-duplication wiped it — restore ads from the original campaign |
| Page name casing wrong | Facebook defaults to lowercase — manually correct (e.g. NoVa not Nova) |