Two ad accounts bought this app on this day and both are ours. Together they spent $624.98, 85% of it B1 and 15% the two shared Nomad Node accounts, against $903.50 the day before when the shared side was 4% of the buy. B1 spent $529.61 for 522 installs at $1.015, against $871.73 and 932 at $0.935 the day before; its booked revenue was $1,411.20, level with the day before, while within-day fell 37.7% to $424.78 on a spend cut of 39.2%. Our records read 1.09 of Meta's booked value on B1's own clock, outside the documented 0.91 to 1.06 band for the fourth consecutive reading. Definitions, the report clock and the three revenue measures are in the appendix.
| 2026-08-11 | 2026-08-12 | change | |
|---|---|---|---|
| spend | $871.73 | $529.61 | −39.2% |
| impressions | 81,768 | 47,455 | −42.0% |
| CPM | $10.66 | $11.16 | +4.7% |
| clicks | 5,320 | 2,632 | −50.5% |
| CTR | 6.51% | 5.55% | −14.8% |
| installs (Meta) | 932 | 522 | −44.0% |
| click→install | 17.52% | 19.83% | +13.2% |
| CPI | $0.935 | $1.015 | +8.6% |
| registrations (ours) | 1,138 | 677 | −40.5% |
| booked | $1,392.51 (1.60) | $1,411.20 (2.66) | +1.3% |
| within-day | $681.83 (0.78) | $424.78 (0.80) | −37.7% |
| cohort @ 24h | $787.66 (0.90) at 100% | $619.65 (1.17) at 100% | −21.3% |
| within-day payers | 51 | 35 | −31.4% |
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.5709 | $0.8214 | $1.3038 | $10.14 | $12.84 | $19.59 | 1,172 |
Spend split. Portfolio $624.98 against $903.50; B1 85% against 96%, the shared accounts 15% against 4%. Inside B1, Worldwide held 100% on both days.
The buy shrank; the return per dollar did not move. Spend −39.2% against within-day −37.7% at 35 payers, and within-day ROAS 0.78 → 0.80.
Booked held while spend fell two fifths; the gap is inherited cohorts. 30.1% of booked came from that day's installs, against 49.0% the day before.
Impressions got dearer, clicks got scarcer, and the people who did click converted better. CPM +4.7%, CTR −14.8% against a 42% impression cut, click→install +13.2%.
⚠ The instrument gate is drifting. B1's account clock reads 1.07, 1.07, 1.07 and now 1.09 against a 0.91 to 1.06 band; reconciliation in Caveats.
Both accounts are ours. B1 (1738541847343652) is the account every earlier report in this series covered, and its campaigns are named bailingxia_. The two Nomad Node accounts (835434076171203 and 3267486106793669) are shared with us, and started buying this app on 08-11; only their 0811_ and 0814_* campaigns are this app, and the greenvid and pixvoo campaigns running beside them are other products and are excluded from every figure here.
Spend and impressions are Meta's, each account read on its own clock. Registrations, payers and all three revenue measures are our own records, and DNU is our registration count: the shared export carries no Meta install column, so our registrations are the only install count both sides have and the CPI and payer rate below divide by them. Rank the two accounts on within-day or cohort@24h, never on booked. This section is a later export and payment cut than the rest of the page; see Reproduce.
| account | spend | share | impressions | CPM | DNU | CPI | payers | payer% |
|---|---|---|---|---|---|---|---|---|
| B1 (ours) | $532.72 | 85% | 47,714 | $11.16 | 732 | $0.728 | 113 | 15.4% |
| Nomad Node (shared) | $92.26 | 15% | 31,379 | $2.94 | 479 | $0.193 | 19 | 4.0% |
| Portfolio | $624.98 | 100% | 79,093 | $7.90 | 1,211 | $0.516 | 132 | 10.9% |
| account | booked | bROAS | within-day | wROAS | cohort@24h | cROAS | ARPU | ARPPU |
|---|---|---|---|---|---|---|---|---|
| B1 (ours) | $1,474.72 | 2.77 | $424.78 | 0.80 | $619.65 | 1.16 | $2.015 | $13.05 |
| Nomad Node (shared) | $119.29 | 1.29 | $119.29 | 1.29 | $156.90 | 1.70 | $0.249 | $6.28 |
| Portfolio | $1,594.01 | 2.55 | $544.07 | 0.87 | $776.55 | 1.24 | $1.316 | $12.08 |
The shared accounts returned more per dollar on both rankable measures: within-day 1.29 against 0.80, cohort@24h 1.70 against 1.16. Booked reverses it on age alone.
15% of the spend bought 31,379 of 79,093 impressions. The shared accounts buy a much cheaper person who is much less likely to pay.
The shared side clears the 16-payer bar with 19 payers, and is still thin: three fewer and its 1.29 would be a direction only.
The shared accounts' export carries no clicks, no leads, no country and no Ad ID, so every section below this one is B1 alone.
B1 only, as is every section from here down. 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; 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 | $12.21 | 1,025 | 11.91 | 62 | 6.05% | 17 | 27.4% | $0.718 | 20 | 100% | $43.97 | 3.60 | $13.97 | 1.14 | 2 | $13.97 | 1.14 |
| 1 | $11.91 | 1,165 | 10.22 | 53 | 4.55% | 10 | 18.9% | $1.191 | 17 | 100% | $48.99 | 4.11 | $84.40 | 7.09 | 3 | $84.40 | 7.09 |
| 2 | $19.26 | 1,282 | 15.02 | 72 | 5.62% | 13 | 18.1% | $1.482 | 20 | 100% | $23.91 | 1.24 | $10.97 | 0.57 | 2 | $10.97 | 0.57 |
| 3 | $18.17 | 1,397 | 13.01 | 78 | 5.58% | 17 | 21.8% | $1.069 | 21 | 100% | $28.05 | 1.54 | $13.96 | 0.77 | 1 | $13.96 | 0.77 |
| 4 | $19.81 | 1,441 | 13.75 | 82 | 5.69% | 24 | 29.3% | $0.825 | 32 | 100% | $54.41 | 2.75 | $0.00 | 0.00 | 0 | $3.06 | 0.15 |
| 5 | $19.66 | 1,334 | 14.74 | 66 | 4.95% | 24 | 36.4% | $0.819 | 28 | 100% | $103.90 | 5.28 | $22.93 | 1.17 | 1 | $22.93 | 1.17 |
| 6 | $19.72 | 1,375 | 14.34 | 86 | 6.25% | 15 | 17.4% | $1.315 | 25 | 100% | $123.64 | 6.27 | $21.50 | 1.09 | 1 | $21.50 | 1.09 |
| 7 | $20.04 | 1,435 | 13.97 | 96 | 6.69% | 22 | 22.9% | $0.911 | 31 | 100% | $91.19 | 4.55 | $11.60 | 0.58 | 2 | $11.60 | 0.58 |
| 8 | $19.74 | 1,951 | 10.12 | 87 | 4.46% | 19 | 21.8% | $1.039 | 23 | 100% | $15.98 | 0.81 | $7.98 | 0.40 | 1 | $7.98 | 0.40 |
| 9 | $24.18 | 2,386 | 10.13 | 115 | 4.82% | 19 | 16.5% | $1.273 | 31 | 100% | $95.41 | 3.95 | $35.34 | 1.46 | 1 | $35.34 | 1.46 |
| 10 | $24.97 | 2,551 | 9.79 | 132 | 5.17% | 22 | 16.7% | $1.135 | 28 | 100% | $136.10 | 5.45 | $3.18 | 0.13 | 1 | $3.18 | 0.13 |
| 11 | $29.12 | 2,330 | 12.50 | 117 | 5.02% | 25 | 21.4% | $1.165 | 29 | 100% | $26.78 | 0.92 | $23.64 | 0.81 | 3 | $27.20 | 0.93 |
| 12 | $22.49 | 1,896 | 11.86 | 98 | 5.17% | 13 | 13.3% | $1.730 | 21 | 100% | $13.75 | 0.61 | $5.01 | 0.22 | 1 | $5.01 | 0.22 |
| 13 | $20.60 | 2,086 | 9.88 | 127 | 6.09% | 29 | 22.8% | $0.710 | 34 | 100% | $43.06 | 2.09 | $13.42 | 0.65 | 2 | $19.95 | 0.97 |
| 14 | $21.54 | 2,178 | 9.89 | 136 | 6.24% | 26 | 19.1% | $0.828 | 35 | 100% | $34.11 | 1.58 | $34.49 | 1.60 | 2 | $63.80 | 2.96 |
| 15 | $27.75 | 2,837 | 9.78 | 160 | 5.64% | 34 | 21.2% | $0.816 | 40 | 100% | $97.64 | 3.52 | $40.73 | 1.47 | 3 | $49.29 | 1.78 |
| 16 | $26.77 | 3,177 | 8.43 | 151 | 4.75% | 23 | 15.2% | $1.164 | 27 | 100% | $27.86 | 1.04 | $16.78 | 0.63 | 2 | $23.90 | 0.89 |
| 17 | $35.74 | 3,596 | 9.94 | 184 | 5.12% | 29 | 15.8% | $1.232 | 40 | 100% | $18.58 | 0.52 | $0.00 | 0.00 | 0 | $11.52 | 0.32 |
| 18 | $35.94 | 3,375 | 10.65 | 146 | 4.33% | 34 | 23.3% | $1.057 | 41 | 100% | $71.28 | 1.98 | $4.99 | 0.14 | 1 | $7.98 | 0.22 |
| 19 | $22.57 | 2,020 | 11.17 | 99 | 4.90% | 24 | 24.2% | $0.940 | 32 | 100% | $78.56 | 3.48 | $38.64 | 1.71 | 2 | $47.96 | 2.12 |
| 20 | $17.34 | 1,276 | 13.59 | 78 | 6.11% | 14 | 17.9% | $1.239 | 19 | 100% | $113.97 | 6.57 | $0.00 | 0.00 | 0 | $0.00 | 0.00 |
| 21 | $19.53 | 1,115 | 17.52 | 109 | 9.78% | 19 | 17.4% | $1.028 | 24 | 100% | $66.29 | 3.39 | $5.17 | 0.26 | 1 | $5.17 | 0.26 |
| 22 | $19.98 | 1,970 | 10.14 | 147 | 7.46% | 22 | 15.0% | $0.908 | 27 | 100% | $30.54 | 1.53 | $5.74 | 0.29 | 1 | $5.74 | 0.29 |
| 23 | $20.57 | 2,257 | 9.11 | 151 | 6.69% | 28 | 18.5% | $0.735 | 32 | 100% | $23.22 | 1.13 | $10.33 | 0.50 | 2 | $123.24 | 5.99 |
| ALL | $529.61 | 47,455 | 11.16 | 2,632 | 5.55% | 522 | 19.8% | $1.015 | 677 | 100% | $1,411.20 | 2.66 | $424.78 | 0.80 | 35 | $619.65 | 1.17 |
⚠ Payer counts per hour run 0 to 9. An hourly ARPPU on one payer is that payer's own basket. Read the ALL row for level and the hours for shape.
The last three rows are the regime change. Hours 21 to 23 are pool5's only hours, and hour 23's $123.24 rests on four payers.
Hours both days delivered in, on the UTC clock: 00 through 23. Only the shared hours are compared.
| metric | hours 2026-08-12 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 16 of 24 | 8 of 24 | p = 0.152 |
| CTR | 7 of 24 | 17 of 24 | p = 0.064 |
| click→install | 14 of 24 | 10 of 24 | p = 0.541 |
| CPI | 12 of 24 | 12 of 24 | p = 1.000 |
A sign test throws magnitude away and buys weight-free direction with it.
Pooled and hourly disagree on CPI: pooled +8.6%, hour by hour 12 up and 12 down. CTR agrees: 17 of 24 hours down, 14.8% pooled.
Every shared hour, 2026-08-11 → 2026-08-12. 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 | 1,786 → 1,025 | 11.14 → 11.91 | 4.98% → 6.05% | 13.5% → 27.4% | 1.658 → 0.718 |
| 01 | 2,038 → 1,165 | 13.06 → 10.22 | 4.66% → 4.55% | 12.6% → 18.9% | 2.217 → 1.191 |
| 02 | 1,891 → 1,282 | 12.01 → 15.02 | 4.55% → 5.62% | 25.6% → 18.1% | 1.033 → 1.482 |
| 03 | 2,031 → 1,397 | 12.83 → 13.01 | 6.75% → 5.58% | 11.7% → 21.8% | 1.629 → 1.069 |
| 04 | 2,145 → 1,441 | 11.56 → 13.75 | 5.13% → 5.69% | 20.9% → 29.3% | 1.078 → 0.825 |
| 05 | 2,443 → 1,334 | 10.12 → 14.74 | 4.75% → 4.95% | 22.4% → 36.4% | 0.951 → 0.819 |
| 06 | 2,380 → 1,375 | 12.68 → 14.34 | 4.83% → 6.25% | 19.1% → 17.4% | 1.371 → 1.315 |
| 07 | 7,944 → 1,435 | 10.81 → 13.97 | 7.57% → 6.69% | 15.5% → 22.9% | 0.923 → 0.911 |
| 08 | 7,266 → 1,951 | 9.18 → 10.12 | 6.58% → 4.46% | 16.5% → 21.8% | 0.844 → 1.039 |
| 09 | 6,750 → 2,386 | 9.25 → 10.13 | 6.16% → 4.82% | 17.1% → 16.5% | 0.879 → 1.273 |
| 10 | 5,806 → 2,551 | 9.53 → 9.79 | 6.32% → 5.17% | 18.1% → 16.7% | 0.869 → 1.135 |
| 11 | 4,986 → 2,330 | 10.02 → 12.50 | 6.68% → 5.02% | 17.5% → 21.4% | 0.879 → 1.165 |
| 12 | 3,652 → 1,896 | 11.30 → 11.86 | 7.34% → 5.17% | 16.8% → 13.3% | 0.936 → 1.730 |
| 13 | 3,236 → 2,086 | 11.63 → 9.88 | 7.66% → 6.09% | 17.4% → 22.8% | 0.916 → 0.710 |
| 14 | 3,042 → 2,178 | 12.67 → 9.89 | 7.86% → 6.24% | 18.0% → 19.1% | 0.896 → 0.828 |
| 15 | 4,114 → 2,837 | 11.74 → 9.78 | 7.34% → 5.64% | 18.9% → 21.2% | 0.847 → 0.816 |
| 16 | 4,704 → 3,177 | 9.44 → 8.43 | 6.76% → 4.75% | 19.2% → 15.2% | 0.728 → 1.164 |
| 17 | 4,455 → 3,596 | 8.82 → 9.94 | 6.89% → 5.12% | 15.3% → 15.8% | 0.836 → 1.232 |
| 18 | 3,850 → 3,375 | 10.22 → 10.65 | 6.39% → 4.33% | 19.5% → 23.3% | 0.820 → 1.057 |
| 19 | 2,971 → 2,020 | 10.13 → 11.17 | 6.06% → 4.90% | 21.7% → 24.2% | 0.772 → 0.940 |
| 20 | 1,528 → 1,276 | 13.28 → 13.59 | 7.19% → 6.11% | 18.2% → 17.9% | 1.114 → 1.239 |
| 21 | 899 → 1,115 | 20.62 → 17.52 | 8.23% → 9.78% | 27.0% → 17.4% | 0.927 → 1.028 |
| 22 | 1,276 → 1,970 | 15.31 → 10.14 | 7.84% → 7.46% | 19.0% → 15.0% | 1.029 → 0.908 |
| 23 | 815 → 2,257 | 16.04 → 9.11 | 8.34% → 6.69% | 22.1% → 18.5% | 0.871 → 0.735 |
(i) The portfolio by country, 2026-08-12. 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 | $170.76 | 32.1% | 21,216 | $8.05 | 383 | $0.446 | $149.71 | 0.88 | 24 |
| US | $61.87 | 11.6% | 1,133 | $54.60 | 42 | $1.473 | $97.78 | 1.58 | 20 |
| ID | $18.18 | 3.4% | 2,246 | $8.10 | 81 | $0.225 | $4.99 | 0.27 | 3 |
| MX | $17.00 | 3.2% | 1,871 | $9.08 | 55 | $0.309 | $23.93 | 1.41 | 4 |
| GB | $15.20 | 2.9% | 369 | $41.20 | 15 | $1.014 | $31.16 | 2.05 | 5 |
| MY | $14.30 | 2.7% | 1,615 | $8.85 | 42 | $0.340 | $13.94 | 0.98 | 4 |
| PH | $13.53 | 2.5% | 4,442 | $3.05 | 70 | $0.193 | $8.98 | 0.66 | 3 |
| AR | $10.55 | 2.0% | 604 | $17.48 | 23 | $0.459 | $12.97 | 1.23 | 2 |
| TR | $10.55 | 2.0% | 374 | $28.19 | 27 | $0.391 | $41.23 | 3.91 | 3 |
| CA | $9.42 | 1.8% | 226 | $41.65 | 7 | $1.346 | $35.65 | 3.78 | 4 |
| AU | $8.83 | 1.7% | 191 | $46.15 | 4 | $2.208 | $5.61 | 0.64 | 3 |
| IT | $7.49 | 1.4% | 315 | $23.78 | 8 | $0.937 | $9.99 | 1.33 | 3 |
188 further countries are not listed, $175.03 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) $120.74 from Meta 2026-08-11 and $411.98 from Meta 2026-08-12, a measured UTC-day total of $532.72.
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-12.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $170.76 | 32.1% | 21,216 | $8.05 | 260 | $0.657 | $132.43 | 0.78 | 21 |
| US | $61.87 | 11.6% | 1,133 | $54.60 | 28 | $2.210 | $89.80 | 1.45 | 19 |
| ID | $18.18 | 3.4% | 2,246 | $8.10 | 31 | $0.587 | $4.99 | 0.27 | 3 |
| MX | $17.00 | 3.2% | 1,871 | $9.08 | 25 | $0.680 | $0.00 | 0.00 | 1 |
| GB | $15.20 | 2.9% | 369 | $41.20 | 12 | $1.267 | $31.16 | 2.05 | 5 |
| MY | $14.30 | 2.7% | 1,615 | $8.85 | 29 | $0.493 | $8.56 | 0.60 | 3 |
| PH | $13.53 | 2.5% | 4,442 | $3.05 | 46 | $0.294 | $8.98 | 0.66 | 3 |
| AR | $10.55 | 2.0% | 604 | $17.48 | 18 | $0.586 | $12.97 | 1.23 | 2 |
| TR | $10.55 | 2.0% | 374 | $28.19 | 16 | $0.659 | $35.34 | 3.35 | 2 |
| CA | $9.42 | 1.8% | 226 | $41.65 | 5 | $1.885 | $35.65 | 3.78 | 4 |
| AU | $8.83 | 1.7% | 191 | $46.15 | 1 | $8.831 | $0.00 | 0.00 | 2 |
| IT | $7.49 | 1.4% | 315 | $23.78 | 7 | $1.071 | $9.99 | 1.33 | 3 |
186 further countries are not listed, $175.03 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 | — | 2 | $0.000 | $0.00 | — | 0 |
| AM | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| AO | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| AR | $0.00 | 0.0% | 0 | — | 5 | $0.000 | $0.00 | — | 0 |
| AU | $0.00 | 0.0% | 0 | — | 3 | $0.000 | $5.61 | — | 1 |
| BA | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| BD | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| BR | $0.00 | 0.0% | 0 | — | 33 | $0.000 | $10.26 | — | 2 |
| CA | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| CL | $0.00 | 0.0% | 0 | — | 7 | $0.000 | $0.00 | — | 0 |
| CO | $0.00 | 0.0% | 0 | — | 13 | $0.000 | $0.00 | — | 0 |
| CR | $0.00 | 0.0% | 0 | — | 3 | $0.000 | $0.00 | — | 0 |
53 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-11, the same two tables.
(i) The portfolio by country, 2026-08-11. 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 | $232.45 | 26.7% | 30,736 | $7.56 | 395 | $0.588 | $119.03 | 0.51 | 30 |
| US | $116.80 | 13.4% | 2,174 | $53.72 | 56 | $2.086 | $124.75 | 1.07 | 16 |
| GB | $37.99 | 4.4% | 1,204 | $31.57 | 34 | $1.117 | $85.36 | 2.25 | 5 |
| ID | $29.60 | 3.4% | 4,791 | $6.18 | 84 | $0.352 | $0.00 | 0.00 | 2 |
| MX | $25.98 | 3.0% | 2,864 | $9.07 | 46 | $0.565 | $5.71 | 0.22 | 5 |
| MY | $21.06 | 2.4% | 2,559 | $8.23 | 32 | $0.658 | $8.56 | 0.41 | 3 |
| TR | $20.29 | 2.3% | 1,006 | $20.17 | 25 | $0.812 | $5.89 | 0.29 | 1 |
| PH | $19.66 | 2.3% | 6,874 | $2.86 | 78 | $0.252 | $5.63 | 0.29 | 3 |
| AR | $19.62 | 2.3% | 1,052 | $18.64 | 21 | $0.934 | $4.99 | 0.25 | 4 |
| DE | $18.66 | 2.1% | 385 | $48.47 | 19 | $0.982 | $20.79 | 1.11 | 6 |
| FR | $17.17 | 2.0% | 654 | $26.26 | 11 | $1.561 | $0.00 | 0.00 | 2 |
| AU | $16.01 | 1.8% | 487 | $32.88 | 8 | $2.002 | $8.90 | 0.56 | 3 |
183 further countries are not listed, $296.44 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) $174.97 from Meta 2026-08-10 and $696.76 from Meta 2026-08-11, a measured UTC-day total of $871.73.
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-11.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $232.45 | 26.7% | 30,736 | $7.56 | 365 | $0.637 | $77.68 | 0.33 | 29 |
| US | $116.80 | 13.4% | 2,174 | $53.72 | 55 | $2.124 | $124.75 | 1.07 | 16 |
| GB | $37.99 | 4.4% | 1,204 | $31.57 | 33 | $1.151 | $85.36 | 2.25 | 5 |
| ID | $29.60 | 3.4% | 4,791 | $6.18 | 71 | $0.417 | $0.00 | 0.00 | 2 |
| MX | $25.98 | 3.0% | 2,864 | $9.07 | 42 | $0.619 | $5.71 | 0.22 | 5 |
| MY | $21.06 | 2.4% | 2,559 | $8.23 | 32 | $0.658 | $8.56 | 0.41 | 3 |
| TR | $20.29 | 2.3% | 1,006 | $20.17 | 25 | $0.812 | $5.89 | 0.29 | 1 |
| PH | $19.66 | 2.3% | 6,874 | $2.86 | 74 | $0.266 | $5.63 | 0.29 | 3 |
| AR | $19.62 | 2.3% | 1,052 | $18.64 | 21 | $0.934 | $4.99 | 0.25 | 4 |
| DE | $18.66 | 2.1% | 385 | $48.47 | 19 | $0.982 | $20.79 | 1.11 | 6 |
| FR | $17.17 | 2.0% | 654 | $26.26 | 11 | $1.561 | $0.00 | 0.00 | 2 |
| AU | $16.01 | 1.8% | 487 | $32.88 | 8 | $2.002 | $8.90 | 0.56 | 3 |
182 further countries are not listed, $296.44 between them (34.0% of this block).
Nomad Node
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| BE | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| BR | $0.00 | 0.0% | 0 | — | 8 | $0.000 | $0.00 | — | 0 |
| CL | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| CZ | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| ES | $0.00 | 0.0% | 0 | — | 2 | $0.000 | $0.00 | — | 0 |
| GB | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| GF | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| HN | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| HR | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
| ID | $0.00 | 0.0% | 0 | — | 13 | $0.000 | $0.00 | — | 0 |
| IN | $0.00 | 0.0% | 0 | — | 30 | $0.000 | $41.35 | — | 1 |
| IQ | $0.00 | 0.0% | 0 | — | 1 | $0.000 | $0.00 | — | 0 |
15 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.
B1's own delivery, 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-11 | $871.73 | 81,768 | 10.66 | 5,320 | 6.51% | 932 | 17.52% | $0.935 |
| 2026-08-12 | $529.61 | 47,455 | 11.16 | 2,632 | 5.55% | 522 | 19.83% | $1.015 |
Pooling across hours is a mix comparison: it weights each hour by what it delivered, so these rows can move without any hour changing.
| measure | 2026-08-11 | 2026-08-12 | moves after the day closes? |
|---|---|---|---|
| booked | $1,392.51 (1.60) | $1,411.20 (2.66) | settled |
| within-day | $681.83 (0.78) | $424.78 (0.80) | never |
| cohort @ 24h | $787.66 (0.90) at 100% | $619.65 (1.17) at 100% | frozen, both days |
Mix-neutral account line: CPM $10.66 → $11.16, on 08-11's mix still $11.16. One campaign delivered on both days, so there is no mix to neutralise.
| installed | 2026-08-11 | 2026-08-12 |
|---|---|---|
| the day itself | $681.83 (49.0%) | $424.78 (30.1%) |
| one day earlier | $107.42 (7.7%) | $245.41 (17.4%) |
| two days earlier | $88.68 (6.4%) | $71.35 (5.1%) |
| three days earlier | $81.91 (5.9%) | $84.72 (6.0%) |
| four days earlier | $33.91 (2.4%) | $95.07 (6.7%) |
| five days earlier | $13.76 (1.0%) | $33.27 (2.4%) |
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.
These are B1's campaigns, and B1's spend is what the shares are taken of. 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 | $529.61 | 100.0% | 47,455 | 100.0% | 11.16 | 2,632 | 5.55% | $0.201 | 522 | $1.015 | $424.78 | 0.80 | 35 |
Booking with no delivery, and excluded from every rate above: German (DE/AT) 0 installs (Meta), 0 registrations (ours), $0.00 within-day; Earner (retired 08-03) 0 installs (Meta), 95 registrations (ours), $0.00 within-day. Counting them would put installs into the CPI denominator against spend that never happened.
The retired earner still produced 95 registrations on no spend, eleven days after it was switched off, and no within-day revenue on either day.
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. The campaign-level reading for this day is the table above.
B1's worldwide campaign, which carried all of B1's spend on this day.
Two ads delivered, each alone in its own ad set, and never at the same time. bodysuit ran hours 00 to 21 and pool5 ran hours 21 to 23. The ad-set row is therefore the ad row on this day, and the tables below are labelled by asset. That identity holds for this day's cut alone, and it has to be re-checked on any day two ads deliver together.
Seven further ads sit in the campaign and none of them delivered. Three carry registrations and booked revenue 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/bodysuit | $479.68 | 42,468 | 11.30 | 2,252 | 5.30% | 444 | 19.72% | $1.080 |
E2/pool5 | $49.93 | 4,987 | 10.01 | 380 | 7.62% | 64 | 16.84% | $0.780 |
E2/bikini | $0.00 | 0 | — | 0 | — | 9 | — | $0.000 |
E2/lounge | $0.00 | 0 | — | 0 | — | 5 | — | $0.000 |
earner/bodysuit · earner/bikini · earner/pool5 · E2/mugshot · 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, 100% covered on this day. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/bodysuit | $645.75 | 1.35 (1.36) | $327.27 | 0.68 | $421.13 | 0.88 | 30 | 6.1% | 0.671 | 10.91 | 10.9% |
E2/pool5 | $401.63 | 8.04 (6.96) | $92.50 | 1.85 | $190.46 | 3.81 | 4 | 5.6% | 1.285 | 23.12 | 82.6% |
E2/bikini | $60.76 | — | $5.01 | — | $5.01 | — | 1 | 8.3% | 0.417 | 5.01 | 100.0% |
E2/lounge | $199.09 | — | $0.00 | — | $3.06 | — | 0 | 0.0% | 0.000 | — | — |
earner/bodysuit | $28.66 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/bikini | $33.16 | — | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
earner/pool5 | $5.76 | — | $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. bodysuit clears it with 30. Nothing else on this page does.
⚠ pool5's revenue row is one person: within-day $92.50, 82.6% of it a payer who registered in hour 01, twenty hours before the regime opened.
⚠ 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/bodysuit | $361.74 | 36.2% | 9.6% | 54.2% | 27.4% |
E2/pool5 | $176.30 | 21.8% | 14.3% | 63.9% | 0.0% |
pool5 bought 14.4 points less India and 4.7 points more United States than bodysuit. A cheaper country mix is most of a cheaper CPI here.
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).
Cells matured to H=6h, read on the account's own clock, which is where the estimator works.
| ad | regime | $/day | matured installs | spend | CPM | CTR | India % | CPI | RPI | ROAS |
|---|---|---|---|---|---|---|---|---|---|---|
bodysuit | E2-R9 | $450 | 545 | $526.20 | 11.72 | 5.45% | 37% | $0.966 | 0.727 | 0.75 |
pool5 | E2-R10 | $450 | 259 | $139.60 | 8.22 | 5.93% | 21% | $0.539 | 0.776 | 1.44 |
⚠ These two rows are not a comparison. E2-R10 opened inside this report's own day, and its matured cells are only its early ones.
pool5 is cheaper per install and buys less India, on the fifth consecutive read saying so. Delivery figures resolve early.
pool5's return cannot be read yet. Its 1.44 rests on 259 installs matured to H=6, a regime under nine hours old, and one payer.
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 two lines with anything to say and one of them is hollow throughout.
⚠ The two accounts keep different clocks, and the account table in section 2 is built on that difference. B1 is fixed at UTC-7, so each of its UTC days is stitched from two account days; the Nomad Node accounts sit on UTC+0, so their reporting day is the UTC day and nothing is stitched. Both offsets were recovered from data by correlating each account's hourly impressions against our own registrations, which run on true UTC: the method returns B1's known seven-hour offset at r = 0.878 and a zero offset for the shared accounts at r = 0.744. Stitching the shared accounts on B1's offset would move their spend seven hours.
Booked cannot rank these two accounts and this report does not use it for that. B1 has three weeks of installs still paying behind it and the shared buy is a day old, so booked credits B1 with revenue that has nothing to do with what either account bought on this day. Every cross-account statement on this page is made on within-day or cohort@24h, and the shared side's within-day figure rests on 19 payers, just clear of the 16-payer bar.
The shared accounts' export column preset is not ours to change. It carries no clicks, no leads, no country and no Ad ID, which is why the hourly funnel, the country cut and the three per-asset tables have no shared-account counterpart.
⚠ The instrument gate has now breached four readings running, and the breach is widening. On B1's own account clock, where the check is valid, our records read 1.07 on the 08-11 first cut, 1.07 on the 08-11 re-cut, 1.07 on the first 08-12 cut and 1.09 here, against a documented 0.91 to 1.06. The 08-11 pair already ruled out maturity: twelve hours and a coverage move from 35% to 71% left the ratio unchanged to two decimals. This reading is wider than the last because our own instrument became more complete, not because the day differed, which points the discrepancy in a definite direction. Refunds have now been eliminated as the explanation. The payment API exposes refunds for the first time and there are 25 across the whole series, worth roughly $8 a day against an instrument gap of about $110 a day on each of these two days. A 9% gap does not invalidate within-day, which never touches Meta's column; it bounds every statement on this page that compares the two.
The cohort at 24 hours is frozen, at 100% coverage on both days. 08-12's last install passed its horizon at 23:59 UTC on 08-13 and the figure has not moved from the $619.65 published here: the 2026-08-13 report carries the same number at full coverage. Against 08-11's completed $787.66 the day reads −21.3%. This page shipped at 88% coverage, and the missing 12% was hours 21, 22 and 23 — exactly the hours pool5 delivered in, which is why the comparison was declined at the time. Those hours added nothing further.
⚠ The 08-11 figures on this page differ from the 08-11 report as published, by one payment. That page carried within-day $665.73 and 0.76; this one carries $681.83 and 0.78. The difference is a single €13.99 purchase at 01:11 UTC on 08-11 that the Telegram export never contained and the payment API does. Within-day did not drift, which it cannot; the instrument reading it became more complete. Two such rows exist across the whole series, the other on 08-02.
Payments on this page come from two sources joined, and the join is what makes the cohort measures readable. The payment API is the more complete record of what was paid and drops the payer's identity on about a quarter of its rows, which silently deflates any measure keyed to an install day. The Telegram export carries the identity on 97.6% of rows and stops at 14:50 UTC on 08-13. This report uses the export as the base and adds the 73 API rows it does not contain. Both sources hold exactly the same 209 transactions for UTC 08-12, with no amount or currency mismatch between them.
No per-arm figure on this page is a whole-day like-for-like. bodysuit ran 21.3 hours of the day and pool5 ran 2.7. Tables A, B and C are whole-day figures and inherit that asymmetry. The regime block is the version that does not, and it is not a comparison for the separate reason given there.
The rule against tabling a regime that opened inside the report's own day was written on 08-11. That daily read E2-R9 as 33% dearer per install than the five-arm regime, and the same comparison read +2% six hours later on nothing but a fresher payment cut.
The 08-11 report carried pool5 at 1.10 and it fell to 0.77 as maturity arrived, which is why its revenue column is read once the regime has a full day and an hour-matched window behind it.
pool5's hours are the day's late-evening hours and its audience is not bodysuit's. Hours 21 to 23 delivered at CTR 6.69% to 9.78% against a day averaging 5.55%. Any straight per-asset comparison on this day is confounded by hour of clock before it is confounded by anything else.
The country section and table C are B1's own account day, seven hours offset from every other table. Where the UTC day splits 21.3 hours of bodysuit against 2.7 of pool5, the Meta day splits 14.3 against 9.7. They are read for mix, never for level.
The FX table is eleven days old. Revenue in 33 currencies is converted at rates pulled on 2026-08-02, and it prices days through 08-12. It is one of the three named candidates in the open instrument reconciliation and it has not yet been separated from the other two.
The second buy is now identified, and sections 3 onward are still B1 alone. The ad ids ending 334 delivering under campaigns named 0811_vl_bailingxia_srfhjyd-rain-chuva and -health belong to the two shared Nomad Node accounts, and section 2 reports them. Every table from section 3 down scopes to the ad ids in the run config, all of which are B1's, so that traffic enters none of them.
37% of registrations never enter a revenue measure and that is true of every day in this series. Every "ours" figure means registrations attributable to a mapped Meta ad. It is internally consistent, because the payer rate divides our payers by that same population.
Whether pool5 at $450 holds its cost advantage over a full day. It has now shown a cheaper CPI in five consecutive reads, but never once across a whole day at this budget, and the regime table shows this account's returns falling as budgets rise. The 08-13 report is the first cut that can answer it, because E2-R10 will have a full day and an hour-matched window against E2-R9.
Which instrument the 9% gap belongs to. Refunds are now ruled out by measurement. Two named candidates remain and neither has been separated: the age of the FX table against the days it prices, and the ~20% of payments in the payment API that join to no user. A third has been added by this report, which is that our own record is still gaining rows.
Whether the payer identity missing from a quarter of API payments can be recovered. If it can, the Telegram export stops being needed for anything except history. If it cannot, every cohort measure stays dependent on an export that runs on a laptop.
This day is split in two and no per-arm day figure crosses the seam. For 21.3 hours B1 ran
bodysuitalone at $450; from 21:18 UTC it ranpool5alone at the same $450. The second regime opened inside this report's own day, which is why it is described in section 7 and kept out of every comparison table.
The 08-13 report inherits a clean question and the first day able to answer it: E2-R10 against E2-R9, same budget, same campaign, same single-arm auction, one creative substituted, and by then both with a full day behind them. It should state each regime's matured install count beside every figure. pool5's cohort coverage is now in place, and what the revenue column cannot yet carry is the payer count behind it.
It also inherits the fourth breach. The standing rule is now to open the reconciliation, and this report has closed off one of its three candidates.
Report clock UTC; B1's exports are stamped in its ad account zone (UTC-7), so every delivery row is restitched from two account days. The shared accounts are on UTC+0 and are not restitched. The country tables and table C are not restitched either and are labelled where they appear.
| run | _runs/2026-08-13_0812_daily/ |
|---|---|
| payment cut | 2026-08-13 21:03 UTC |
| Meta exports | day and country×day 2026-07-01_2026-08-14 pulled 2026-08-13 21:00 UTC; hourly per day, settled |
| registrations | Telegram LumUser export, parsed 2026-08-13 14:53 UTC |
| payments | in-app-purchase API, full history, joined onto the export base |
| FX | _runs/2026-08-02_today_read/fx_rates.json |
| section 2 | _runs/2026-08-16_receipt_series/: shared-account hourly exports in its acct2/, B1 hourly re-pulled 2026-08-14, registrations and payments cut 2026-08-16 |
Section 2 is a later cut than the rest of the page. Its B1 spend reads $532.72 where every other section reads $529.61, from a later re-pull of the same account day, and its B1 install count is our registrations grouped by campaign name where the rest of the page groups them by Ad ID. B1's within-day and cohort@24h revenue are identical to the cent on both cuts.
python -m ad_ops.measures --config _runs/2026-08-13_0812_daily/run_config.json --day 2026-08-12 --prev 2026-08-11
python -m ad_ops.measures --config _runs/2026-08-13_0812_daily/run_config_meta.json --day
2026-08-12 --prev 2026-08-11
python -m ad_ops.day_compare --config _runs/2026-08-13_0812_daily/run_config.json --today
2026-08-12 --prev 2026-08-11 --h 6
python -m ad_ops.cohort_arpu --config _runs/2026-08-13_0812_daily/run_config.json --days
2026-08-09,2026-08-10,2026-08-11,2026-08-12
python -m ad_ops.asset_estimator hourly \
--meta _runs/2026-08-12_0811_daily/exports/ads_hourly_aug11_settled.csv \
_runs/2026-08-13_0812_daily/exports/ads_hourly_aug12_settled.csv \
--lum _runs/2026-08-13_0812_daily/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
python -m ad_ops.report_tables --config _runs/2026-08-13_0812_daily/run_config.json --day 2026-08-12 --prev 2026-08-11
python -m ad_ops.report_charts --config _runs/2026-08-13_0812_daily/run_config.json --day 2026-08-12
--prev 2026-08-11 \
--days 2026-08-09,2026-08-10,2026-08-11,2026-08-12 --out ad_ops/figures/2026-08-12 --relpath figures/2026-08-12
python _runs/2026-08-16_receipt_series/portfolio_split.py --markdown _runs/2026-08-16_receipt_series/blocks
python _runs/2026-08-16_receipt_series/portfolio_split.py --calibrate
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 is fixed at UTC-7, so a UTC day on it is account day D−1 17:00 to 23:59 plus account 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.
Three things the clock does not reach, each 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 measures are read on our own payment records. Meta can express only booked, so it appears bracketed beside that column and never as a row of its own. Quoting Meta's booked against our within-day would mix instruments, and the instrument difference would land inside a gap that is otherwise exactly the inherited cohort.
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 two: E2-R9, bodysuit alone at $450, running to 21:18 UTC; and E2-R10, pool5 alone at $450, from 21:18 UTC.
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,600 installs per arm. The largest regime-matched arm this account has ever produced is 545.