The account spent $625.17 across five worldwide creatives and the German buy, and took 1,128 installs at $0.554. The day before it spent $446.00 for 785 at $0.568. Within-day revenue was $898.32 against $588.70. Our payment records read 0.98 of Meta's booked figure; the report clock, the three revenue measures and a regime are defined in the appendix.
| spend | installs | CPI | impressions | CPM | CTR | booked | bROAS | within-day | wROAS | cohort@24h | cROAS | |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2026-08-04 | $446.00 | 785 | $0.568 | 35,852 | 12.44 | 9.03% | $921.86 | 2.07 | $588.70 | 1.32 | $817.43 | 1.83 |
| 2026-08-05 | $625.17 | 1,128 | $0.554 | 53,522 | 11.68 | 9.18% | $1,427.51 | 2.28 | $898.32 | 1.44 | $923.62 | 1.48 |
Keyed on the INSTALL day and measured from each user's own install stamp: dN is their first (N+1) x 24 h. ARPU is Adjust's own series, the one the partner's dashboard reports; ARPPU is our payment ledger, because Adjust exposes no cumulative distinct-payer count. A horizon the window has not lived through yet is left empty rather than written as zero.
| app | ARPU (d0) | ARPU (d3) | ARPU (d7) | ARPPU (d0) | ARPPU (d3) | ARPPU (d7) | installs |
|---|---|---|---|---|---|---|---|
| Vloom | $0.9750 | $1.5693 | $2.3236 | $15.37 | $21.78 | $29.09 | 1,277 |
Cohort@24h is 100% covered on 08-04 and 9% on 08-05, so those two columns are not set against each other here; the completed figure and the comparison it allows are in Caveats. Within-day is sealed on both days and is the day-over-day measure.
The cohort gap is age. At matched H=6: pool5 0.951 → 1.331, bikini 0.241 → 0.256; bodysuit 0.750 → 0.496 falls anyway.
pool5 returned $545.46 of the day's $898.32, and half of that came from the United States on 14.3% American spend.Delivery columns are Meta's instrument on both sides of every ratio. ours is our own registration count, never crossed with Meta's installs. cov is cohort coverage at H=24 for that hour's installs.
| hr | spend | impr | CPM | clicks | CTR | inst | clk→i | CPI | ours | cov | booked | bROAS | within-day | wROAS | wPay | cohort@24h | cROAS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | $22.26 | 1,792 | 12.42 | 166 | 9.26% | 47 | 28.3% | $0.474 | 44 | 100% | $4.99 | 0.22 | $66.62 | 2.99 | 4 | $66.62 | 2.99 |
| 1 | $20.39 | 1,954 | 10.44 | 188 | 9.62% | 41 | 21.8% | $0.497 | 40 | 100% | $59.14 | 2.90 | $210.94 | 10.35 | 1 | $210.94 | 10.35 |
| 2 | $21.88 | 2,340 | 9.35 | 228 | 9.74% | 59 | 25.9% | $0.371 | 57 | 40% | $166.92 | 7.63 | $20.88 | 0.95 | 3 | $20.88 | 0.95 |
| 3 | $25.00 | 2,598 | 9.62 | 213 | 8.20% | 63 | 29.6% | $0.397 | 65 | 0% | $159.72 | 6.39 | $94.49 | 3.78 | 9 | $97.48 | 3.90 |
| 4 | $28.04 | 2,608 | 10.75 | 224 | 8.59% | 59 | 26.3% | $0.475 | 58 | 0% | $58.29 | 2.08 | $42.84 | 1.53 | 2 | $42.84 | 1.53 |
| 5 | $31.34 | 2,886 | 10.86 | 264 | 9.15% | 49 | 18.6% | $0.640 | 55 | 0% | $67.88 | 2.17 | $5.01 | 0.16 | 1 | $5.01 | 0.16 |
| 6 | $32.21 | 2,462 | 13.08 | 223 | 9.06% | 54 | 24.2% | $0.596 | 55 | 0% | $93.43 | 2.90 | $20.77 | 0.64 | 4 | $20.77 | 0.64 |
| 7 | $46.06 | 3,182 | 14.48 | 276 | 8.67% | 56 | 20.3% | $0.822 | 63 | 0% | $29.43 | 0.64 | $27.91 | 0.61 | 5 | $27.91 | 0.61 |
| 8 | $0.78 | 57 | 13.68 | 5 | 8.77% | 8 | 160.0% | $0.098 | 10 | 0% | $42.63 | 54.66 | $3.02 | 3.87 | 1 | $3.02 | 3.87 |
| 9 | $0.00 | 0 | — | 0 | — | 5 | — | — | 7 | 0% | $25.99 | — | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 10 | $0.00 | 0 | — | 0 | — | 2 | — | — | 1 | 0% | $46.94 | — | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 11 | $0.00 | 0 | — | 0 | — | 1 | — | — | 4 | 0% | $0.00 | — | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 12 | $0.01 | 4 | 2.50 | 0 | 0.00% | 3 | 0.0% | $0.003 | 3 | 0% | $12.49 | 1248.98 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 13 | $6.30 | 332 | 18.98 | 39 | 11.75% | 8 | 20.5% | $0.787 | 6 | 0% | $10.39 | 1.65 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 14 | $43.47 | 3,103 | 14.01 | 320 | 10.31% | 62 | 19.4% | $0.701 | 62 | 0% | $89.19 | 2.05 | $31.85 | 0.73 | 2 | $31.85 | 0.73 |
| 15 | $49.22 | 4,270 | 11.53 | 436 | 10.21% | 86 | 19.7% | $0.572 | 92 | 0% | $43.05 | 0.87 | $29.99 | 0.61 | 5 | $29.99 | 0.61 |
| 16 | $37.75 | 3,519 | 10.73 | 324 | 9.21% | 61 | 18.8% | $0.619 | 64 | 0% | $50.88 | 1.35 | $16.51 | 0.44 | 3 | $16.51 | 0.44 |
| 17 | $43.76 | 3,966 | 11.03 | 331 | 8.35% | 85 | 25.7% | $0.515 | 87 | 0% | $38.00 | 0.87 | $45.99 | 1.05 | 5 | $45.99 | 1.05 |
| 18 | $47.34 | 4,207 | 11.25 | 374 | 8.89% | 79 | 21.1% | $0.599 | 82 | 0% | $62.27 | 1.32 | $27.91 | 0.59 | 5 | $31.47 | 0.66 |
| 19 | $39.50 | 3,547 | 11.14 | 316 | 8.91% | 81 | 25.6% | $0.488 | 84 | 0% | $168.43 | 4.26 | $141.62 | 3.59 | 10 | $141.62 | 3.59 |
| 20 | $33.60 | 3,111 | 10.80 | 291 | 9.35% | 68 | 23.4% | $0.494 | 73 | 0% | $67.54 | 2.01 | $29.67 | 0.88 | 3 | $29.67 | 0.88 |
| 21 | $37.24 | 2,893 | 12.87 | 274 | 9.47% | 58 | 21.2% | $0.642 | 63 | 0% | $27.12 | 0.73 | $5.93 | 0.16 | 1 | $5.93 | 0.16 |
| 22 | $27.41 | 2,477 | 11.07 | 217 | 8.76% | 47 | 21.7% | $0.583 | 54 | 0% | $55.74 | 2.03 | $54.80 | 2.00 | 5 | $67.79 | 2.47 |
| 23 | $31.61 | 2,214 | 14.28 | 204 | 9.21% | 46 | 22.5% | $0.687 | 55 | 0% | $47.02 | 1.49 | $21.58 | 0.68 | 1 | $27.34 | 0.86 |
| ALL | $625.17 | 53,522 | 11.68 | 4,913 | 9.18% | 1,128 | 23.0% | $0.554 | 1,184 | 9% | $1,427.51 | 2.28 | $898.32 | 1.44 | 70 | $923.62 | 1.48 |
⚠ Payer counts per hour run 0–10. An hourly ARPPU on one payer is that payer's own basket. Read the ALL row for level and the hours for shape only. Hours 08–12 carry booked revenue against no spend because booked sits on the payment hour while spend sits on the delivery hour. Those are earlier installs paying during the blackout.
The blackout is a billing event. Hours 09–12 UTC (PT 02:00–05:00) took zero impressions and $0.00, hour 08 took 57, against 2,400–3,200 impressions either side.
A threshold charge failed, and the billing ledger times it to the hour delivery stopped. On 08-05 the account was on threshold billing at $539.00:
| PT | event | amount | card | status |
|---|---|---|---|---|
| 01:00 | threshold charge — "you reached your $539.00 payment threshold" | $540.72 | MasterCard ····9617 | Failed |
| 01:16 | Meta splits it and retries | $67.58 | MasterCard ····9617 | Paid |
| 01:16 | the other half of the split | $135.35 | MasterCard ····9617 | Failed |
| 04:40 | "you requested this manual payment" | $480.62 | Visa ····7533 | Paid |
| 05:11 | account moved onto a prepaid balance | $990.00 | MasterCard ····9617 | Funded |
The charge failed at 01:00 and delivery stopped at 01:00; paying did not bring it back: ~1h20m to any delivery, ~2h20m to full.
That also explains the two features nothing else does: it hit all five arms at the same minute, and it was a hard zero. Meta pacing and budget exhaustion both taper (meta_ads_manager_driving.md records a monotonic $38 → $33 → $27 → … → $0 for a real cap). The activity history for Aug 3 → Aug 6, with the rendered range asserted, records no budget change and no ad-set status change across the window, which is consistent: a billing stop is account-level and writes nothing to a campaign log.
The account is on prepaid now, a different failure mode: it stops when the balance runs out, with no decline. $239.87 against $850/day committed.
Hours both days delivered in, on the UTC clock: 00, 01, 02, 03, 04, 05, 06, 07, 08, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23. 2026-08-04 additionally delivered in 09, 10, 11, 12. Only the shared hours are compared.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-08-05 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 6 of 20 | 14 of 20 | p = 0.115 |
| CTR | 10 of 20 | 10 of 20 | p = 1.000 |
| click→install | 8 of 20 | 12 of 20 | p = 0.503 |
| CPI | 11 of 20 | 9 of 20 | p = 0.824 |
A sign test throws magnitude away and buys weight-free direction with it.
Every shared hour, 2026-08-04 → 2026-08-05. All columns are Meta's instrument on both sides of each ratio. Revenue is deliberately absent: per-hour payer counts run 0-3, so an hourly revenue column would be one person's basket read as a rate.
| hr | impressions | CPM | CTR | click→install | CPI |
|---|---|---|---|---|---|
| 00 | 844 → 1,792 | 15.69 → 12.42 | 9.48% → 9.26% | 21.2% → 28.3% | 0.779 → 0.474 |
| 01 | 1,066 → 1,954 | 11.44 → 10.44 | 7.50% → 9.62% | 23.8% → 21.8% | 0.642 → 0.497 |
| 02 | 1,111 → 2,340 | 11.96 → 9.35 | 6.48% → 9.74% | 18.1% → 25.9% | 1.022 → 0.371 |
| 03 | 1,224 → 2,598 | 11.73 → 9.62 | 9.31% → 8.20% | 33.3% → 29.6% | 0.378 → 0.397 |
| 04 | 1,281 → 2,608 | 13.19 → 10.75 | 8.98% → 8.59% | 22.6% → 26.3% | 0.650 → 0.475 |
| 05 | 1,372 → 2,886 | 12.76 → 10.86 | 7.43% → 9.15% | 40.2% → 18.6% | 0.427 → 0.640 |
| 06 | 1,276 → 2,462 | 13.65 → 13.08 | 7.60% → 9.06% | 29.9% → 24.2% | 0.601 → 0.596 |
| 07 | 671 → 3,182 | 15.78 → 14.48 | 10.43% → 8.67% | 25.7% → 20.3% | 0.588 → 0.822 |
| 08 | 1,316 → 57 | 14.94 → 13.68 | 8.13% → 8.77% | 29.0% → 160.0% | 0.634 → 0.098 |
| 13 | 1,187 → 332 | 14.80 → 18.98 | 9.86% → 11.75% | 26.5% → 20.5% | 0.567 → 0.787 |
| 14 | 1,114 → 3,103 | 12.15 → 14.01 | 9.25% → 10.31% | 24.3% → 19.4% | 0.541 → 0.701 |
| 15 | 2,034 → 4,270 | 10.49 → 11.53 | 10.67% → 10.21% | 16.6% → 19.7% | 0.593 → 0.572 |
| 16 | 2,652 → 3,519 | 9.11 → 10.73 | 8.60% → 9.21% | 17.5% → 18.8% | 0.604 → 0.619 |
| 17 | 2,512 → 3,966 | 11.44 → 11.03 | 8.92% → 8.35% | 18.8% → 25.7% | 0.684 → 0.515 |
| 18 | 2,211 → 4,207 | 11.82 → 11.25 | 8.68% → 8.89% | 24.0% → 21.1% | 0.568 → 0.599 |
| 19 | 1,877 → 3,547 | 10.99 → 11.14 | 8.74% → 8.91% | 29.3% → 25.6% | 0.430 → 0.488 |
| 20 | 1,672 → 3,111 | 11.44 → 10.80 | 12.08% → 9.35% | 27.2% → 23.4% | 0.348 → 0.494 |
| 21 | 1,608 → 2,893 | 12.90 → 12.87 | 12.44% → 9.47% | 27.5% → 21.2% | 0.377 → 0.642 |
| 22 | 1,638 → 2,477 | 16.07 → 11.07 | 11.48% → 8.76% | 23.4% → 21.7% | 0.598 → 0.583 |
| 23 | 1,623 → 2,214 | 12.61 → 14.28 | 10.23% → 9.21% | 22.3% → 22.5% | 0.553 → 0.687 |
Nothing separated. CPM comes closest, lower in 14 of 20 hours at p = 0.115; a 40% bigger day moved no delivery ratio.
(i) The portfolio by country, 2026-08-05. On the report clock. Meta serves no hour x country grid, so each country cut is raked from its own Meta day onto UTC; our own columns were already there.
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $137.30 | 21.7% | 19,972 | $6.87 | 319 | $0.430 | $128.56 | 0.94 | 37 |
| DE | $71.30 | 11.3% | 1,441 | $49.47 | 35 | $2.037 | $21.85 | 0.31 | 2 |
| US | $54.50 | 8.6% | 1,258 | $43.33 | 50 | $1.090 | $288.78 | 5.30 | 15 |
| MX | $22.10 | 3.5% | 2,454 | $9.00 | 56 | $0.395 | $32.41 | 1.47 | 3 |
| ID | $21.22 | 3.4% | 3,014 | $7.04 | 73 | $0.291 | $43.68 | 2.06 | 2 |
| TR | $20.05 | 3.2% | 1,181 | $16.97 | 41 | $0.489 | $0.00 | 0.00 | 1 |
| GB | $19.08 | 3.0% | 534 | $35.72 | 20 | $0.954 | $0.00 | 0.00 | 1 |
| AR | $15.18 | 2.4% | 1,248 | $12.16 | 50 | $0.304 | $66.93 | 4.41 | 4 |
| MY | $13.07 | 2.1% | 1,546 | $8.46 | 27 | $0.484 | $5.38 | 0.41 | 3 |
| PH | $13.03 | 2.1% | 3,110 | $4.19 | 53 | $0.246 | $31.51 | 2.42 | 5 |
| FR | $10.05 | 1.6% | 299 | $33.62 | 11 | $0.913 | $0.00 | 0.00 | 0 |
| CA | $9.67 | 1.5% | 253 | $38.19 | 11 | $0.879 | $20.88 | 2.16 | 3 |
175 further countries are not listed, $225.17 between them (35.6% of this block).
Reconciliation, what is measured and what is fitted. Every per-country cell is an allocation across hours; every total is measured. B1 (UTC-7) $181.12 from Meta 2026-08-04 and $450.58 from Meta 2026-08-05, a measured UTC-day total of $631.70.
Absent from the table above, by name: Nomad Node, KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.
(ii) The same cut per account, 2026-08-05.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $137.30 | 21.7% | 19,972 | $6.87 | 319 | $0.430 | $128.56 | 0.94 | 37 |
| DE | $71.30 | 11.3% | 1,441 | $49.47 | 35 | $2.037 | $21.85 | 0.31 | 2 |
| US | $54.50 | 8.6% | 1,258 | $43.33 | 50 | $1.090 | $288.78 | 5.30 | 15 |
| MX | $22.10 | 3.5% | 2,454 | $9.00 | 56 | $0.395 | $32.41 | 1.47 | 3 |
| ID | $21.22 | 3.4% | 3,014 | $7.04 | 73 | $0.291 | $43.68 | 2.06 | 2 |
| TR | $20.05 | 3.2% | 1,181 | $16.97 | 41 | $0.489 | $0.00 | 0.00 | 1 |
| GB | $19.08 | 3.0% | 534 | $35.72 | 20 | $0.954 | $0.00 | 0.00 | 1 |
| AR | $15.18 | 2.4% | 1,248 | $12.16 | 50 | $0.304 | $66.93 | 4.41 | 4 |
| MY | $13.07 | 2.1% | 1,546 | $8.46 | 27 | $0.484 | $5.38 | 0.41 | 3 |
| PH | $13.03 | 2.1% | 3,110 | $4.19 | 53 | $0.246 | $31.51 | 2.42 | 5 |
| FR | $10.05 | 1.6% | 299 | $33.62 | 11 | $0.913 | $0.00 | 0.00 | 0 |
| CA | $9.67 | 1.5% | 253 | $38.19 | 11 | $0.879 | $20.88 | 2.16 | 3 |
175 further countries are not listed, $225.17 between them (35.6% of this block).
Nomad Node — no country block: it delivered nothing on this day, a measured zero.
KBM1 — no country block: it delivered nothing on this day, a measured zero.
HR1 — no country block: it delivered nothing on this day, a measured zero.
The prior day, 2026-08-04, the same two tables.
(i) The portfolio by country, 2026-08-04. On the report clock. Meta serves no hour x country grid, so each country cut is raked from its own Meta day onto UTC; our own columns were already there.
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $102.95 | 23.1% | 13,736 | $7.50 | 193 | $0.533 | $136.79 | 1.33 | 27 |
| US | $43.45 | 9.7% | 903 | $48.13 | 36 | $1.207 | $136.89 | 3.15 | 9 |
| DE | $33.50 | 7.5% | 604 | $55.44 | 17 | $1.970 | $25.41 | 0.76 | 1 |
| MX | $14.94 | 3.3% | 1,410 | $10.59 | 25 | $0.597 | $40.77 | 2.73 | 5 |
| GB | $14.93 | 3.3% | 389 | $38.40 | 19 | $0.786 | $0.00 | 0.00 | 1 |
| TR | $12.27 | 2.8% | 652 | $18.82 | 22 | $0.558 | $0.00 | 0.00 | 0 |
| MY | $10.54 | 2.4% | 1,096 | $9.62 | 20 | $0.527 | $5.38 | 0.51 | 1 |
| ID | $10.47 | 2.3% | 1,608 | $6.51 | 39 | $0.268 | $0.00 | 0.00 | 0 |
| AR | $10.27 | 2.3% | 860 | $11.94 | 38 | $0.270 | $4.99 | 0.49 | 2 |
| PH | $9.52 | 2.1% | 2,130 | $4.47 | 35 | $0.272 | $0.00 | 0.00 | 1 |
| AU | $8.39 | 1.9% | 160 | $52.34 | 7 | $1.198 | $0.00 | 0.00 | 0 |
| FR | $7.84 | 1.8% | 300 | $26.10 | 18 | $0.436 | $0.00 | 0.00 | 0 |
189 further countries are not listed, $166.94 between them (37.4% of this block).
Reconciliation, what is measured and what is fitted. Every per-country cell is an allocation across hours; every total is measured. B1 (UTC-7) $104.91 from Meta 2026-08-03 and $341.09 from Meta 2026-08-04, a measured UTC-day total of $446.00.
Absent from the table above, by name: Nomad Node, KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.
(ii) The same cut per account, 2026-08-04.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $102.95 | 23.1% | 13,736 | $7.50 | 193 | $0.533 | $136.79 | 1.33 | 27 |
| US | $43.45 | 9.7% | 903 | $48.13 | 36 | $1.207 | $136.89 | 3.15 | 9 |
| DE | $33.50 | 7.5% | 604 | $55.44 | 17 | $1.970 | $25.41 | 0.76 | 1 |
| MX | $14.94 | 3.3% | 1,410 | $10.59 | 25 | $0.597 | $40.77 | 2.73 | 5 |
| GB | $14.93 | 3.3% | 389 | $38.40 | 19 | $0.786 | $0.00 | 0.00 | 1 |
| TR | $12.27 | 2.8% | 652 | $18.82 | 22 | $0.558 | $0.00 | 0.00 | 0 |
| MY | $10.54 | 2.4% | 1,096 | $9.62 | 20 | $0.527 | $5.38 | 0.51 | 1 |
| ID | $10.47 | 2.3% | 1,608 | $6.51 | 39 | $0.268 | $0.00 | 0.00 | 0 |
| AR | $10.27 | 2.3% | 860 | $11.94 | 38 | $0.270 | $4.99 | 0.49 | 2 |
| PH | $9.52 | 2.1% | 2,130 | $4.47 | 35 | $0.272 | $0.00 | 0.00 | 1 |
| AU | $8.39 | 1.9% | 160 | $52.34 | 7 | $1.198 | $0.00 | 0.00 | 0 |
| FR | $7.84 | 1.8% | 300 | $26.10 | 18 | $0.436 | $0.00 | 0.00 | 0 |
189 further countries are not listed, $166.94 between them (37.4% of this block).
Nomad Node — no country block: it delivered nothing on this day, a measured zero.
KBM1 — no country block: it delivered nothing on this day, a measured zero.
HR1 — no country block: it delivered nothing on this day, a measured zero.
Pooled over the 20 hours both days delivered in, on the UTC clock. Meta's instrument on both sides of every ratio.
| spend | impressions | CPM | clicks | CTR | installs | click→install | CPI | |
|---|---|---|---|---|---|---|---|---|
| 2026-08-04 | $373.92 | 30,289 | 12.35 | 2,838 | 9.37% | 691 | 24.35% | $0.541 |
| 2026-08-05 | $625.16 | 53,518 | 11.68 | 4,913 | 9.18% | 1,117 | 22.74% | $0.560 |
Pooling across hours is a mix comparison: hours are weighted by delivery, so these rows can move with no hour changing. §2's pairing is unweighted.
| measure | 2026-08-04 | ROAS | 2026-08-05 | ROAS |
|---|---|---|---|---|
| booked | $921.86 | 2.07 | $1,427.51 | 2.28 |
| within-day | $588.70 | 1.32 | $898.32 | 1.44 |
| cohort@24h | $817.43 | 1.83 (100% cov) | $923.62 | 1.48 (9% cov) |
| booked revenue on 08-05, by the UTC day its payer installed | ||
|---|---|---|
| installed 2026-08-05 — this is the within-day figure | $898.32 | 62.9% |
| installed 2026-08-04 | $244.67 | 17.1% |
| installed 2026-08-03 | $101.02 | 7.1% |
| installed 2026-08-02 | $50.78 | 3.6% |
| installed 2026-08-01 | $100.13 | 7.0% |
| installed 2026-07-31 | $32.59 | 2.3% |
37.1% of booked revenue came from people who installed before the day: the whole gap between booked 2.28 and within-day 1.44.
Rows sit at ad grain. spill runs two ads in one ad set, a replacement pair on the same creative that never both deliver on one day, so the delivering ad is the ad-set row on any single day. The German ad sets hold 10 and 15 ads and are not readable at this level; §7 covers them.
spill leads on CTR across the whole clock and bodysuit trails it: a level difference, the one delivery gap that outlasts the noise.
The blackout appears in every panel as one five-hour gap, in all arms simultaneously.
META-day cut, as §3. Regions: US · India · other T1 (developed markets) · rest.
| asset | region | spend | installs | CPI | within-day |
|---|---|---|---|---|---|
pool5 | US | $18.37 | 24 | $0.765 | $273.81 |
pool5 | India | $18.55 | 34 | $0.546 | $11.52 |
pool5 | other T1 | $30.25 | 42 | $0.720 | $34.69 |
pool5 | rest | $35.13 | 79 | $0.445 | $201.99 |
bodysuit | US | $16.27 | 9 | $1.808 | $4.99 |
bodysuit | India | $26.79 | 66 | $0.406 | $46.59 |
bodysuit | other T1 | $11.70 | 19 | $0.616 | $29.40 |
bodysuit | rest | $31.52 | 65 | $0.485 | $42.83 |
bikini | US | $2.70 | 1 | $2.700 | $0.00 |
bikini | India | $27.86 | 59 | $0.472 | $38.11 |
bikini | other T1 | $2.12 | 0 | — | $0.00 |
bikini | rest | $10.23 | 24 | $0.426 | $0.00 |
spill | US | $2.36 | 1 | $2.360 | $0.00 |
spill | India | $11.42 | 20 | $0.571 | $17.27 |
spill | other T1 | $5.45 | 7 | $0.779 | $9.99 |
spill | rest | $14.10 | 36 | $0.392 | $24.88 |
lounge | US | $4.30 | 1 | $4.300 | $4.99 |
lounge | India | $16.83 | 17 | $0.990 | $11.52 |
lounge | other T1 | $10.14 | 8 | $1.267 | $0.00 |
lounge | rest | $23.25 | 34 | $0.684 | $27.29 |
The arms did not buy the same world. pool5 bought 14.3% US and drew $273.81, bikini 4.1% and nothing: 30.5% of the day's within-day revenue.
bikini bought 48% India on the hour-matched window, the highest in the pack. Its low CPM is that purchase showing through.
Meta's instrument on both sides of every ratio. Our registrations never enter this table.
| asset | spend | impressions | CPM | clicks | CTR | installs | click→install | CPI |
|---|---|---|---|---|---|---|---|---|
E2/pool5 | $149.06 | 16,333 | 9.13 | 1,595 | 9.77% | 322 | 20.19% | $0.463 |
E2/bodysuit | $146.29 | 16,229 | 9.01 | 1,084 | 6.68% | 300 | 27.68% | $0.488 |
E2/bikini | $83.65 | 9,681 | 8.64 | 853 | 8.81% | 191 | 22.39% | $0.438 |
E2/spill2 | $76.60 | 5,696 | 13.45 | 877 | 15.40% | 197 | 22.46% | $0.389 |
E2/lounge | $74.69 | 3,751 | 19.91 | 380 | 10.13% | 84 | 22.11% | $0.889 |
DE/turkish_mature | $56.00 | 1,028 | 54.47 | 70 | 6.81% | 13 | 18.57% | $4.308 |
DE/german | $12.23 | 231 | 52.94 | 15 | 6.49% | 5 | 33.33% | $2.446 |
DE/german_mature | $11.77 | 234 | 50.30 | 18 | 7.69% | 2 | 11.11% | $5.885 |
DEww/bodysuit | $7.57 | 190 | 39.84 | 9 | 4.74% | 1 | 11.11% | $7.570 |
DE/german_6s | $5.18 | 108 | 47.96 | 7 | 6.48% | 3 | 42.86% | $1.727 |
DEww/spill2 | $1.40 | 17 | 82.35 | 4 | 23.53% | 2 | 50.00% | $0.700 |
DE/turkish_6s | $0.39 | 8 | 48.75 | 0 | 0.00% | 0 | — | — |
DEww/bikini | $0.22 | 14 | 15.71 | 1 | 7.14% | 0 | 0.00% | — |
DEww/pool5 | $0.12 | 2 | 60.00 | 0 | 0.00% | 0 | — | — |
earner/bodysuit | $0.00 | 0 | — | 0 | — | 5 | — | $0.000 |
earner/bikini | $0.00 | 0 | — | 0 | — | 2 | — | $0.000 |
earner/pool5 | $0.00 | 0 | — | 0 | — | 0 | — | — |
E2/spill | $0.00 | 0 | — | 0 | — | 0 | — | — |
Ours on every column. Meta can express only booked, so it rides bracketed beside that column and never as a row. Payers are distinct people, never transactions. Cohort horizon H=24h, 9% covered on this day. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/pool5 | $695.98 | 4.67 (4.59) | $545.46 | 3.66 | $562.01 | 3.77 | 24 | 7.0% | 1.586 | 22.73 | 38.7% |
E2/bodysuit | $176.55 | 1.21 (1.30) | $152.20 | 1.04 | $152.20 | 1.04 | 19 | 6.2% | 0.496 | 8.01 | 19.3% |
E2/bikini | $117.58 | 1.41 (2.15) | $47.45 | 0.57 | $53.21 | 0.64 | 8 | 3.8% | 0.228 | 5.93 | 19.6% |
E2/spill2 | $102.92 | 1.34 (2.23) | $81.98 | 1.07 | $84.98 | 1.11 | 12 | 6.3% | 0.429 | 6.83 | 13.4% |
E2/lounge | $49.39 | 0.66 (0.98) | $49.39 | 0.66 | $49.39 | 0.66 | 6 | 6.7% | 0.555 | 8.23 | 43.7% |
DE/turkish_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german | $21.85 | 1.79 (1.79) | $21.85 | 1.79 | $21.85 | 1.79 | 1 | 20.0% | 4.370 | 21.85 | 100.0% |
DE/german_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DEww/bodysuit | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DEww/spill2 | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/turkish_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DEww/bikini | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DEww/pool5 | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
earner/bodysuit | $168.10 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/bikini | $39.56 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/pool5 | $30.61 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
E2/spill | $24.97 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
⚠ This table is cut on the META day, while every other table on this page is on the UTC clock. Meta serves no hour × country grid, so per-country delivery exists only on the ad account's own UTC-7 day and cannot be restitched. It is a seven-hour-offset window against tables A and B above; read it for mix, never for level against them.
The last column is the share of that asset's own within-day revenue that came from the United States: where it far exceeds the US spend share, the return is a property of the geography the asset bought.
| asset | spend | India % | US % | other % | US % of its revenue |
|---|---|---|---|---|---|
E2/pool5 | $128.07 | 14.5% | 14.3% | 71.2% | 50.2% |
E2/bodysuit | $108.17 | 24.8% | 15.0% | 60.2% | 3.3% |
E2/bikini | $66.23 | 42.1% | 4.1% | 53.9% | 0.0% |
E2/spill2 | $53.08 | 21.5% | 4.4% | 74.0% | 0.0% |
E2/lounge | $78.92 | 21.3% | 5.5% | 73.2% | 10.1% |
DE/turkish_mature | $35.97 | 0.0% | 0.0% | 100.0% | — |
DE/german | $2.02 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/german_mature | $10.77 | 0.0% | 0.0% | 100.0% | — |
DEww/bodysuit | $8.84 | 0.0% | 0.0% | 100.0% | — |
DE/german_6s | $3.42 | 0.0% | 0.0% | 100.0% | — |
DEww/spill2 | $1.96 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_6s | $0.39 | 0.0% | 0.0% | 100.0% | — |
DEww/bikini | $0.28 | 0.0% | 0.0% | 100.0% | — |
DEww/pool5 | $0.22 | 0.0% | 0.0% | 100.0% | — |
mix-neutral is that ad's ROAS recomputed on the regime's own pooled country mix, keeping its own cost and revenue efficiencies. All four arms below delivered inside regime E2-R3 at $100/day.
| ad | installs | spend | CPM | CTR | India% | CPI | RPI | ROAS | mix-neutral |
|---|---|---|---|---|---|---|---|---|---|
bikini | 62 | $27.4 | 11.32 | 11.08% | 31% | $0.442 | 0.320 | 0.73 | 0.80 |
bodysuit | 76 | $35.9 | 11.71 | 9.17% | 9% | $0.472 | 1.344 | 2.85 | 2.28 |
pool5 | 72 | $25.4 | 9.04 | 9.80% | 6% | $0.352 | 4.565 | 12.96 | 9.81 |
spill | 65 | $26.3 | 15.47 | 15.54% | 18% | $0.404 | 0.186 | 0.46 | 0.94 |
⚠ DECISION_LOG.md #48 records that a single-table mix-neutral figure "reads −14% or −22% depending on which population the table is built from; neither is real." Read the column as a direction only.
pool5's advantage is ARPPU. Payer rate 7.0% against bodysuit's 6.2%, but $22.73 against $8.01; $24.84, $23.27, $23.42 across three days on 42 pooled payers.
spill is the delivery leader and the weakest audience buy. CTR 15.40% against a pack at 6.7–10.1%, CPI $0.389, lowest revenue per install (0.648, hour-matched).
bodysuit is the volume arm with a falling CTR: 7.53% → 7.63% → 6.68% across three days, last in the pack hour-matched at 6.40%.
lounge is the most expensive arm and buys an ordinary install: CPI $0.889 against a pack at $0.39–0.49, CPM 19.91, one payer at 43.7%.
The German buy is not readable. $17.11 in six hours against $100/day, and bodysuit took 78% of the new ad set ($8.78 of $11.24).
The cohort figure below was published at 9% coverage and has since completed. At the full 24-hour horizon 2026-08-05's cohort is $1,258.59, the figure the 2026-08-06 report carries in its prior-day column; what this page shows is a lower-coverage read of the same cohort, not a different number. Against 08-04's completed $817.43 the day reads +54.0% — the comparison this page declined. Within-day and booked are unaffected; they were sealed and settled when this page shipped.
pool5 went $100 → $150/day and lounge was created at $100/day, both at ~PT 23:50 on Aug 4, about seven hours into the UTC day; the account's daily budget went $450 → $600 at that point. No per-asset comparison here crosses that break cleanly.turkish_mature had taken $56.00 for 13 installs at $4.31 and returned nothing; turkish_mature, turkish_6s and german_6s all stopped by PT hour 11 and took nothing afterwards.bodysuit falls at matched age anyway (ARPPU 16.82 → 8.01), so that decline is real.meta_ads_manager_driving.md.tz=META for the 0.91–1.06 gate.| question | what would settle it |
|---|---|
| Which creative is worth producing more of | The five-cell A/B test — it randomises away the audience confound every observational read above is subject to |
Whether spill's CTR edge converts | The same test: cost per lead resolves 20% inside day 1 |
Whether pool5 is a creative or a geography | A US-held comparison, or the test's own non-overlapping split |
| Whether the US/India mix should be bought deliberately | A targeting decision no creative test addresses — carried unresolved for four sessions |
| Why MasterCard ····9617 declined three times on 08-05 | The issuer, not Meta. Meta records the decline, never the reason |
| Whether the balance survives the five-cell test | Current balance $239.87 against $850/day committed — under seven hours of runway. Top up before it stops the test |
| Whether the worldwide pack buys German impressions cheaper | Gen 7 after a full day, on CPM and cost per click only |
The test was scheduled to start 2026-08-06 00:00 PT and run five days across all five arms (bikini, bodysuit, pool5, spill, lounge) with cost per lead as the key metric.
The arms opened unequal and were equalised four hours in. bodysuit and pool5 started at $150/day and the other three at $100/day; at 04:05–04:06 PT on 08-06, bikini, spill and lounge were raised to $150, putting all five at $150/day and the test at $750/day. The first four hours ran at a 1.5:1 budget ratio and the remainder will not. Cost per install is what the test resolves first and it is exactly what this affects, so the day-1 read should be taken on the post-equalisation window.
The prior this report hands over: spill leads on CTR by a margin nothing else here approaches; pool5 leads on money but half of that is an American position; bodysuit is fading on CTR; bikini buys the cheapest audience; lounge is the most expensive. None of it is a verdict, and the test exists because none of it can be.
Window: UTC 2026-08-05 00:00–24:00, stitched from Meta days 08-04 (17:00–23:59) and 08-05 (00:00–16:59). Meta exports pulled 2026-08-05 19:23–19:26 PT: ads hourly for Meta day 08-05 (155 rows, hours 00–19), ads × day and ads × country × day for Jul 1 → Aug 5. Lum Telegram export taken on the laptop the same evening: 12,967 registrations, 1,306 payments, 7 unmatched. Payment data cut 2026-08-06 02:27 UTC. Activity history read for Aug 3 → Aug 6 with the rendered range asserted.
python -m ad_ops.measures --config <run>/run_config.json --day 2026-08-05 --prev 2026-08-04
python -m ad_ops.day_compare --config … --today 2026-08-05 --prev 2026-08-04 --h 6
python -m ad_ops.cohort_arpu --config … --days 2026-08-01,…,2026-08-05
python -m ad_ops.report_tables --config … --day 2026-08-05 --prev 2026-08-04
python -m ad_ops.report_charts --config … --day 2026-08-05 --prev 2026-08-04 \
--days 2026-08-02,…,2026-08-05 --out ad_ops/figures/2026-08-05 --relpath figures/2026-08-05
python -m ad_ops.asset_estimator hourly --meta <08-03,08-04,08-05 hourly> --lum <run>/lum --fx … \
--ads ww_bikini_10s,ww_bodysuit_10s,ww_pool5,ww_mugshot,ww_spill,ww_lounge \
--campaign bailingxia_meituan_ww_cvr_260802 --horizon 24
Working files: ../_runs/2026-08-05_0805_asset_candidates/.
The report clock is UTC. Adjust reports in UTC, so a UTC-bucketed report lines up with the attribution dashboard with no conversion in the head. Meta's ad account is fixed at UTC-7, so a UTC day is Meta day D-1 17:00–23:59 plus Meta day D 00:00–16:59. The window moves seven hours, and a UTC pull therefore needs the previous Meta day's hourly file as well as the day's own.
Three things the clock does not reach, each labelled where it appears. Country tables stay a META-day cut, because Meta serves no hour × country grid. The instrument check is invalid off the META clock, because Meta's conversion value sits on the conversion hour. The estimator and day_compare run on Meta's clock deliberately, since their subject is Meta-side delivery windows.
The three revenue measures, all read on our own payment records:
| measure | counts | moves after the day closes? |
|---|---|---|
| booked | revenue that arrived inside the day, whatever day its payer installed | settles ~4 h after midnight, then fixed. Meta's own number is this basis |
| within-day | installed that day and paid before that day closed | never. Sealed at midnight |
| cohort at H | that day's installs, counted within H hours of each person's own install. House horizon H=24 | rises until every install has lived H hours, then frozen. Always state coverage |
Meta can express only booked, having no notion of an install-day cohort, so it rides bracketed beside that column and never as a row of its own. Within-day revenue is the "installed that day" row of the booked split in §4; the gap between booked and within-day is exactly the inherited cohort.
A regime is a stretch over which the ad set's daily budget did not change. It belongs in a daily report because the budget is a geography dial on this account: raising it buys wider, cheaper countries, so two creatives measured across a budget change are compared on different audiences (DECISION_LOG.md #47). This day contains one break, at ~PT 23:50 on Aug 4.
Two install counts exist. Meta's Leads and our own registrations disagree by 5–10%. Meta's is used for the delivery funnel (CPI and click→install) so numerator and denominator share one instrument. Ours is used for payer rate and every revenue measure, so payers and the installs they came from are the same population. They are never crossed.
The 16-payer bar (#37). Below roughly 16 payers a revenue figure carries a direction only.
The composite chart is parallel coordinates, and its axes never collapse into a single number. Cost axes are inverted so up is always better, revenue axes dashed and marked *, assets under 20 installs dropped, and money markers hollow where the point sits under 16 payers.