Two Meta ad accounts bought this app on this day and both are ours: the portfolio spent $506.46 for 982 new users, 82% of it from B1 and 18% from the two shared accounts. B1 alone bought $413.96 and got 451 installs at $0.918, against $469.10 and 538 at $0.872 the day before; its booked revenue was $1,147.14, down 11.4%, and within-day fell 26.2% to $242.81 on a spend cut of 11.8%. Our records read 1.05 of Meta's booked value on B1's own clock, inside the documented 0.91 to 1.06 band, and one campaign carried its whole day; definitions, the report clock and the three revenue measures are in the appendix.
| 2026-08-13 | 2026-08-14 | change | |
|---|---|---|---|
| spend | $469.10 | $413.96 | −11.8% |
| impressions | 51,303 | 52,682 | +2.7% |
| CPM | $9.14 | $7.86 | −14.1% |
| clicks | 3,360 | 3,430 | +2.1% |
| CTR | 6.55% | 6.51% | −0.6% |
| installs (Meta) | 538 | 451 | −16.2% |
| click→install | 16.01% | 13.15% | −17.9% |
| CPI | $0.872 | $0.918 | +5.3% |
| registrations (ours) | 681 | 587 | −13.8% |
| booked | $1,294.09 (2.76) | $1,147.14 (2.77) | −11.4% |
| within-day | $328.81 (0.70) | $242.81 (0.59) | −26.2% |
| cohort @ 24h | $375.97 (0.80) at 100% | $311.66 (0.75) at 100% | −17.1% |
| within-day payers | 37 | 28 | −9 |
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.4975 | $0.8018 | $1.3550 | $10.55 | $14.06 | $22.89 | 912 |
Account spend split. B1 82% and the shared accounts 18% on 08-14, against 89% and 11% on 08-13; the portfolio spent $506.46 against $527.31.
B1's campaign spend split: Worldwide 100% on both days. The German buy and the retired earner spent nothing, so no section carries a mix change.
Impressions got 14.1% cheaper and fewer of the clicks they bought became installs. The two did not cancel: the install cost 5.3% more.
The click rate did not move, 6.55% to 6.51%. Whatever changed sits below the click, where section 3's hourly read puts it too.
Within-day fell 26.2%, roughly twice the spend cut, on 28 payers against 37. Both cohorts are fully matured, so no horizon caveat applies.
B1's own account day moved the other way: the UTC day inherited a weak evening from Meta 08-13 and handed a strong one to 08-15.
B1 buys under bailingxia_; the two shared Nomad Node accounts buy this app under 0811_ and 0814_*, their greenvid and pixvoo campaigns excluded.
Spend and impressions are Meta's, read off each account's own export. DNU is our own registration count for that account, so CPI in this table is spend ÷ DNU on our instrument for both accounts and is not the $0.918 of section 3, which has Meta on both sides of the ratio. The two install counts are never crossed.
| account | spend | share | impressions | CPM | DNU | CPI | payers | payer% |
|---|---|---|---|---|---|---|---|---|
| B1 (ours) | $413.98 | 82% | 52,685 | $7.86 | 628 | $0.659 | 98 | 15.6% |
| Nomad Node (shared) | $92.48 | 18% | 36,676 | $2.52 | 354 | $0.261 | 12 | 3.4% |
| Portfolio | $506.46 | 100% | 89,361 | $5.67 | 982 | $0.516 | 110 | 11.2% |
Payers here are everyone who paid inside the day whoever brought them, which is the booked basis, so they are not the within-day payer counts used elsewhere on this page. ARPU and ARPPU below sit on that same basis: booked ÷ DNU and booked ÷ payers.
| account | booked | bROAS | within-day | wROAS | cohort@24h | cROAS | ARPU | ARPPU |
|---|---|---|---|---|---|---|---|---|
| B1 (ours) | $1,187.97 | 2.87 | $246.37 | 0.60 | $315.22 | 0.76 | $1.892 | $12.12 |
| Nomad Node (shared) | $190.26 | 2.06 | $100.13 | 1.08 | $150.66 | 1.63 | $0.537 | $15.85 |
| Portfolio | $1,378.23 | 2.72 | $346.51 | 0.68 | $465.88 | 0.92 | $1.403 | $12.53 |
Four columns are missing from the shared accounts' export: clicks, Meta's leads, country and Ad ID. Everything below section 2 is therefore B1 alone.
Rank the two accounts on within-day or cohort@24h and never on booked. Booked puts B1 ahead, 2.87 against 2.06; the sealed measures reverse it.
The shared side sat at 12 payers, under the 16-payer bar, so its 1.08 and 1.63 are a direction and never a magnitude.
The shared buy wins on what a user costs and loses on what one is worth: $0.261 a registration against $0.659, ARPU $0.537 against $1.892.
This section and every one below it is B1's buy alone.
Delivery columns are Meta's instrument on both sides of every ratio. Payer rate, ARPU and ARPPU are ours on both sides. The two install counts are never crossed. ours is our registrations in that hour, counted over the ads mapped in the run config, which is why it totals 587 against the 628 in section 2; cov is that hour's cohort coverage at H=24.
| hr | spend | impr | CPM | clicks | CTR | inst | clk→i | CPI | ours | cov | booked | bROAS | within | wROAS | wPay | cohort | cROAS |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | $11.87 | 1,218 | 9.75 | 65 | 5.34% | 5 | 7.7% | $2.374 | 6 | 100% | $35.89 | 3.02 | $7.99 | 0.67 | 2 | $7.99 | 0.67 |
| 1 | $10.97 | 1,419 | 7.73 | 69 | 4.86% | 5 | 7.2% | $2.194 | 7 | 100% | $80.76 | 7.36 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 2 | $11.51 | 1,639 | 7.02 | 99 | 6.04% | 14 | 14.1% | $0.822 | 16 | 100% | $54.12 | 4.70 | $7.98 | 0.69 | 1 | $7.98 | 0.69 |
| 3 | $12.42 | 1,822 | 6.82 | 91 | 4.99% | 12 | 13.2% | $1.035 | 14 | 100% | $0.00 | 0.00 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 4 | $11.82 | 2,134 | 5.54 | 114 | 5.34% | 14 | 12.3% | $0.844 | 15 | 100% | $18.97 | 1.60 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 5 | $14.20 | 2,537 | 5.60 | 124 | 4.89% | 21 | 16.9% | $0.676 | 34 | 100% | $176.88 | 12.46 | $10.00 | 0.70 | 2 | $10.00 | 0.70 |
| 6 | $15.85 | 2,119 | 7.48 | 115 | 5.43% | 11 | 9.6% | $1.441 | 23 | 100% | $20.69 | 1.31 | $5.63 | 0.36 | 1 | $5.63 | 0.36 |
| 7 | $15.82 | 1,974 | 8.01 | 124 | 6.28% | 10 | 8.1% | $1.582 | 18 | 100% | $24.79 | 1.57 | $5.74 | 0.36 | 1 | $5.74 | 0.36 |
| 8 | $15.63 | 2,013 | 7.76 | 133 | 6.61% | 21 | 15.8% | $0.744 | 26 | 100% | $49.58 | 3.17 | $44.48 | 2.85 | 2 | $44.48 | 2.85 |
| 9 | $16.34 | 2,093 | 7.81 | 132 | 6.31% | 17 | 12.9% | $0.961 | 19 | 100% | $101.74 | 6.23 | $11.52 | 0.70 | 2 | $11.52 | 0.70 |
| 10 | $15.51 | 2,152 | 7.21 | 134 | 6.23% | 18 | 13.4% | $0.862 | 26 | 100% | $3.29 | 0.21 | $22.96 | 1.48 | 1 | $39.71 | 2.56 |
| 11 | $14.48 | 2,181 | 6.64 | 142 | 6.51% | 17 | 12.0% | $0.852 | 18 | 100% | $48.91 | 3.38 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 12 | $15.39 | 2,174 | 7.08 | 152 | 6.99% | 16 | 10.5% | $0.962 | 23 | 100% | $17.96 | 1.17 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 13 | $19.27 | 2,556 | 7.54 | 189 | 7.39% | 21 | 11.1% | $0.918 | 33 | 100% | $92.20 | 4.78 | $9.31 | 0.48 | 2 | $9.31 | 0.48 |
| 14 | $16.20 | 1,453 | 11.15 | 137 | 9.43% | 27 | 19.7% | $0.600 | 33 | 100% | $88.00 | 5.43 | $21.39 | 1.32 | 1 | $21.39 | 1.32 |
| 15 | $19.23 | 2,509 | 7.66 | 205 | 8.17% | 23 | 11.2% | $0.836 | 27 | 100% | $87.93 | 4.57 | $10.97 | 0.57 | 2 | $10.97 | 0.57 |
| 16 | $20.58 | 3,253 | 6.33 | 207 | 6.36% | 33 | 15.9% | $0.624 | 34 | 100% | $34.24 | 1.66 | $6.32 | 0.31 | 1 | $15.70 | 0.76 |
| 17 | $21.21 | 2,803 | 7.57 | 183 | 6.53% | 21 | 11.5% | $1.010 | 28 | 100% | $19.67 | 0.93 | $11.52 | 0.54 | 2 | $17.56 | 0.83 |
| 18 | $21.30 | 2,593 | 8.21 | 181 | 6.98% | 20 | 11.0% | $1.065 | 31 | 100% | $10.75 | 0.50 | $0.00 | 0.00 | 0 | $5.76 | 0.27 |
| 19 | $32.21 | 2,653 | 12.14 | 172 | 6.48% | 25 | 14.5% | $1.288 | 33 | 100% | $10.57 | 0.33 | $11.52 | 0.36 | 2 | $11.52 | 0.36 |
| 20 | $19.59 | 2,167 | 9.04 | 169 | 7.80% | 23 | 13.6% | $0.852 | 28 | 100% | $48.92 | 2.50 | $27.29 | 1.39 | 2 | $33.22 | 1.70 |
| 21 | $20.18 | 2,137 | 9.44 | 131 | 6.13% | 22 | 16.8% | $0.917 | 24 | 100% | $65.80 | 3.26 | $17.45 | 0.86 | 2 | $42.44 | 2.10 |
| 22 | $20.79 | 2,359 | 8.81 | 168 | 7.12% | 22 | 13.1% | $0.945 | 35 | 100% | $22.42 | 1.08 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 23 | $21.59 | 2,724 | 7.93 | 194 | 7.12% | 33 | 17.0% | $0.654 | 36 | 100% | $33.06 | 1.53 | $10.76 | 0.50 | 2 | $10.76 | 0.50 |
| all | $413.96 | 52,682 | 7.86 | 3,430 | 6.51% | 451 | 13.1% | $0.918 | 587 | 100% | $1,147.14 | 2.77 | $242.81 | 0.59 | 28 | $311.66 | 0.75 |
⚠ Payer counts per hour run 0 to 9. An hourly ARPPU on one payer is that payer's basket and not a rate. Read the all row for level and the hours for shape.
The cohort column is complete across the whole clock. Every hour reads 100% coverage at H=24, and nothing in it can move again.
The day's first two hours are the worst the account has recorded: 00 and 01 are Meta 08-13 at 17:00 and 18:00, the previous evening.
Spend climbs across the second half while the install cost does not follow it. Hour 19 carries the day's peak spend and its dearest CPM.
Hours both days delivered in, on the UTC clock: all 24. 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-14 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 7 of 24 | 17 of 24 | p = 0.064 |
| CTR | 8 of 24 | 16 of 24 | p = 0.152 |
| click→install | 3 of 24 | 21 of 24 | p = 0.000 |
| CPI | 13 of 24 | 11 of 24 | p = 0.839 |
Only click→install survives the unweighted read, lower in 21 of 24 hours. CPM's 14.1% fall is partly mix; CPI's 5.3% rise is weighting alone.
The pooled 0.6% CTR fall and the unweighted 16 of 24 are the same non-finding read twice.
Every shared hour, 2026-08-13 → 2026-08-14. All columns are Meta's instrument on both sides of each ratio. Revenue is deliberately absent: per-hour payer counts run 0 to 3, so an hourly revenue column would be one person's basket read as a rate.
| hr | impressions | CPM | CTR | click→install | CPI |
|---|---|---|---|---|---|
| 00 | 2,059 → 1,218 | 7.67 → 9.75 | 7.24% → 5.34% | 20.1% → 7.7% | 0.527 → 2.374 |
| 01 | 2,060 → 1,419 | 7.43 → 7.73 | 6.12% → 4.86% | 14.3% → 7.2% | 0.850 → 2.194 |
| 02 | 2,336 → 1,639 | 8.06 → 7.02 | 5.27% → 6.04% | 15.4% → 14.1% | 0.991 → 0.822 |
| 03 | 2,545 → 1,822 | 9.19 → 6.82 | 5.27% → 4.99% | 14.2% → 13.2% | 1.232 → 1.035 |
| 04 | 2,522 → 2,134 | 6.96 → 5.54 | 6.07% → 5.34% | 13.1% → 12.3% | 0.878 → 0.844 |
| 05 | 2,601 → 2,537 | 7.08 → 5.60 | 5.61% → 4.89% | 17.1% → 16.9% | 0.737 → 0.676 |
| 06 | 2,386 → 2,119 | 7.17 → 7.48 | 5.78% → 5.43% | 13.0% → 9.6% | 0.951 → 1.441 |
| 07 | 2,369 → 1,974 | 9.12 → 8.01 | 6.80% → 6.28% | 11.2% → 8.1% | 1.200 → 1.582 |
| 08 | 2,502 → 2,013 | 7.73 → 7.76 | 6.71% → 6.61% | 16.7% → 15.8% | 0.690 → 0.744 |
| 09 | 2,182 → 2,093 | 9.53 → 7.81 | 5.41% → 6.31% | 21.2% → 12.9% | 0.832 → 0.961 |
| 10 | 1,941 → 2,152 | 10.31 → 7.21 | 6.75% → 6.23% | 19.8% → 13.4% | 0.770 → 0.862 |
| 11 | 2,287 → 2,181 | 8.89 → 6.64 | 6.34% → 6.51% | 15.2% → 12.0% | 0.924 → 0.852 |
| 12 | 2,437 → 2,174 | 12.56 → 7.08 | 6.52% → 6.99% | 17.6% → 10.5% | 1.093 → 0.962 |
| 13 | 2,055 → 2,556 | 10.23 → 7.54 | 7.83% → 7.39% | 16.1% → 11.1% | 0.809 → 0.918 |
| 14 | 1,356 → 1,453 | 13.37 → 11.15 | 9.44% → 9.43% | 17.2% → 19.7% | 0.824 → 0.600 |
| 15 | 1,868 → 2,509 | 11.13 → 7.66 | 7.55% → 8.17% | 17.7% → 11.2% | 0.832 → 0.836 |
| 16 | 2,213 → 3,253 | 10.55 → 6.33 | 6.60% → 6.36% | 19.2% → 15.9% | 0.834 → 0.624 |
| 17 | 2,693 → 2,803 | 9.84 → 7.57 | 7.13% → 6.53% | 13.0% → 11.5% | 1.060 → 1.010 |
| 18 | 2,046 → 2,593 | 10.48 → 8.21 | 7.82% → 6.98% | 22.5% → 11.0% | 0.596 → 1.065 |
| 19 | 1,408 → 2,653 | 12.57 → 12.14 | 7.67% → 6.48% | 19.4% → 14.5% | 0.843 → 1.288 |
| 20 | 1,963 → 2,167 | 6.77 → 9.04 | 6.98% → 7.80% | 11.7% → 13.6% | 0.830 → 0.852 |
| 21 | 1,963 → 2,137 | 10.41 → 9.44 | 6.83% → 6.13% | 9.7% → 16.8% | 1.572 → 0.917 |
| 22 | 1,878 → 2,359 | 8.39 → 8.81 | 6.71% → 7.12% | 13.5% → 13.1% | 0.927 → 0.945 |
| 23 | 1,633 → 2,724 | 7.13 → 7.93 | 4.65% → 7.12% | 17.1% → 17.0% | 0.895 → 0.654 |
(i) The portfolio by country, 2026-08-14. 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 | $93.97 | 22.7% | 11,032 | $8.52 | 211 | $0.445 | $94.54 | 1.01 | 20 |
| US | $61.38 | 14.8% | 1,957 | $31.36 | 38 | $1.615 | $74.89 | 1.22 | 23 |
| MX | $19.45 | 4.7% | 3,712 | $5.24 | 55 | $0.354 | $0.00 | 0.00 | 0 |
| ID | $17.17 | 4.1% | 3,815 | $4.50 | 98 | $0.175 | $9.98 | 0.58 | 6 |
| PH | $14.86 | 3.6% | 8,609 | $1.73 | 69 | $0.215 | $5.63 | 0.38 | 2 |
| GB | $11.99 | 2.9% | 853 | $14.06 | 19 | $0.631 | $6.04 | 0.50 | 3 |
| AR | $10.73 | 2.6% | 1,038 | $10.34 | 20 | $0.537 | $0.00 | 0.00 | 2 |
| TR | $10.55 | 2.5% | 596 | $17.70 | 27 | $0.391 | $30.71 | 2.91 | 3 |
| CA | $10.09 | 2.4% | 459 | $21.98 | 4 | $2.522 | $0.00 | 0.00 | 1 |
| MY | $9.24 | 2.2% | 2,129 | $4.34 | 29 | $0.319 | $5.38 | 0.58 | 2 |
| AU | $7.74 | 1.9% | 307 | $25.21 | 6 | $1.290 | $0.00 | 0.00 | 2 |
| FR | $6.19 | 1.5% | 489 | $12.67 | 10 | $0.619 | $0.00 | 0.00 | 1 |
176 further countries are not listed, $140.62 between them (34.0% 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) $88.64 from Meta 2026-08-13 and $325.34 from Meta 2026-08-14, a measured UTC-day total of $413.98.
Absent from the table above, by name: KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.
(ii) The same cut per account, 2026-08-14.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $93.97 | 22.7% | 11,032 | $8.52 | 158 | $0.595 | $43.87 | 0.47 | 17 |
| US | $61.38 | 14.8% | 1,957 | $31.36 | 34 | $1.805 | $64.91 | 1.06 | 21 |
| MX | $19.45 | 4.7% | 3,712 | $5.24 | 41 | $0.474 | $0.00 | 0.00 | 0 |
| ID | $17.17 | 4.1% | 3,815 | $4.50 | 46 | $0.373 | $0.00 | 0.00 | 4 |
| PH | $14.86 | 3.6% | 8,609 | $1.73 | 45 | $0.330 | $5.63 | 0.38 | 2 |
| GB | $11.99 | 2.9% | 853 | $14.06 | 16 | $0.749 | $6.04 | 0.50 | 3 |
| AR | $10.73 | 2.6% | 1,038 | $10.34 | 13 | $0.826 | $0.00 | 0.00 | 2 |
| TR | $10.55 | 2.5% | 596 | $17.70 | 16 | $0.659 | $30.71 | 2.91 | 3 |
| CA | $10.09 | 2.4% | 459 | $21.98 | 4 | $2.522 | $0.00 | 0.00 | 1 |
| MY | $9.24 | 2.2% | 2,129 | $4.34 | 18 | $0.513 | $0.00 | 0.00 | 1 |
| AU | $7.74 | 1.9% | 307 | $25.21 | 6 | $1.290 | $0.00 | 0.00 | 2 |
| FR | $6.19 | 1.5% | 489 | $12.67 | 8 | $0.774 | $0.00 | 0.00 | 1 |
173 further countries are not listed, $140.62 between them (34.0% of this block).
Nomad Node
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| AE | $0.00 | 0.0% | 0 | — | 3 | $0.000 | $0.00 | — | 0 |
| AR | $0.00 | 0.0% | 0 | — | 7 | $0.000 | $0.00 | — | 0 |
| BD | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| BR | $0.00 | 0.0% | 0 | — | 32 | $0.000 | $0.00 | — | 0 |
| CL | $0.00 | 0.0% | 0 | — | 10 | $0.000 | $0.00 | — | 0 |
| CO | $0.00 | 0.0% | 0 | — | 12 | $0.000 | $0.00 | — | 0 |
| CR | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 1 |
| DE | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| EC | $0.00 | 0.0% | 0 | — | 3 | $0.000 | $0.00 | — | 0 |
| EG | $0.00 | 0.0% | 0 | — | 9 | $0.000 | $0.00 | — | 0 |
| ES | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| FR | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
43 further countries are not listed, $0.00 between them (0.0% of this block).
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-13, the same two tables.
(i) The portfolio by country, 2026-08-13. 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 | $127.69 | 27.2% | 15,623 | $8.17 | 265 | $0.482 | $133.27 | 1.04 | 27 |
| US | $55.23 | 11.8% | 1,480 | $37.33 | 32 | $1.726 | $85.94 | 1.56 | 17 |
| ID | $20.38 | 4.3% | 3,077 | $6.62 | 74 | $0.275 | $14.97 | 0.73 | 6 |
| MX | $19.94 | 4.3% | 2,697 | $7.39 | 54 | $0.369 | $14.82 | 0.74 | 10 |
| PH | $17.46 | 3.7% | 7,441 | $2.35 | 68 | $0.257 | $5.63 | 0.32 | 2 |
| GB | $13.59 | 2.9% | 600 | $22.67 | 16 | $0.849 | $6.04 | 0.44 | 8 |
| MY | $12.03 | 2.6% | 1,880 | $6.39 | 25 | $0.481 | $3.18 | 0.26 | 4 |
| CA | $11.27 | 2.4% | 442 | $25.49 | 8 | $1.409 | $11.10 | 0.99 | 4 |
| TR | $11.18 | 2.4% | 612 | $18.29 | 23 | $0.486 | $5.89 | 0.53 | 2 |
| AR | $10.62 | 2.3% | 970 | $10.95 | 22 | $0.483 | $9.98 | 0.94 | 3 |
| AU | $8.39 | 1.8% | 402 | $20.85 | 5 | $1.678 | $0.00 | 0.00 | 3 |
| FR | $6.82 | 1.5% | 326 | $20.92 | 5 | $1.365 | $0.00 | 0.00 | 1 |
173 further countries are not listed, $154.50 between them (32.9% 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) $126.41 from Meta 2026-08-12 and $342.69 from Meta 2026-08-13, a measured UTC-day total of $469.10.
Absent from the table above, by name: KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.
(ii) The same cut per account, 2026-08-13.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $127.69 | 27.2% | 15,623 | $8.17 | 217 | $0.588 | $91.92 | 0.72 | 25 |
| US | $55.23 | 11.8% | 1,480 | $37.33 | 26 | $2.124 | $85.94 | 1.56 | 17 |
| ID | $20.38 | 4.3% | 3,077 | $6.62 | 41 | $0.497 | $9.98 | 0.49 | 5 |
| MX | $19.94 | 4.3% | 2,697 | $7.39 | 30 | $0.665 | $14.82 | 0.74 | 8 |
| PH | $17.46 | 3.7% | 7,441 | $2.35 | 57 | $0.306 | $5.63 | 0.32 | 2 |
| GB | $13.59 | 2.9% | 600 | $22.67 | 12 | $1.132 | $6.04 | 0.44 | 8 |
| MY | $12.03 | 2.6% | 1,880 | $6.39 | 20 | $0.601 | $3.18 | 0.26 | 4 |
| CA | $11.27 | 2.4% | 442 | $25.49 | 8 | $1.409 | $11.10 | 0.99 | 4 |
| TR | $11.18 | 2.4% | 612 | $18.29 | 17 | $0.658 | $5.89 | 0.53 | 2 |
| AR | $10.62 | 2.3% | 970 | $10.95 | 20 | $0.531 | $9.98 | 0.94 | 3 |
| AU | $8.39 | 1.8% | 402 | $20.85 | 3 | $2.796 | $0.00 | 0.00 | 3 |
| FR | $6.82 | 1.5% | 326 | $20.92 | 5 | $1.365 | $0.00 | 0.00 | 1 |
172 further countries are not listed, $154.50 between them (32.9% of this block).
Nomad Node
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| AE | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| AM | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $34.99 | — | 1 |
| AR | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| AU | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| BE | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| BG | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| BN | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| BO | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| BR | $0.00 | 0.0% | 0 | — | 24 | $0.000 | $0.00 | — | 0 |
| CL | $0.00 | 0.0% | 0 | — | 3 | $0.000 | $5.93 | — | 1 |
| CO | $0.00 | 0.0% | 0 | — | 7 | $0.000 | $0.00 | — | 0 |
| CR | $0.00 | 0.0% | 0 | — | 4 | $0.000 | $18.04 | — | 1 |
43 further countries are not listed, $0.00 between them (0.0% of this block).
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.
Both days are B1's buy. Pooled over the 24 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-13 | $469.10 | 51,303 | 9.14 | 3,360 | 6.55% | 538 | 16.01% | $0.872 |
| 2026-08-14 | $413.96 | 52,682 | 7.86 | 3,430 | 6.51% | 451 | 13.15% | $0.918 |
Pooling across hours is a mix comparison. Section 3's pairing is the unweighted read; where the two disagree, the mix moved.
| measure | 2026-08-13 | 2026-08-14 | moves after the day closes? |
|---|---|---|---|
| booked | $1,294.09 (2.76) | $1,147.14 (2.77) | settled |
| within-day | $328.81 (0.70) | $242.81 (0.59) | never |
| cohort @ 24h | $375.97 (0.80) at 100% | $311.66 (0.75) at 100% | frozen, both days |
Booked held its return while the two install-day measures fell: a shrinking buy inherits more of yesterday's payers, and booked counts them.
The mix-neutral account line: CPM $9.14 → $7.86, and $7.86 again on 08-13's mix. One campaign delivered on both days, so nothing needs neutralising.
| installed | 2026-08-13 | 2026-08-14 |
|---|---|---|
| the day itself | $328.81 (25.4%) | $242.81 (21.2%) |
| one day earlier | $207.00 (16.0%) | $74.36 (6.5%) |
| two days earlier | $170.61 (13.2%) | $132.09 (11.5%) |
| three days earlier | $229.17 (17.7%) | $142.60 (12.4%) |
| four days earlier | $15.72 (1.2%) | $154.52 (13.5%) |
| five days earlier | $50.14 (3.9%) | $10.68 (0.9%) |
The top row of this table is the within-day figure. They are the same number seen twice, which is why the gap between booked and within-day is exactly the inherited cohort and nothing else.
A fifth of the account's booked revenue came from people who arrived on 08-14, against a quarter before; the six rows cover 66.0% against 77.4%.
Every campaign in this section is B1's; the shared accounts' two campaigns are in section 2 and nowhere below it. Delivery is Meta's instrument on both sides of every ratio; every revenue measure is ours. Cohort horizon H=24h. Report clock UTC. Rank on CPM, cost per click and CPI only — geography is the treatment here, while revenue still needs 16 payers (DECISION_LOG.md #37, #48).
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Worldwide | $413.96 | 100.0% | 52,682 | 100.0% | 7.86 | 3,430 | 6.51% | $0.121 | 451 | $0.918 | $239.82 | 0.58 | 27 |
Booking with no delivery, and excluded from every rate above: German (DE/AT) 0 installs (Meta), 2 registrations (ours), $0.00 within-day; Earner (retired 08-03) 0 installs (Meta), 64 registrations (ours), $0.00 within-day. Counting them would put installs into the CPI denominator against spend that never happened.
The retired earner still produces 64 registrations a day on no spend, thirteen days after it was switched off, down from 71 and earning nothing.
The standing charts for this section plot spend share, CPM and CPI by campaign across the run. One campaign has delivered on every day in the window, so all three would be a single flat line and the chart generator emits none.
B1's only delivering campaign on the day, walked down to the ad.
One ad delivered, alone in its own ad set, for all 24 hours. The ad-set row is therefore the ad row on this day, and the tables below are labelled by asset. That identity is a property of this day's cut alone, and it has to be re-checked on any day two ads deliver together.
Eleven further ads sit in the account's mapped set and none of them delivered. Three carry registrations with no spend, which is the same conversion-hour effect the appendix describes, one level down.
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 | $413.96 | 52,682 | 7.86 | 3,430 | 6.51% | 446 | 13.00% | $0.928 |
E2/bodysuit · E2/spill2 | $0.00 | 0 | — | 0 | — | 2 each | — | $0.000 |
E2/lounge | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
E2/bikini · E2/mugshot · E2/spill · earner/bodysuit · earner/bikini · earner/pool5 · DE/turkish_mature · DE/german_6s | $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, 100% covered on this day. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers (d0) | payer% (d0) | ARPU (d0) | ARPPU (d0) | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/pool5 | $451.87 | 1.09 (1.77) | $233.84 | 0.56 | $302.69 | 0.73 | 29 | 6.0% | 0.631 | 10.44 | 15.0% |
E2/spill2 | $193.78 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
E2/bodysuit | $199.86 | — | $5.97 | — | $5.97 | — | 1 | 4.8% | 0.284 | 5.97 | 100.0% |
E2/lounge | $116.93 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/bodysuit | $118.04 | — | $2.99 | — | $2.99 | — | 1 | 2.3% | 0.070 | 2.99 | 100.0% |
E2/bikini | $52.08 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/bikini | $12.99 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/pool5 · E2/mugshot · E2/spill · DE/turkish_mature · DE/german_6s | $0.00 | — | $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. pool5 clears it with 25, against 37 the day before. Nothing else on this page does.
What each payer spent fell; their number barely moved. ARPPU is 9.35 against 12.60, the payer rate 6.6% to 6.0%.
⚠ This table is cut on the META day, a seven-hour-offset window against tables A and B. 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 | $468.59 | 21.7% | 15.3% | 63.0% | 25.2% |
pool5 bought less India and more United States than on any prior full day, 21.7% against 26.0%, and earned less.
Its American revenue share is 25.2% against 28.2%: whatever moved sits inside the countries, with India and the United States each giving back about half.
A regime is a stretch over which the ad set's daily budget did not change. It matters because the budget is a geography dial on this account: raising it buys wider and cheaper countries, so two creatives measured across a budget change are compared on different audiences (DECISION_LOG.md #47).
The campaign's activity history was re-read for 08-12 to 08-16 before this report was written, and the page rendered its range as Aug 12 to Aug 15. It holds three rows, all of them stamped Aug 12 at 2:17 and 2:18 PM account time: the budget going $150 to $450 on the pool5 ad set, that ad set going Inactive to Active, and the bodysuit ad set going Active to Inactive. Nothing was recorded on 08-13, 08-14 or 08-15, so E2-R10 ran the whole of this report's day untouched and is now in its third day.
Cells matured to H=6h, read on the account's own clock, which is where the estimator works. Both regimes are now read over their full span.
| ad | regime | $/day | matured installs | spend | CPM | CTR | India % | CPI | RPI | ROAS |
|---|---|---|---|---|---|---|---|---|---|---|
bodysuit | E2-R9 | $450 | 545 | $529.30 | 11.73 | 5.45% | 37% | $0.971 | 0.727 | 0.75 |
pool5 | E2-R10 | $450 | 1,349 | $1,066.80 | 8.28 | 6.58% | 25% | $0.791 | 0.607 | 0.77 |
pool5 wins on cost for the seventh consecutive read, and the two margins moved differently: impressions 29.4% cheaper against 25.5% yesterday, installs 18.5% against 17.8%.
On revenue the two arms are level, and level is not a verdict either. What remains is a cost separation with no revenue separation.
Revenue per install has a coefficient of variation of 6.73, so separating the arms by 20% needs 17,775 installs each; the larger is at 8%.
The arms are unmatched on sample, E2-R10 having run more than twice as long, and that matters only for revenue — already barred.
Money-chart markers are hollow where the point sits under 16 payers, and assets under 20 installs on the day are dropped from the composite and the region charts. On this day that leaves one line.
⚠⚠ The instrument discarded a fifth of this day's payments, and this page was republished once that was fixed. measures.py builds its payment list by looking each payment's user up in the registration ledger and skipping what does not resolve, so an unattributable payment is absent from all three measures. Earlier reports in this series stated that such payments were still in booked. They were not, and on those days it made no difference because the share was two or three percent.
It was not two or three percent here. The Telegram export carried the payer on essentially every row and stopped at 14:50 UTC on 08-13; from there the payment API is the whole record, and it leaves the payer field empty on about a quarter of its rows. What it does populate on every row is an account UUID, and the registration feed has been sending that same UUID alongside the numeric user id since the push began. Nothing on our side was keeping it. Joining the two recovers the payments.
The share of each account day's payments that resolves to a payer, before the repair and after it:
| META day | payments | resolved before | resolved after | ours ÷ Meta booked, after |
|---|---|---|---|---|
| 2026-08-12 | 202 | 98.0% | 98.0% | — |
| 2026-08-13 | 208 | 90.9% | 93.8% | 0.99 |
| 2026-08-14 | 197 | 70.1% | 90.4% | 1.05 |
| 2026-08-15 | 234 | — | 93.6% | 1.01 |
The gate was reading the join rate. This day published at 0.86, outside the 0.91 to 1.06 band and the widest breach the series had recorded; on the repaired record it is 1.05 and inside. Nothing about the account or about Meta's number changed. What is still unrecoverable is payments from people who registered before the push began on 2026-08-13 18:52 UTC, because no feed we hold carries their UUID. That residue is 69 payments across the whole history and it shrinks to irrelevance as the push accumulates.
What moved on this page. Booked went $1,069.12 to $1,147.14, within-day $164.79 to $242.81 and its return 0.40 to 0.59, the cohort $227.60 to $311.66, the day's payer count 16 to 28, and pool5's payer rate 4.0% to 6.0%. The comparison day moved too, by less: 08-13's within-day is $328.81 against the $314.52 its own page carried. Every delivery figure is unchanged, because delivery is Meta's instrument on both sides of every ratio and never touched this.
pool5's payer rate on the repaired record runs 6.6%, 6.0% and 6.0% across 08-13, 08-14 and 08-15. The first version of this page put 08-14 at 4.0% and read the day as a collapse in people paying at all; that number was the instrument.
⚠ The 08-13 figures on this page differ from the 08-13 report as published, for two reasons. The delivery difference is one re-pull of a settled day: that page carried $468.95, 51,292 impressions, 3,357 clicks and click→install 16.03%, against $469.10, 51,303, 3,360 and 16.01% here, which is what a settled Meta day moves by on a second export. The revenue difference is the repair above, and it is larger: within-day $328.81 against the $314.52 that page published. A measure described as sealed moved, and it moved because the instrument could suddenly see payments it had been throwing away.
The country section and table C are the account's own day, seven hours offset from every other table. They are read for mix, never for level. This matters more than usual on this day, because the account day and the UTC day moved in opposite directions: $431.33 and 471 leads on account day 08-13 against $468.59 and 531 on account day 08-14.
The FX table is thirteen days old. Revenue in 33 currencies is converted at rates pulled on 2026-08-02, and it prices days through 08-14. It is the other open candidate in the instrument reconciliation, and it is now the one that has not been given a mechanism.
The shared accounts' export runs a different column preset and we do not control it. The only join key its files offer is the ad set name, which this report refuses to select on, so the shared side carries no CTR or click→install row anywhere on this page.
The two accounts run on different clocks, and section 2 only works because each is stitched on its own. B1 is fixed at UTC-7, so its UTC day is built from two Meta days. The two shared accounts run on UTC+0, so their reporting day already is the UTC day and no stitch applies; giving them B1's offset would move their spend seven hours. Both offsets were derived from data, by correlating each account's hourly impressions against our own registrations from its campaigns, which are true UTC: the method recovers the known seven-hour offset on B1 at r = 0.878 and returns zero on the shared accounts at r = 0.744.
Rank the two accounts on within-day or cohort@24h and never on booked. Booked counts everyone who paid inside the day whatever day they installed, so it credits B1 with three weeks of accumulated cohort and the shared buy, open only since 08-11, with almost none. Section 2's booked column is reported to explain that gap and is not a ranking. The shared side also sat at 12 payers on this day, under the 16-payer bar, so its returns are a direction and never a magnitude.
The shared accounts grew on the day B1 weakened, and opened two more campaigns. Traffic under ad ids ending 334 produced 354 registrations on 08-14 against 278 on 08-13, and two new campaigns appear alongside 0811_vl_bailingxia_srfhjyd-rain-chuva: a 0814_vl_ twin of it and a 0814_vl_bailingxia_srfhjyd_maimai. No figure from section 3 down is affected, because every table there scopes to the ad ids in the run config. Whether the two buys contest the same auctions, and what that costs, is the standalone report of 2026-08-14; this day is consistent with that reading and does not test it.
A further ad account of ours has not delivered in this window. The KBM1 campaign published on 08-15 produced no registrations on 08-14 and sits in a different ad account, so it enters none of Meta's exports here. It will appear in the registration ledger as unmapped traffic once it spends.
37% of registrations never enter a revenue measure and that is true of every day in this series. Every "ours" figure from section 3 down means registrations attributable to a mapped Meta ad. It is internally consistent, because the payer rate divides our payers by that same population.
One draft sits unpublished on the account. The manage view reads Review and publish (1). Nothing on this page depends on it and it was not touched.
This report was written about four hours before the scheduled staging window. Running at 18:10 PT would have put the day's cohort at 100% coverage instead of 86%. Nothing else on the page would move, because within-day is sealed and every delivery figure comes from a closed Meta day.
The 69 payments that still resolve to nobody. They belong to people who registered before the push began, so no feed we hold carries their UUID and no query will recover them. They are a fixed historical residue, and they sit almost entirely in days before 08-13. The open question is whether the payment API can populate the user field directly, which would remove the join from the path altogether.
Whether the instrument gate has anything left in it. On the repaired record the four account days read 0.99, 1.05 and 1.01 against a 0.91 to 1.06 band, so the drift that four earlier reports described was the join rate throughout. The FX table's age remains a named candidate and has never been tested; repricing one settled day at current rates would settle it in an afternoon, and there is now no larger effect sitting on top of it.
Nothing about pool5 against bodysuit on revenue, at this account's volume. The requirement is 17,775 installs an arm and the larger arm is at 1,349. Running longer at $450 does not close that, and on the repaired record the two arms are level on return anyway.
This page was republished on 2026-08-16 after a defect in the payment instrument was found and fixed, and every revenue figure on it moved. The measure discards any payment it cannot tie to a person, and a fifth of this day's payments were arriving identified only by an account UUID that nothing on our side was keeping. The registration feed had been carrying that UUID all along. With the two joined, this day's within-day revenue goes $164.79 to $242.81 and its return 0.40 to 0.59, the payer count 16 to 28, and the instrument gate 0.86 to 1.05. The delivery half of the report never moved, because it is Meta's instrument on both sides of every ratio. Caveats has the measurement and what is still unrecoverable.
The 08-15 report inherits the strong account evening this day handed forward: Meta day 08-14 spent $468.59 and booked 531 leads, and its last seven hours land inside UTC 08-15. It also inherits a repaired payment instrument and is the first day measured on it from the start.
E2-R10 goes into its third full day with a cost advantage that has widened on seven consecutive reads and a return that is now level with the arm it replaced. The useful thing to watch is click→install, which fell 17.9% on this day at p = 0.001 and is the one movement that survived both the pooled and the unweighted read.
Report clock UTC; B1's Meta exports are stamped in that account's zone (UTC-7), so every delivery row from section 3 down is restitched from two Meta days. The country tables and table C are not restitched and are labelled where they appear.
| run | _runs/2026-08-16_2026-08-14_daily_auto/ (republished; first cut _runs/2026-08-15_2026-08-14_daily_auto/) |
|---|---|
| payment cut | 2026-08-16 11:17 UTC, on the repaired join |
| Meta exports | day and country×day 2026-07-01_2026-08-16 pulled 2026-08-15 21:10 UTC; hourly per day, all 24 buckets verified |
| registrations | adjust_sink push, pulled 2026-08-13T18:52Z onward, merged onto the Telegram-parsed ledger of 2026-08-14. Carries the account UUID, which is what the payment join needs |
| payments | in-app-purchase API, full history, joined onto the export base |
| FX | _runs/2026-08-02_today_read/fx_rates.json |
| regimes | campaign activity history re-read for 2026-08-12_2026-08-16; rendered range Aug 12 to Aug 15; newest row Aug 12 at 2:18 PM account time |
python -m ad_ops.daily_pipeline --day 2026-08-14
python -m ad_ops.asset_estimator hourly \
--meta _runs/2026-08-12_0811_daily/exports/ads_hourly_aug11_settled.csv \
_runs/2026-08-14_2026-08-13_daily_auto/exports/ads_hourly_2026-08-12.csv \
_runs/2026-08-14_2026-08-13_daily_auto/exports/ads_hourly_2026-08-13.csv \
_runs/2026-08-15_2026-08-14_daily_auto/exports/ads_hourly_2026-08-14.csv \
--lum _runs/2026-08-15_2026-08-14_daily_auto/lum --fx _runs/2026-08-02_today_read/fx_rates.json \
--ads "ww_bikini_10s,ww_bodysuit_10s,ww_pool5,ww_mugshot,ww_spill,ww_lounge" \
--campaign bailingxia_meituan_ww_cvr_260802 --horizon 6
The pipeline runs measures, day_compare, cohort_arpu, asset_estimator, report_tables and report_charts in the fixed order, on both the UTC and the META configs it writes, and it now chains the payment and registration ledgers forward from the previous run. It stages two hourly exports; the estimator is re-run above across four, so that E2-R9 and E2-R10 are each measured over their whole span.
day_compare's own output is not quoted on this page. It reads installs from our own registration ledger, and its window reaches seven hours past the report day, so it answers a different question on a different clock from section 5's pooled funnel.
The report clock is a UTC day. Adjust reports in UTC, so a UTC-bucketed report lines up with the attribution dashboard without anyone converting in their head. B1's ad account is fixed at UTC-7, so a UTC day is Meta day D−1 17:00 to 23:59 plus Meta day D 00:00 to 16:59. The two clocks are not close: on a measured day the same figures differed by 14.6% on spend and 40.7% on within-day revenue, and on this day they differ in direction.
Three things the clock does not reach, and each is labelled where it appears. Table C's per-asset country mix cannot follow it: the rake is per ACCOUNT, against that account's own hourly margin, and an asset has no hourly margin of its own. The instrument check is invalid off the account's clock, because Meta's conversion value sits on its conversion hour and cannot honestly be restitched. And the estimator runs on Meta's clock deliberately, because its subject is delivery windows and a budget change is an instant on the account's own clock.
The three revenue measures, never one, never mixed, always labelled:
| measure | counts | moves after the day closes? |
|---|---|---|
| booked | revenue that arrived inside the day, whatever day its payer installed | settles about four hours 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 |
A day whose spend is falling reads high on booked and low on the other two, purely because yesterday's buyers are still paying. Use within-day for day-over-day, because it is immutable and needs no horizon. Use cohort at a fixed horizon to compare hours to each other, because within-day censors by hour of day. Booked is what Meta will quote at you, so it is reported to explain the gap and never to rank.
All three are read on our own payment records, and all three count only payments the record can tie to a person who installed through one of our mapped ads. Meta can express only booked, so it appears bracketed beside that column and never as a row of its own.
Two install counts exist and they are never crossed. Meta's Leads and our own registrations disagree by 5 to 10%. Meta's is used for the delivery funnel, so CPI and click→install have both numerator and denominator on one instrument. Ours is used for payer rate and every revenue measure, so the payers and the installs they came from are the same population.
A regime is a stretch over which the ad set's daily budget did not change. The budget is a geography dial on this account, so two creatives measured across a budget change were compared on different audiences. This day held one throughout: E2-R10, pool5 alone at $450, open since 2026-08-12 14:18 account time.
The 16-payer bar (DECISION_LOG.md #37): below roughly 16 payers a revenue figure is a direction and not a magnitude. Revenue per install on this account is a near-zero vector with rare large entries, with a coefficient of variation near 6.7, so separating two creatives by 20% needs about 17,775 installs per arm. The largest regime-matched arm this account has produced is 1,349.