Media BuyingAll accounts

vs
⚠Data as of Oct 13, 4:03 AM· all times Mountain (MDT)

Revenue

Total revenue
$4,127.75
↓75.9%vs prior 7d
Lead sale revenue
$420.20
↓77.3%vs prior 7d
Click feed revenue
$3,707.55
↓75.8%vs prior 7d
Call revenue
$0.00
Not yet reconciled — Ringba revenue exists but has no call_payout events.
Spend
$6,028.32
↓75.9%vs prior 7d

Funnel

Clicks
2,110
↓73.9%vs prior 7d
Leads
448
↓73.6%vs prior 7d
Conversion rate
21.2%
↑1.0%vs prior 7d
Leads sold
150
↓74.1%vs prior 7d
Sold rate
33.5%
↓1.9%vs prior 7d

Efficiency

CPL
$13.46
↓8.6%vs prior 7d
Avg RPL
$2.80
↓12.2%vs prior 7d
Avg click feed rev
$8.64
↓8.3%vs prior 7d
Blended ROAS
0.68×
no changevs prior 7d
Margin
-$1,901
↑75.8%vs prior 7d
CurrentPrior period
$0.00$989.96$1,979.92$2,969.88$3,959.84Oct 11Oct 12Oct 13Oct 14Oct 15Oct 16Oct 17

Campaigns

Account / Campaign / AdSpendClicksLeadsSoldCPLRPLRevenueROAS
$5,803.102,024442149
$13.13
↓7.8%
$2.80
↓12.5%
$4,084.01
↓75.4%
0.70×
$225.22000
—
—
—
—
$0.00
—
0.00×
—500
—
—
—
—
$0.00
↓100.0%
—

Needs attentionNew Account returns 0.70× against Old Account's 0.00×, and the weaker account carries 4% of spend.

$225.22 of Old Account's spend — 100% of it — sits in campaigns with no resolving clicks, so part of this gap is measurement rather than performance. Fix the tracking before moving budget, or you will move it away from traffic that was working.

How to act on this

Move budget toward the account that returns more, without importing the reason it was behind.

  1. Fix tracking first: 1 campaign in Old Account carry $225.22 with no resolving clicks. Moving budget now moves it away from traffic that may be working and merely invisible.
  2. Old Account's 0.00× is computed against spend that includes 100% it gets no credit for. Re-read this after a day of clean data.
  3. If the gap survives the fix it is real, and the budget move is justified then.

Watch out: Accounts differ in pixel history. A newer account can underperform for weeks purely on learning, and cutting it early guarantees it never catches up.

Worth checking1 campaign spent $225.22 with no revenue AND no resolving clicks at all.

No campaign in Old Account resolved a single click this period, so this is account-wide rather than one bad template. Check the domain and the pixel before editing any single ad.

How to act on this

Find out whether the traffic is bad or merely invisible.

  1. Nothing in Old Account is resolving, so a per-campaign fix cannot be the answer. Check the domain and the pixel for that account first.
  2. Load the destination URL yourself and watch the redirect chain. Empty sub-IDs in the landing URL mean the spend is untracked rather than wasted.
  3. Test on mobile. Redirect chains that work on desktop break under in-app browsers more often than anything else in this stack.

Watch out: Fixing the template does not backfill history — the campaign will look brand new when it starts reporting again. Note the date you fixed it or you will read the recovery as a performance change.

Worth checkingThe best campaign at scale still loses money: 0.80× on $1,837 — Client_FB_GB_AUTIN_Leads_JP_260723 – Purchase N2.

The weakest at this spend level returns 0.51×. The gap is on the REVENUE side — $1.65 back per sale against $2.66, at a similar cost per lead — so it is who these leads are sold to, not how they were bought. Shifting budget between them is the cheapest available move, though it reduces the loss rather than reversing it.

How to act on this

Consolidate spend into what is working before building anything new.

  1. CID0766_AUTIN_HELLOGENI_260921_PURCHASES_JP_ABO_N2D returns 0.51× on $245.82 against Client_FB_GB_AUTIN_Leads_JP_260723 – Purchase N2's 0.80× on $1,837. The gap is on the REVENUE side — $1.65 back per sale against $2.66, at a similar cost per lead — so it is who these leads are sold to, not how they were bought.
  2. Move about 20% of the weaker budget — roughly $49.16 across a period this length — rather than pausing. A larger step re-enters learning and the performance being chased disappears.
  3. Both sit below break-even at 0.80× and 0.51×, so this reduces the loss rather than reversing it. The real question is whether either belongs at this spend.

This account runs under Meta’s Financial products and services special ad category — its own description covers “insurance services” — so the guidance above is written to work inside these limits rather than around them:

  • Age is fixed at 18–65+ and cannot be narrowed. (Financial-services advertisers in Europe are the one exception; US accounts are not.)
  • Gender is fixed to all genders.
  • Some detailed targeting options — demographics, behaviours and interests — are unavailable.
  • No ZIP or postal-code targeting. Any city, address or pin must include everything within a 15-mile radius.
  • Lookalike audiences are unavailable.
  • Saved audiences cannot be used or created, so every ad set is built by hand — which is why duplicating beats rebuilding.
  • Custom audiences DO still work, provided the selection is not discriminatory. They are the one audience tool you keep, and the basis of converter exclusions and retargeting.
  • Copy naming a guaranteed rate or a specific saving gets rejected, and repeated rejections restrict the account.

CPL, RPL and Revenue carry their change against the comparison range shown in the bar above. Green is the better direction for that particular figure, so a falling CPL and a rising RPL are both green. A blank change means the row did not exist last period at all — a new campaign, not a flat one. Accounts, campaigns and ads with no activity in the period are omitted entirely. Totals here are lower than the cards above: only clicks that resolve to an ad can be attributed to a campaign. feeds and lead buyers open the demand side of any row — account, campaign or ad. Feeds show which feed at which tier bought the clicks; lead buyers show who bought the leads. They are separate controls because they are separate businesses: one pays per click into an auction, the other per lead accepted, and a row only offers the sides it actually earned from. Each side ends in its own subtotal, and the two together always sum to that row’s revenue, at every level. Clicks there counts only the clicks a feed paid for, a fraction of the clicks the ad produced; Sold counts sales that produced a payout, so it can sit a lead or two below the parent, which counts leads marked sold whether or not the payout has landed; and RPL is revenue per unit of that row — per paid click for a feed, per lead sold for a buyer.

Click feeds

Feed / TierAvg bidBidsClicksRevenueRPU
$4.30
↓32.0%
2,979
↓88.9%
208
↓78.4%
$1,775.40
↓80.9%
$8.54
↓11.7%
$4.71
↓25.5%
4,166
↓74.6%
179
↓62.6%
$1,639.31
↓64.8%
$9.16
↓5.9%
$2.70
↑1.7%
2,161
↓88.2%
47
↓70.8%
$220.11
↓69.7%
$4.68
↑3.6%
$2.40
↓21.1%
2,561
↓88.5%
14
↓87.5%
$72.73
↓88.1%
$5.19
↓5.2%

WorkingSwitchBoard pays the most per click at $9.16, against $4.68 from QuinStreet.

Each figure shows its change against the same figure last period, so a feed paying less per click reads differently from one being sent fewer clicks — revenue alone moves the same either way. Avg bid averages every bid into the feed, winning or not: market context, not earnings. RPU is what a click actually paid. Expanding a feed shows its own tiers — QuoteWizard’s Platinum and Diamond, SwitchBoard’s Email and SEM, numeric ids for Arity and QuinStreet. Those come straight from the payout and so, unlike the campaign view, need no attribution and add up exactly. Bids reach a tier only where that feed’s bid table uses the same tier name — QuoteWizard calls its tiers Platinum and Diamond on both sides, so they join; SwitchBoard bids are recorded as Silver, Platinum and Diamond while its revenue arrives as Email and SEM, which describe a different thing, so those rows stay blank rather than showing a zero. A feed’s tier bid counts need not sum to its own: a tier bid into but never paid for has no revenue row to appear on. Tier names are each feed’s own and are not comparable between feeds. For which campaigns and ads earned this, open sources on a campaign in the Campaigns section. A blank change means no activity at all last period, which is not the same as a fall from zero.

Lead buyers

Buyer / Campaign / AdAvg bidBidsSentSoldAcceptRevenueRPU
$4.05
no change
755
↓87.8%
323
↓88.8%
31
↓78.3%
9.6%
↑93.3%
$148.86
↓75.2%
$4.80
↑14.6%
$3.44
↓23.5%
755
↓87.8%
149
↓92.0%
7
↓87.7%
4.7%
↑53.7%
$36.36
↓89.2%
$5.19
↓11.9%
$2.22
no change
755
↓87.8%
229
↓86.3%
8
↓63.6%
3.5%
↑165.5%
$19.38
↓61.4%
$2.42
↑6.1%
$0.40
↓38.5%
751
↓87.8%
52
↓90.0%
8
↓80.0%
15.4%
↑100.0%
$18.23
↓83.3%
$2.28
↓16.3%
$0.00
—
716
↓87.8%
245
↓86.5%
2
↓92.3%
0.8%
↓43.0%
$4.15
↓94.5%
$2.08
↓28.4%
$1.67
↓7.3%
755
↓87.8%
39
↓86.3%
1
—
2.6%
—
$3.27
—
$3.27
—
$1.87
↑10.7%
734
↓87.8%
53
↓77.4%
1
—
1.9%
—
$3.25
—
$3.25
—
$2.97
↑16.9%
437
↓82.1%
335
↓79.8%
0
—
0.0%
—
$0.00
—
—
—
—
—
755
↓87.8%
137
↓88.4%
0
—
0.0%
—
$0.00
—
—
—
$0.57
↓23.4%
755
↓87.8%
39
↓86.0%
0
—
0.0%
—
$0.00
—
—
—
$1.07
↑31.1%
752
↓87.8%
20
↓77.8%
0
↓100.0%
0.0%
↓100.0%
$0.00
↓100.0%
—
—
—
—
755
↓87.8%
4
↓63.6%
0
—
0.0%
—
$0.00
—
—
—
—
—
744
↓87.9%
2
↓95.7%
0
—
0.0%
—
$0.00
—
—
—

Needs attention537 leads — 33% of everything sent — went to 6 buyers that bought none: Alpine (shared) (335), QuinStreet (137), Datalot (39), and others.

Alpine bought 6 leads last period and none this one. A buyer stopping completely is more often a broken postback than total rejection.

How to act on this

Establish whether the leads were rejected or the sales were never reported.

  1. Pull Alpine's own delivery report for this period and compare their sold count against the zero shown here. If theirs is also zero it is lead quality; if not, revenue is under-reported across every figure on this page.
  2. Check the Everflow adv1 postback for Alpine specifically. They reported 6 sales last period, so something changed on the wire rather than in the leads.
  3. Keep sending while you check. 20 leads went to them this period, and if the postback is the fault that revenue is already earned.

Watch out: Cutting the buyer before checking loses the volume AND leaves the reporting bug in place for the next one.

Needs attentionDMS accepts 0.8% of leads, down 43%.

DMS is accepting fewer AND paying $2.08 per lead sold against $2.90 — they are devaluing this traffic, not only filtering it.

How to act on this

Catch a relationship changing before it shows up in revenue.

  1. Both levers moved: acceptance to 0.8% and price to $2.08 from $2.90. Ask DMS whether their cap or their filters changed — those have different answers.
  2. Check whether the other buyers moved the same way this period. If only DMS did, it is theirs rather than your traffic.
  3. 245 leads went to them, so the volume justifies the call. Route the rejected share to whoever still accepts it rather than letting it sit.

WorkingApollo accepts 3.5% of leads, up 166%.

WorkingHometown accepts 15.4% of leads, up 100%.

This account runs under Meta’s Financial products and services special ad category — its own description covers “insurance services” — so the guidance above is written to work inside these limits rather than around them:

  • Age is fixed at 18–65+ and cannot be narrowed. (Financial-services advertisers in Europe are the one exception; US accounts are not.)
  • Gender is fixed to all genders.
  • Some detailed targeting options — demographics, behaviours and interests — are unavailable.
  • No ZIP or postal-code targeting. Any city, address or pin must include everything within a 15-mile radius.
  • Lookalike audiences are unavailable.
  • Saved audiences cannot be used or created, so every ad set is built by hand — which is why duplicating beats rebuilding.
  • Custom audiences DO still work, provided the selection is not discriminatory. They are the one audience tool you keep, and the basis of converter exclusions and retargeting.
  • Copy naming a guaranteed rate or a specific saving gets rejected, and repeated rejections restrict the account.

Each figure shows its change against the same figure last period, so a buyer paying less per lead reads differently from one accepting fewer. Accept is sold ÷ sent, this buyer’s own acceptance rate — not the dashboard’s sold rate, which spans every buyer. RPU is revenue per lead sold, so price and acceptance stay separable. A row with bids but no sends is a buyer in the auction receiving nothing. Expanded rows cover only what traces back to an ad — about half of pings and sends carry a resolvable identity — so the rates there read higher than the buyer’s own row: traffic that resolves is traffic that tracks, and it converts better.

Demographics

Age / Campaign / AdFeed bidLead bidLeadsSoldSold rateAvg lead revAvg feed revRPLRev/leadCost/leadNet/leadTotal rev
$3.07$1.491995326.6%$0.72$6.26$2.69$6.99$11.95-$4.96$1,376.59
$3.91$1.501566038.5%$1.17$8.29$3.04$9.46$13.36-$3.90$1,447.42
$5.01$1.45561832.1%$0.97$9.92$2.98$10.90$15.74-$4.84$599.24
$5.14$1.33281553.6%$1.18$12.38$2.20$13.56$15.07-$1.52$379.59
$5.38$1.535360.0%$1.34$11.68$2.24$13.03$13.74-$0.71$65.13
$2.55$0.724125.0%$0.51$5.32$2.02$5.83$12.11-$6.29$23.30

Needs attentionWeakest segments with real volume: age 65+ (26.6% on 199) and car make Nissan (27.7% on 47).

Check each one's tab for whether the lever is targeting, geography or the lead itself.

How to act on this

Stop paying full price for the segments that reliably do not sell.

  1. Check the lever first. If these are form answers — prior insurer, car make, credit band — you do not need Meta at all, and this is the cheapest finding on the page to act on.
  2. For a form answer, three options in increasing order of commitment: reprice it with your buyers, route it to a buyer who specifically wants it, or add a qualifying question that filters it out before the lead is created.
  3. Filtering at the form is the strongest and the most dangerous: it reduces volume immediately and permanently, and Meta will keep optimising toward whoever still converts, which can shift your mix in ways this table will show you a week later.
  4. If the weak segment IS a Meta attribute, you are back to creative, placement and value optimisation — see the majority-segment card. There is no exclusion available.

Watch out: A segment that does not sell to YOUR buyers is not a segment that does not sell. Before filtering it out, check whether a different buyer wants exactly that lead — that is revenue you are about to throw away rather than waste you are cutting.

Needs attention65+ is the largest age segment at 44% of leads, and sells at 26.6% against a 33.5% baseline.

Buying is concentrated where it converts worst. 55-64 sells at 38.5% — worth weighting targeting toward it.

How to act on this

Move delivery away from the segment that converts worst, in an account that is not allowed to exclude it.

  1. Age is something Meta knows but this account cannot target — the category restrictions remove it. Everything below reaches it indirectly.
  2. 65+ carries 44% of leads at 26.6% sold, against 55-64 at 38.5%. That gap is the whole finding.
  3. Exclude Audience Network from placements first. It is the most common source of cheap, low-intent leads in restricted financial verticals, and Advantage+ includes it by default.

Watch out: Cutting a segment cuts volume, so CPL rises before ROAS does. Judge on revenue per dollar, not cost per lead, or you will revert a working change in week one. Give any of this 7 days minimum — editing an ad set mid-learning restarts it and destroys the comparison.

Needs attention65+ is priced below other segments by the click feeds: click feeds pay $5.01 per click for 45-54 against $3.07 for 65+.

Independent of how it converts — the market itself values this volume less than the alternatives. Bids move before sales do, so this is the earlier of the two signals.

How to act on this

Buy the segments the market is actually paying more for.

  1. Treat the bid columns as the leading indicator: feeds and buyers reprice before your sold rate moves.
  2. GEOGRAPHY IS THE ONE SEGMENT YOU CAN STILL TARGET. State and city work; a 15-mile-plus radius works; ZIP does not. If the segment here is a state, splitting budget by state is legitimate, unrestricted, and usually the largest direct lever a restricted account has.
  3. For anything that is not geography, value-based optimisation is the substitute for targeting it — feeding sold revenue back makes Meta chase the people the market pays for, which reaches the same objective by a different route.
  4. Compare the bid gap against the CPM difference before chasing it. A segment worth 20% more that costs 40% more to reach is a worse buy, and Meta will not tell you that — this table will.

Watch out: Bids move for reasons that have nothing to do with you: a buyer changing budget, a competitor pausing. Confirm a gap holds across two periods before rebuilding campaigns around it.

Worth checkingPrior insurer separates performance most — 1.6× between its best and worst segment — while Education barely separates at all (1.1×).

Effort spent on education is effort spent on nothing. This is an answer on the form, not something Meta can target. The lever is the lead itself — decline it, reprice it, or route it to a buyer who wants that answer.

How to act on this

Spend your attention on the attribute that actually predicts a sale.

  1. Work the widest-spread attribute and ignore the flattest. An attribute that splits 1.1× between its best and worst segment tells you nothing about a lead; one that splits 3× tells you most of what you can know before a buyer sees it.
  2. THEN CHECK WHICH LEVER IT SITS BEHIND, because that decides whether it is an ads job at all. Age and gender: Meta knows them, this account cannot target them. State: still targetable, so it is a direct Ads Manager change. Everything else here — homeowner, married, credit, prior insurer, car make — Meta never sees. Those are answers on your form.
  3. For a form attribute, the fix is downstream of advertising entirely: stop buying that answer, price it differently, or route it to a buyer who wants it. No campaign changes, no learning phase, effective the same day.
  4. Re-read this each period. Which attribute predicts best moves as the buyer mix moves, and an attribute that mattered last month can stop mattering when one buyer changes filters.

Watch out: A wide spread on small segments is not a wide spread. Every value behind this figure clears 40 leads, but check the table before rebuilding anything around one of them.

Worth checking25-34 sells at 60.0% — but on only 5 leads.

Too few to act on. It needs 40+ before that rate means anything; worth deliberately testing into rather than waiting for it to accumulate.

How to act on this

Buy a decidable sample instead of waiting for one to accumulate.

  1. Run one dedicated ad set with a small fixed daily budget for 7 days. Deliberately buying the sample is faster and cheaper than waiting for it to appear.
  2. Size the budget so the ad set can reach ~50 conversions in the week. Below that Meta never leaves learning, delivery stays erratic, and the result is not readable no matter how long you run it.
  3. You cannot target the segment directly here, so the test is a CREATIVE one: build the ad to speak to that segment, then read the demographic table above to see whether they actually arrived. That table is your targeting readout.
  4. Change one thing. Keep budget, placement, form and objective identical to an existing ad set or you will not know what produced the difference.
  5. At your current rate this segment gains about 0.7 leads a day, so it needs roughly 49 more days to reach a readable 40 — or a dedicated ad set to buy that sample faster.

Watch out: Do not read the result early. This dashboard withholds colour below 40 leads for the same reason — a rate on 25 leads moves on single sales.

WorkingBest-selling segments across every attribute: prior insurer geico (44.2% on 43), married yes (42.1% on 121), prior insurer other (40.2% on 92), against a 33.5% baseline.

This is an answer on the form, not something Meta can target. The lever is the lead itself — decline it, reprice it, or route it to a buyer who wants that answer.

How to act on this

Get more of what already sells, across every attribute rather than the one you happened to be looking at.

  1. Sort the levers before acting. Geography can be targeted directly, and state-level budget splits are the single most available change in a restricted account. Age and gender cannot be targeted, so they run through creative and value optimisation. Form answers are not an advertising question at all.
  2. For geography: build one ad set per strong state rather than one national ad set. A single ad set spends where delivery is cheapest, which is rarely where it sells best.
  3. For form answers: this is a lead-economics change, not a media one. A segment selling at twice baseline is worth more than you are charging for it — check whether your buyers price it the same as everything else, and whether a specialist buyer would pay more.
  4. For age and everything Meta will not let you name: the value-optimisation route on the majority-segment card above reaches all of these at once, which is why it is worth doing properly rather than repeatedly.

Watch out: Segments overlap. The 45-54 married homeowner in Michigan is one person appearing in four rows, so these are not four separate opportunities to add up.

This account runs under Meta’s Financial products and services special ad category — its own description covers “insurance services” — so the guidance above is written to work inside these limits rather than around them:

  • Age is fixed at 18–65+ and cannot be narrowed. (Financial-services advertisers in Europe are the one exception; US accounts are not.)
  • Gender is fixed to all genders.
  • Some detailed targeting options — demographics, behaviours and interests — are unavailable.
  • No ZIP or postal-code targeting. Any city, address or pin must include everything within a 15-mile radius.
  • Lookalike audiences are unavailable.
  • Saved audiences cannot be used or created, so every ad set is built by hand — which is why duplicating beats rebuilding.
  • Custom audiences DO still work, provided the selection is not discriminatory. They are the one audience tool you keep, and the basis of converter exclusions and retargeting.
  • Copy naming a guaranteed rate or a specific saving gets rejected, and repeated rejections restrict the account.

Leads are counted in the window they arrived, and a sale counts toward them whenever it lands — so a demographic is judged on the leads it produced, not on the day money happened to arrive. Recent windows therefore understate sold rate. Sold rate is coloured against this scope’s 33.5% baseline, and only once a row has at least 40 leads — below that a rate is chance, not a finding. RPL is revenue per lead SOLD; Rev/lead beside it is over every lead that arrived. They move apart when acceptance changes, which is the reason both are here. Cost/lead is allocated at AD grain — each of an ad’s leads carries the same share of its spend — so segments differ only where they were produced by different ads. Small differences between segments are that mix, not a measured cost difference. Feed bid is dollars per click into the click feeds and Lead bid is dollars per lead offered by lead buyers — two different markets valuing the same person, never averaged together. Avg sold is confirmed revenue per lead sold, not the price field on the lead row.

Rev/lead, Cost/lead and Net/lead are measured over the same population — the leads that resolve to an ad, since spend exists only at ad grain and a lead with no ad has no cost to carry. Cost charges an ad’s whole spend across the leads it produced, so it is deliberately conservative: that same spend also bought clicks from people who never became a lead, and their click revenue is excluded from both sides. Net therefore reads worse here than the blended business does. Expanding shows only leads that trace back to an ad, so campaigns sum to less than the row above them.

Timing

HourFeed bidFeed bidsLead bidLead bidsClicksClick revLeadsSoldSold rateRPLCPL
$3.14431$1.2729277$121.1519421.1%$2.35—
$4.01191$1.2012358$37.817228.6%$1.72—
$3.78351$1.3223760$94.2012541.7%$1.99—
$4.41404$1.8031778$176.2418211.1%$2.58—
$3.32187$1.3317240$40.6510220.0%$2.54—
$3.77351$1.40312102$162.1920630.0%$1.61—
$4.33352$1.3728562$162.0613323.1%$2.49—
$3.33458$1.1141793$64.3311436.4%$2.11—
$3.90529$1.4246095$199.2922836.4%$2.01—
$3.52926$1.5181798$263.64331236.4%$3.50—
$3.90732$1.5558680$160.54191052.6%$3.19—
$3.49725$1.67617120$157.9420840.0%$3.49—
$3.79777$1.37652110$175.5619842.1%$2.16—
$3.72818$1.53666136$154.1921733.3%$1.89—
$3.52773$1.7565484$177.8922940.9%$3.70—
$3.21468$1.3654196$124.0415426.7%$1.98—
$3.81585$1.46466100$190.75241250.0%$4.03—
$4.03575$1.61443117$172.3418527.8%$4.68—
$3.93433$1.53316114$246.5623939.1%$2.69—
$3.61491$0.9941293$207.8624520.8%$2.20—
$4.17419$0.91442119$231.2430516.7%$2.40—
$3.82265$0.6630071$193.6720525.0%$1.69—
$3.90334$1.4428255$76.2113538.5%$4.32—
$4.02292$1.2224852$117.20151066.7%$2.30—

Needs attention8 PM sells at 16.7% against a 33.5% baseline, on 30 leads.

Buyers bid $0.91 a ping into this hour against $1.37 across the period, so the demand side is paying less then — this is cheap traffic, not bad traffic.

How to act on this

Stop paying full price for the hours or days that convert worst.

  1. Do not daypart 8 PM away. Bids are 33% lower then, which means the market is thin at that hour rather than your leads being worse.
  2. Check whether your sold rate falls as far as the bids do. If it does not, 8 PM is where you are buying good leads cheaply and the move is to buy MORE of it, not less.
  3. If you do want to act, a cost cap handles this continuously — Ad set → Bid strategy → Cost per result goal — and skips expensive windows on its own without a hand-drawn schedule.

Watch out: Switching to a lifetime budget resets the ad set into learning. Do it when you can leave it alone for a week, not mid-flight on your best performer.

Worth checkingLead bids run $1.80 on 3 AM against $0.66 on 9 PM.

Buyers pay less for leads at that hour regardless of quality. Volume bought then is worth less before the traffic is even considered.

How to act on this

Pay less when the demand side is paying less.

  1. 9 PM prices $0.66 a ping against $1.80 at 3 AM — a 63% difference the traffic never sees. That is the demand side taking time off, not your leads getting worse.
  2. Check whether your sold rate at 9 PM falls as far as the bids do. If it does not, you are buying good leads cheaply then and should consider buying more, not less.
  3. A cost cap does this continuously without a schedule: Ad set → Bid strategy → Cost per result goal, started within about 20% of your current CPL. Set below it and the ad set simply stops spending, which reads as a broken campaign.

Watch out: Cost caps constrain volume. Expect delivery to drop before efficiency improves, and do not raise the cap in the first 48 hours.

Worth checkingNo cost figures in this section.

Facebook spend arrives at daily grain, so CPL and ROAS cannot be split by hour or weekday. Everything here is revenue-side until an hourly pull is added.

This account runs under Meta’s Financial products and services special ad category — its own description covers “insurance services” — so the guidance above is written to work inside these limits rather than around them:

  • Age is fixed at 18–65+ and cannot be narrowed. (Financial-services advertisers in Europe are the one exception; US accounts are not.)
  • Gender is fixed to all genders.
  • Some detailed targeting options — demographics, behaviours and interests — are unavailable.
  • No ZIP or postal-code targeting. Any city, address or pin must include everything within a 15-mile radius.
  • Lookalike audiences are unavailable.
  • Saved audiences cannot be used or created, so every ad set is built by hand — which is why duplicating beats rebuilding.
  • Custom audiences DO still work, provided the selection is not discriminatory. They are the one audience tool you keep, and the basis of converter exclusions and retargeting.
  • Copy naming a guaranteed rate or a specific saving gets rejected, and repeated rejections restrict the account.

Buckets are Mountain time, DST included — the warehouse stores UTC, and raw UTC hours would sit six or seven hours off what the business actually experienced. RPL is lead revenue per lead sold, the same definition the campaigns table uses. CPL is spend over leads. By weekday it comes from the daily spend table. By hour it comes from the platforms’ own hourly breakdowns — Meta’s advertiser-timezone split and Google’s segments.hour, both already in Mountain and so needing no conversion — which means an empty hourly CPL is a day those adapters have not covered rather than a figure that cannot exist. Spend belongs to the ad rather than to whichever buyer took the lead, so the expanded buyer rows leave CPL blank either way. Feed bid is dollars per click into the click feeds; Lead bid is dollars per lead offered by lead buyers. Different units, never averaged together. Bids and clicks are bucketed by when they happened; leads, sold and avg sold by when the lead arrived, so a late-night lead that sells at 9am counts toward the night — the question here is what traffic from an hour is worth. Sold rate is coloured against the 33.5% baseline once a bucket has 25+ leads. There is no cost column: Facebook spend is ingested at daily grain, so CPL and ROAS cannot be split by hour without an hourly pull.

Expand a hour to see it per counterparty — which feed was paying then, which buyer was accepting. A buyer that is both appears once, with both halves filled. Inside an expanded row, Leads means leads sent to that buyer and sold rate is their acceptance of them, where the row above counts every lead that arrived — same question, narrower denominator. Those figures are bucketed by when we contacted the buyer, which is the clock a daypart rule acts on.

Before switching a feed off for an hour, check the volume behind it: a single fortnight gives each weekday two or three samples, and each hour fewer still.