Media BuyingAll accounts
Revenue
Funnel
Efficiency
Campaigns
| Account / Campaign / Ad | Spend | Clicks | Leads | Sold | CPL | RPL | Revenue | ROAS |
|---|---|---|---|---|---|---|---|---|
| $106,515.33 | 31,833 | 6,921 | 1,920 | $15.39 ↑21.9% | $3.36 ↓2.1% | $72,196.67 ↑17.5% | 0.68× | |
| $4,496.41 | 0 | 0 | 0 | — — | — — | $0.00 ↓100.0% | 0.00× | |
| $1,286.30 | 256 | 15 | 12 | $85.75 ↓19.2% | $3.58 ↓2.5% | $300.83 ↓19.4% | 0.23× |
Needs attentionNew Account returns 0.68× against Old Account's 0.00×, and the weaker account carries 4% of spend.
$4,496 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.
- Fix tracking first: 1 campaign in Old Account carry $4,496 with no resolving clicks. Moving budget now moves it away from traffic that may be working and merely invisible.
- 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.
- 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 $4,496 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.
- 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.
- 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.
- 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.77× on $25,932 — CLIENT – Purchase - PV >= 10.00 N5.
The weakest at this spend level returns 0.23×. The gap is on the COST side — $85.75 a lead against $18.10 — so it is a creative and bidding problem, not a routing one. 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.
- CID0744_AUTIN_HELLOGENI_GOOGLESEARCH_GB_LEADS_new_URL #2 returns 0.23× on $1,286 against CLIENT – Purchase - PV >= 10.00 N5's 0.77× on $25,932. The gap is on the COST side — $85.75 a lead against $18.10 — so it is a creative and bidding problem, not a routing one.
- Move about 20% of the weaker budget — roughly $257.26 across a period this length — rather than pausing. A larger step re-enters learning and the performance being chased disappears.
- Both sit below break-even at 0.77× and 0.23×, 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 / Tier | Avg bid | Bids | Clicks | Revenue | RPU |
|---|---|---|---|---|---|
$6.36 ↓9.6% | 103,014 ↑38.3% | 4,533 ↓18.5% | $45,144.88 ↓12.9% | $9.96 ↑6.8% | |
$6.40 ↓4.4% | 61,995 ↑50.6% | 1,715 ↑52.4% | $16,837.44 ↑78.6% | $9.82 ↑17.1% | |
$2.59 no change | 65,930 ↑33.1% | 1,016 ↑50.1% | $3,960.62 ↑69.4% | $3.90 ↑12.9% | |
$2.44 ↑22.4% | 85,260 ↑43.6% | 316 ↓29.0% | $1,712.81 ↓18.1% | $5.42 ↑15.4% |
Worth checkingQuoteWizard is 67% of click feed revenue.
Not a problem while it performs, but a single counterparty changing its bids moves the whole line. The other feeds are the hedge.
How to act on this
Reduce the damage one counterparty can do by changing its bids.
- Not an Ads Manager fix — a relationship and routing question.
- Send a small fixed share to the second-place feed continuously, even at slightly worse economics. It keeps their pricing honest and gives you somewhere to go the week the leader repricess.
- Track the concentration figure here over periods rather than at a point. A share that keeps climbing is the signal; the level on its own is not.
WorkingSwitchBoard now pays $9.82 per click, up 17%.
SwitchBoard's bids are flat (4% change), so the feed did not reprice. What changed is the traffic you sent it.
How to act on this
Act on which of the two happened — the finding beside this one already says which.
- SEM went from 6% to 16% of SwitchBoard's clicks and pays $22.70 against the $8.38 this feed averaged before. That share is yours, not theirs.
- CID0766_AUTIN_HELLOGENI_260916_PURCHASES_JP_CBO_CPACAP N2C sends 26% of this feed's traced clicks at $5.66 each, against $9.82 across the feed. Start there rather than with the ad that has the worst headline number.
- Change one thing and give it a week. SwitchBoard's pricing and Meta's delivery both move on their own, and two changes at once leave the result unattributable.
Watch out: Revenue can rise the whole time this happens. Judging the relationship on revenue alone hides it completely, which is exactly why these tables show RPU separately.
WorkingArity now pays $5.42 per click, up 15%.
Arity's own bids rose 22% over the same period, $1.99 to $2.44. The feed repriced; the traffic you sent did not change.
How to act on this
Act on which of the two happened — the finding beside this one already says which.
- Nothing in Ads Manager caused this and nothing there fixes it. Arity moved its own bid from $1.99 to $2.44.
- Treat the extra as borrowed. You did not earn this rise, so you cannot defend it — check next period whether $2.44 holds before building budget around it.
Watch out: Revenue can rise the whole time this happens. Judging the relationship on revenue alone hides it completely, which is exactly why these tables show RPU separately.
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 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 / Ad | Avg bid | Bids | Sent | Sold | Accept | Revenue | RPU |
|---|---|---|---|---|---|---|---|
$3.71 ↑4.7% | 23,607 ↑34.5% | 11,257 ↑26.8% | 569 ↓3.6% | 5.1% ↓23.9% | $2,146.39 ↑7.2% | $3.77 ↑11.1% | |
$4.50 ↑19.8% | 23,606 ↑34.6% | 7,502 ↑39.6% | 252 ↑12.0% | 3.4% ↓19.8% | $1,517.94 ↑4.3% | $6.02 ↓6.9% | |
$0.00 — | 22,740 ↑31.4% | 7,202 ↑66.2% | 114 ↑115.1% | 1.6% ↑29.4% | $381.02 ↑139.5% | $3.34 ↑11.3% | |
$2.21 ↑42.2% | 23,606 ↑35.4% | 8,435 ↑97.2% | 155 ↓32.0% | 1.8% ↓65.5% | $369.98 ↑18.5% | $2.39 ↑74.3% | |
$0.50 ↑97.3% | 23,546 ↑34.7% | 1,519 ↑126.0% | 106 ↑1414.3% | 7.0% ↑569.9% | $296.11 ↑1032.4% | $2.79 ↓25.2% | |
$1.86 no change | 23,610 ↑34.6% | 1,393 ↓9.4% | 11 ↓38.9% | 0.8% ↓32.6% | $46.78 ↓39.3% | $4.25 ↓0.7% | |
$0.66 ↑31.9% | 23,518 ↑34.5% | 200 ↓65.2% | 7 ↓91.3% | 3.5% ↓74.8% | $15.43 ↓85.7% | $2.20 ↑63.4% | |
$1.57 ↑15.2% | 22,799 ↑34.5% | 507 ↑4.1% | 2 ↓83.3% | 0.4% ↓84.0% | $6.50 ↓72.5% | $3.25 ↑65.3% | |
— — | 23,301 ↑36.7% | 235 ↓52.0% | 2 ↓71.4% | 0.9% ↓40.4% | $6.29 ↓68.6% | $3.15 ↑10.0% | |
$2.76 ↑10.0% | 9,183 ↓47.3% | 3,508 ↑350700.0% | 0 — | 0.0% — | $0.00 — | — — | |
— — | 23,585 ↑34.5% | 2,383 ↑918.4% | 0 — | 0.0% — | $0.00 — | — — | |
$0.76 ↓16.6% | 23,606 ↑34.5% | 1,494 ↓51.2% | 0 — | 0.0% — | $0.00 — | — — | |
— — | 23,609 ↑34.5% | 52 ↑108.0% | 0 — | 0.0% — | $0.00 — | — — |
Needs attention7,437 leads — 16% of everything sent — went to 4 buyers that bought none: Alpine (shared) (3,508), QuinStreet (2,383), Datalot (1,494), and others.
None of these buyers bought anything in either period, so this is a standing configuration rather than something that broke.
How to act on this
Establish whether the leads were rejected or the sales were never reported.
- Alpine (shared) and QuinStreet have never returned a sale in the data on this page. That is a filter or contract question, not a performance one.
- Ask what they actually accept before sending more — 7,437 leads, 16% of everything sent, is going somewhere that has never paid for one.
- If they genuinely reject this traffic, that volume is better routed to a buyer that wants it. Revenue, rather than waste avoided.
Watch out: Cutting the buyer before checking loses the volume AND leaves the reporting bug in place for the next one.
Needs attentionCompare accepts 0.4% of leads, down 84%.
Compare is taking fewer leads but paying MORE for the ones it takes — $3.25 against $1.97. They narrowed to a segment they value higher, which is a filter change, not a downgrade.
How to act on this
Catch a relationship changing before it shows up in revenue.
- Price ROSE to $3.25 from $1.97 while acceptance fell to 0.4%. Compare narrowed to leads it values more — worth asking which ones, because that is a description of your best traffic.
- Ask which filter. A buyer that keeps its price and narrows its intake usually changed something specific: a state, an age band, a prior-insurer rule.
- The rejected volume is still sellable — 507 sent at 0.4% acceptance leaves a real remainder worth routing elsewhere.
Needs attentionAlpine accepts 3.5% of leads, down 75%.
Alpine is taking fewer leads but paying MORE for the ones it takes — $2.20 against $1.35. They narrowed to a segment they value higher, which is a filter change, not a downgrade.
How to act on this
Catch a relationship changing before it shows up in revenue.
- Price ROSE to $2.20 from $1.35 while acceptance fell to 3.5%. Alpine narrowed to leads it values more — worth asking which ones, because that is a description of your best traffic.
- Ask which filter. A buyer that keeps its price and narrows its intake usually changed something specific: a state, an age band, a prior-insurer rule.
- The rejected volume is still sellable — 200 sent at 3.5% acceptance leaves a real remainder worth routing elsewhere.
WorkingHometown accepts 7.0% of leads, up 570%.
Nothing to change in Ads Manager for this one — it is a reading of the numbers rather than a lever.
WorkingDMS accepts 1.6% of leads, up 29%.
Nothing to change in Ads Manager for this one — it is a reading of the numbers rather than a lever.
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 / Ad | Feed bid | Lead bid | Leads | Sold | Sold rate | Avg lead rev | Avg feed rev | RPL | Rev/lead | Cost/lead | Net/lead | Total rev |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| $3.00 | $1.36 | 3,001 | 607 | 20.2% | $0.64 | $6.59 | $3.15 | $7.23 | $14.30 | -$7.08 | $20,863.84 | |
| $3.83 | $1.50 | 2,147 | 652 | 30.4% | $1.07 | $8.60 | $3.48 | $9.66 | $15.51 | -$5.85 | $20,183.54 | |
| $5.82 | $1.53 | 1,128 | 398 | 35.3% | $1.23 | $14.28 | $3.46 | $15.51 | $16.12 | -$0.61 | $17,264.45 | |
| $5.59 | $1.41 | 597 | 229 | 38.4% | $1.30 | $12.77 | $3.37 | $14.07 | $16.11 | -$2.03 | $8,232.02 | |
| $5.18 | $1.45 | 166 | 70 | 42.2% | $1.55 | $11.73 | $3.67 | $13.28 | $15.74 | -$2.46 | $2,124.77 | |
| $3.75 | $0.76 | 101 | 18 | 17.8% | $0.52 | $8.39 | $2.88 | $8.91 | $16.13 | -$7.22 | $846.47 |
Needs attentionWeakest segments with real volume: state NJ (12.1% on 91) and state WI (12.3% on 65).
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.
- 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.
- 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.
- 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.
- 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 42% of leads, and sells at 20.2% against a 27.6% baseline.
Buying is concentrated where it converts worst. 25-34 sells at 42.2% — 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.
- Age is something Meta knows but this account cannot target — the category restrictions remove it. Everything below reaches it indirectly.
- 18-24 carries 1% of leads at 17.8% sold, against 25-34 at 42.2%. That gap is the whole finding.
- 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.82 per click for 45-54 against $3.00 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.
- Treat the bid columns as the leading indicator: feeds and buyers reprice before your sold rate moves.
- 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.
- 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.
- 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 checkingState separates performance most — 3.7× between its best and worst segment — while Military barely separates at all (1.1×).
Effort spent on military is effort spent on nothing. State targeting still works under the category rules, so this one is directly actionable in Ads Manager.
How to act on this
Spend your attention on the attribute that actually predicts a sale.
- 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.
- 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.
- 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.
- 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 checking18-24 sells at 17.8% on 101 leads.
Below baseline, but not where the volume is — worth excluding only if it is cheap to target around.
Nothing to change in Ads Manager for this one — it is a reading of the numbers rather than a lever.
WorkingBest-selling segments across every attribute: state IA (44.6% on 56), age 25-34 (42.2% on 166), car make Subaru (40.2% on 107), against a 27.6% baseline.
These sit behind different levers — check each one's own tab for whether it is a targeting, geography or lead-routing decision.
How to act on this
Get more of what already sells, across every attribute rather than the one you happened to be looking at.
- 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.
- 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.
- 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.
- 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.
Working25-34 sells at 42.2% on 166 leads, against a 27.6% baseline.
It is 2% of volume. Scaling it is the cheapest improvement available in this section.
How to act on this
Get more of the segment that already converts above baseline.
- Raise budget on the winning ad set by roughly 20% at a time, waiting 3–4 days between increases. Larger jumps re-enter learning and the performance you were scaling disappears — this is the most common way a novice destroys a winner.
- Duplicating into a new ad set at higher budget is the alternative, and keeps the original as a control. Under this category you cannot save audiences, so duplicate rather than rebuild or the two will not be comparable.
- Reporting breakdowns by age still work even though targeting by age does not. Ads Manager → Breakdown → Age tells you whether Meta is finding the segment on its own, which decides whether you push creative or budget.
- Watch frequency as you scale. Above roughly 2.5 in a week on the same audience, you are paying more to reach people who already said no, and CPL rises for reasons that look like audience fatigue because they are.
- Account spend is running about $3740 a day, so a 20% step at that level is roughly $750 a day added — apply the same proportion to whichever ad set you are scaling, not to the account total.
Watch out: Scaling a small winner usually regresses toward the mean. Confirm it holds for two consecutive periods on this page before committing real budget.
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 27.6% 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
| Hour | Feed bid | Feed bids | Lead bid | Lead bids | Clicks | Click rev | Leads | Sold | Sold rate | RPL | CPL |
|---|---|---|---|---|---|---|---|---|---|---|---|
| $3.63 | 3,730 | $1.13 | 3,270 | 736 | $1,553.50 | 173 | 30 | 17.3% | $2.43 | — | |
| $3.70 | 3,424 | $1.11 | 3,026 | 614 | $1,282.20 | 144 | 24 | 16.7% | $2.18 | — | |
| $4.25 | 3,471 | $1.35 | 2,941 | 621 | $1,343.79 | 138 | 39 | 28.3% | $3.33 | — | |
| $4.25 | 3,356 | $1.21 | 3,078 | 734 | $1,417.14 | 157 | 31 | 19.7% | $2.50 | — | |
| $4.49 | 4,544 | $1.36 | 4,042 | 1,015 | $1,805.10 | 205 | 45 | 22.0% | $3.36 | — | |
| $4.45 | 6,108 | $1.31 | 5,435 | 1,588 | $2,674.60 | 277 | 72 | 26.0% | $3.36 | — | |
| $4.72 | 8,908 | $1.42 | 7,806 | 1,708 | $3,874.50 | 371 | 90 | 24.3% | $3.66 | — | |
| $4.54 | 11,001 | $1.60 | 10,037 | 1,698 | $4,322.72 | 372 | 118 | 31.7% | $3.58 | — | |
| $4.49 | 10,903 | $1.75 | 10,038 | 1,714 | $4,361.63 | 392 | 150 | 38.3% | $3.70 | — | |
| $4.60 | 16,110 | $1.62 | 15,767 | 1,571 | $3,606.96 | 365 | 143 | 39.2% | $3.78 | — | |
| $4.85 | 25,689 | $1.60 | 24,286 | 1,426 | $3,168.25 | 306 | 113 | 36.9% | $3.57 | — | |
| $4.84 | 35,811 | $1.64 | 34,417 | 1,628 | $2,929.55 | 280 | 91 | 32.5% | $3.56 | — | |
| $4.82 | 35,222 | $1.65 | 33,955 | 1,564 | $2,916.52 | 292 | 107 | 36.6% | $3.74 | — | |
| $4.74 | 34,390 | $1.60 | 32,958 | 1,696 | $2,978.31 | 328 | 112 | 34.1% | $3.48 | — | |
| $4.49 | 27,249 | $1.58 | 26,922 | 1,558 | $3,145.95 | 312 | 102 | 32.7% | $3.34 | — | |
| $4.20 | 18,973 | $1.49 | 20,246 | 1,673 | $3,164.77 | 343 | 106 | 30.9% | $3.50 | — | |
| $4.31 | 14,539 | $1.46 | 14,561 | 1,709 | $3,038.11 | 326 | 91 | 27.9% | $3.20 | — | |
| $4.18 | 12,307 | $1.41 | 11,970 | 1,675 | $3,525.56 | 377 | 103 | 27.3% | $3.26 | — | |
| $4.08 | 10,880 | $1.26 | 10,542 | 1,721 | $3,469.73 | 377 | 86 | 22.8% | $2.81 | — | |
| $3.88 | 9,188 | $1.09 | 8,902 | 1,846 | $3,079.42 | 359 | 66 | 18.4% | $3.10 | — | |
| $4.31 | 6,729 | $0.99 | 9,180 | 1,806 | $3,358.71 | 424 | 74 | 17.5% | $2.73 | — | |
| $4.21 | 5,193 | $0.95 | 7,430 | 1,387 | $2,742.15 | 337 | 52 | 15.4% | $2.65 | — | |
| $4.02 | 4,926 | $1.13 | 6,079 | 1,094 | $2,129.97 | 288 | 76 | 26.4% | $3.43 | — | |
| $4.07 | 3,548 | $1.16 | 4,356 | 854 | $1,766.62 | 205 | 54 | 26.3% | $3.09 | — |
Needs attention9 PM sells at 15.4% against a 27.6% baseline, on 337 leads.
Buyers bid $0.95 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.
- Do not daypart 9 PM away. Bids are 31% lower then, which means the market is thin at that hour rather than your leads being worse.
- Check whether your sold rate falls as far as the bids do. If it does not, 9 PM is where you are buying good leads cheaply and the move is to buy MORE of it, not less.
- 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.75 on 8 AM against $0.95 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.
- 9 PM prices $0.95 a ping against $1.75 at 8 AM — a 46% difference the traffic never sees. That is the demand side taking time off, not your leads getting worse.
- 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.
- 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.
Nothing to change in Ads Manager for this one — it is a reading of the numbers rather than a lever.
Working9 AM sells at 39.2% on 365 leads.
Nothing to change in Ads Manager for this one — it is a reading of the numbers rather than a lever.
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 27.6% 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.