Two ad accounts spent $9,239.32 on this app in the first fifteen days of August, against $2,455.00 over the nine days of July that precede them; definitions, the report clock and the three revenue measures are in the appendix.
Rates first, because they are the part that compares. The level rows are printed because the report has to reconcile, and their change column is empty by construction.
| 2026-07-23 → 07-31 (9 days) | 2026-08-01 → 08-15 (15 days) | change | |
|---|---|---|---|
| rates — comparable | |||
| CPM | $7.07 | $8.24 | +16.5% |
| CTR | 5.80% | 6.02% | +3.8% |
| click→install | 22.66% | 19.54% | −13.8% |
| CPI | $0.538 | $0.700 | +30.1% |
| bROAS | 1.27 | 2.28 | +79.5% |
| wROAS | 0.95 | 0.97 | +2.1% |
| cROAS @ 24h | 1.10 | 1.21 | +10.0% |
| within-day payer rate (ours) | 4.60% | 4.46% | −3.0% |
| within-day ARPU (ours) | 0.462 | 0.573 | +24.0% |
| within-day ARPPU (ours) | 10.06 | 12.85 | +27.7% |
| levels — 9 days against 15, no comparison available | |||
| spend | $2,455.00 | $8,798.18 | — |
| impressions | 347,058 | 1,068,023 | — |
| clicks | 20,124 | 64,309 | — |
| installs (Meta) | 4,561 | 12,563 | — |
| registrations (ours) | 5,069 | 14,819 | — |
| booked | $3,125.48 | $20,071.29 | — |
| within-day | $2,344.02 | $8,491.30 | — |
| cohort @ 24h | $2,697.93 at 100% | $10,680.69 at 97% | — |
| within-day payers | 233 | 661 | — |
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.6369 | $0.9734 | $1.3199 | $13.07 | $17.26 | $21.87 | 16,703 |
Portfolio spend $9,239.32. B1 95.2%, the shared Nomad Node accounts 4.8% on five days of the fifteen; sections 3 onward are B1 alone.
Campaign split inside B1: Worldwide 83.8% over thirteen days, the retired earner 13.5% over three, the German buy 2.7% — never simultaneously live.
Impressions and installs both got dearer, and the unweighted hour count agrees: CPM higher in 20 of 24 hours, CPI in 22 of 24.
More people clicked and fewer of them installed: CTR +3.8%, click→install −13.8%, and the unweighted count agrees at 18 of 24 hours lower.
The sealed return barely moved; the booked one nearly doubled on age alone. July's nine days were the account's first, with nothing behind them.
The shared buy leads B1 on both comparable measures and trails on booked, which cannot compare — section 2.
Both accounts are ours: B1, act 1738541847343652, campaigns bailingxia_; and the two shared Nomad Node accounts, acts 835434076171203 and 3267486106793669, whose campaigns for this app are 0811_ and 0814_*. Those two accounts also carry other products and none of that is counted here. Spend comes from each account's own export; DNU, the daily new users, and the three revenue measures are our own records taken across everything each account's campaigns carried, which is why B1's row here sits a little above the ad-id-scoped totals in the sections below.
| account | spend | share | DNU | share | cost per DNU |
|---|---|---|---|---|---|
| B1 (ours) | $8,798.18 | 95.2% | 14,812 | 89.7% | $0.594 |
| Nomad Node (shared) | $441.14 | 4.8% | 1,710 | 10.3% | $0.258 |
| Portfolio | $9,239.32 | 100% | 16,522 | 100% | $0.559 |
| account | booked | bROAS | within-day | wROAS | cohort@24h | cROAS | within-day per DNU |
|---|---|---|---|---|---|---|---|
| B1 (ours) | $20,076.28 | 2.28 | $8,496.29 | 0.97 | $10,685.68 | 1.21 | $0.574 |
| Nomad Node (shared) | $921.51 | 2.09 | $669.74 | 1.52 | $825.68 | 1.87 | $0.392 |
| Portfolio | $20,997.78 | 2.27 | $9,166.03 | 0.99 | $11,511.36 | 1.25 | $0.555 |
The shared buy is five days inside fifteen, so its 4.8% is a start date. Its returns compare; its dollar total does not.
| UTC day | spend | DNU | booked | bROAS | within-day | wROAS | cohort@24h | cROAS |
|---|---|---|---|---|---|---|---|---|
| 2026-08-11 | $31.77 | 90 | $41.35 | 1.30 | $41.35 | 1.30 | $41.35 | 1.30 |
| 2026-08-12 | $92.26 | 479 | $119.29 | 1.29 | $119.29 | 1.29 | $156.90 | 1.70 |
| 2026-08-13 | $58.21 | 278 | $209.13 | 3.59 | $146.81 | 2.52 | $185.80 | 3.19 |
| 2026-08-14 | $92.48 | 354 | $190.26 | 2.06 | $100.13 | 1.08 | $150.66 | 1.63 |
| 2026-08-15 | $166.42 | 509 | $361.48 | 2.17 | $262.16 | 1.58 | $290.97 | 1.75 |
| window | $441.14 | 1,710 | $921.51 | 2.09 | $669.74 | 1.52 | $825.68 | 1.87 |
The shared buy is ramping: $31.77 of a $903.50 portfolio day on 08-11, $166.42 of $663.72 on 08-15. The window figures above under-read it.
Rank the two on within-day and cohort@24h, never on booked. Booked puts B1 ahead 2.28 to 2.09; the measures that cannot inherit reverse it.
The shared side buys new users at 43% of B1's price and each is worth less on landing. Cost is the larger effect.
Both accounts' revenue lands in one record, so only the portfolio row is account-blind (DECISION_LOG.md #64).
The shared accounts' export carries no Ad ID, campaign name, link clicks, leads or country, so sections 3 to 7 are B1 alone.
B1 alone, on the report clock. The axis is hour of day pooled across the fifteen days: each bucket holds fifteen clock hours, and the chart has 24 of them. Read it for diurnal shape and never as a sequence. Delivery columns are Meta's instrument on both sides of every ratio; payer rate, ARPU and ARPPU are ours on both sides, and the two install counts are never crossed. ours is our registrations in that bucket and cov is the bucket'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 | $239.04 | 22,438 | 10.65 | 1,577 | 7.03% | 333 | 21.1% | $0.718 | 375 | 100% | $651.65 | 2.73 | $335.62 | 1.40 | 28 | $341.32 | 1.43 |
| 1 | $250.46 | 27,641 | 9.06 | 1,892 | 6.84% | 351 | 18.6% | $0.714 | 425 | 100% | $721.63 | 2.88 | $595.44 | 2.38 | 24 | $595.44 | 2.38 |
| 2 | $285.49 | 32,047 | 8.91 | 2,202 | 6.87% | 447 | 20.3% | $0.639 | 547 | 100% | $796.26 | 2.79 | $343.85 | 1.20 | 29 | $349.83 | 1.23 |
| 3 | $302.99 | 34,129 | 8.88 | 2,301 | 6.74% | 469 | 20.4% | $0.646 | 537 | 100% | $469.78 | 1.55 | $185.22 | 0.61 | 22 | $193.97 | 0.64 |
| 4 | $322.29 | 35,715 | 9.02 | 2,355 | 6.59% | 490 | 20.8% | $0.658 | 571 | 100% | $652.63 | 2.02 | $453.25 | 1.41 | 21 | $462.07 | 1.43 |
| 5 | $354.29 | 38,659 | 9.16 | 2,507 | 6.48% | 545 | 21.7% | $0.650 | 627 | 100% | $1,043.44 | 2.95 | $285.60 | 0.81 | 25 | $295.14 | 0.83 |
| 6 | $358.35 | 37,771 | 9.49 | 2,507 | 6.64% | 559 | 22.3% | $0.641 | 647 | 100% | $883.99 | 2.47 | $376.03 | 1.05 | 30 | $388.90 | 1.09 |
| 7 | $409.82 | 42,203 | 9.71 | 2,923 | 6.93% | 546 | 18.7% | $0.751 | 683 | 100% | $787.86 | 1.92 | $488.12 | 1.19 | 33 | $522.80 | 1.28 |
| 8 | $381.53 | 43,624 | 8.75 | 2,866 | 6.57% | 561 | 19.6% | $0.680 | 664 | 100% | $907.05 | 2.38 | $450.46 | 1.18 | 34 | $469.22 | 1.23 |
| 9 | $414.48 | 47,914 | 8.65 | 3,021 | 6.31% | 618 | 20.5% | $0.671 | 729 | 100% | $829.62 | 2.00 | $503.87 | 1.22 | 32 | $548.86 | 1.32 |
| 10 | $436.85 | 45,764 | 9.55 | 2,923 | 6.39% | 599 | 20.5% | $0.729 | 712 | 100% | $1,033.61 | 2.37 | $371.44 | 0.85 | 26 | $471.62 | 1.08 |
| 11 | $349.95 | 35,965 | 9.73 | 2,325 | 6.46% | 467 | 20.1% | $0.749 | 567 | 94% | $656.65 | 1.88 | $214.54 | 0.61 | 23 | $415.51 | 1.19 |
| 12 | $354.56 | 34,248 | 10.35 | 2,280 | 6.66% | 450 | 19.7% | $0.788 | 533 | 93% | $541.60 | 1.53 | $399.57 | 1.13 | 22 | $402.63 | 1.14 |
| 13 | $360.17 | 36,162 | 9.96 | 2,569 | 7.10% | 519 | 20.2% | $0.694 | 624 | 94% | $827.00 | 2.30 | $299.72 | 0.83 | 32 | $361.39 | 1.00 |
| 14 | $500.57 | 215,418 | 2.32 | 5,645 | 2.62% | 600 | 10.6% | $0.834 | 684 | 96% | $862.02 | 1.72 | $371.20 | 0.74 | 30 | $464.48 | 0.93 |
| 15 | $437.62 | 45,330 | 9.65 | 3,433 | 7.57% | 663 | 19.3% | $0.660 | 798 | 95% | $892.07 | 2.04 | $264.41 | 0.60 | 30 | $302.08 | 0.69 |
| 16 | $445.64 | 49,307 | 9.04 | 3,444 | 6.98% | 662 | 19.2% | $0.673 | 785 | 94% | $953.80 | 2.14 | $260.12 | 0.58 | 31 | $525.69 | 1.18 |
| 17 | $478.36 | 53,090 | 9.01 | 3,539 | 6.67% | 683 | 19.3% | $0.700 | 833 | 95% | $1,051.51 | 2.20 | $399.90 | 0.84 | 31 | $455.21 | 0.95 |
| 18 | $452.63 | 46,126 | 9.81 | 3,119 | 6.76% | 646 | 20.7% | $0.701 | 759 | 93% | $1,084.03 | 2.39 | $376.90 | 0.83 | 28 | $486.79 | 1.08 |
| 19 | $413.01 | 37,081 | 11.14 | 2,636 | 7.11% | 564 | 21.4% | $0.732 | 671 | 92% | $995.29 | 2.41 | $474.80 | 1.15 | 39 | $583.04 | 1.41 |
| 20 | $334.21 | 30,141 | 11.09 | 2,287 | 7.59% | 511 | 22.3% | $0.654 | 601 | 95% | $899.05 | 2.69 | $211.27 | 0.63 | 21 | $444.60 | 1.33 |
| 21 | $332.25 | 26,807 | 12.39 | 2,158 | 8.05% | 481 | 22.3% | $0.691 | 537 | 95% | $882.51 | 2.66 | $283.44 | 0.85 | 27 | $412.17 | 1.24 |
| 22 | $305.94 | 25,657 | 11.92 | 1,987 | 7.74% | 405 | 20.4% | $0.755 | 455 | 95% | $828.35 | 2.71 | $321.54 | 1.05 | 22 | $723.76 | 2.37 |
| 23 | $277.68 | 24,786 | 11.20 | 1,813 | 7.31% | 394 | 21.7% | $0.705 | 455 | 94% | $819.89 | 2.95 | $225.01 | 0.81 | 21 | $464.19 | 1.67 |
| all | $8,798.18 | 1,068,023 | 8.24 | 64,309 | 6.02% | 12,563 | 19.5% | $0.700 | 14,819 | 97% | $20,071.29 | 2.28 | $8,491.30 | 0.97 | 661 | $10,680.69 | 1.21 |
⚠ Hour 14 is almost entirely one hour of one day, the rejected spill build on 2026-08-03 (Caveats).
Pooling fifteen days puts 21 to 39 within-day payers in every bucket, above the 16-payer bar (DECISION_LOG.md #37); no daily's hourly table can.
The cheap hours and the paying hours are the same block — 00 to 09 — and the account spends more outside it.
That coincidence is descriptive and not yet an instruction: these buckets pool four different buys, the earner's three days through the single-arm regime from 08-11.
Hours both periods delivered in, on the UTC clock: 00, 01, 02, 03, 04, 05, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23. Only the shared hours are compared. Each bucket pools that hour across the 15 days of the period, so the floor for reading one is 50 impressions a day, 750 across the period.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-08-01..2026-08-15 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 20 of 24 | 4 of 24 | p = 0.002 |
| CTR | 20 of 24 | 4 of 24 | p = 0.002 |
| click→install | 6 of 24 | 18 of 24 | p = 0.023 |
| CPI | 22 of 24 | 2 of 24 | p = 0.000 |
A sign test throws magnitude away and buys weight-free direction with it.
All four move together and all four clear 0.05: impressions dearer, clicks easier, installs per click harder, installs dearer, almost everywhere on the clock.
CPI rose in 22 of 24 hours on a much larger daily scale than July's; raising the budget here has done this before (DECISION_LOG.md #47).
Every shared hour, 2026-07-23..2026-07-31 → 2026-08-01..2026-08-15. 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 | 6,100 → 22,438 | 8.68 → 10.65 | 6.98% → 7.03% | 12.2% → 21.1% | 1.018 → 0.718 |
| 01 | 11,489 → 27,641 | 6.53 → 9.06 | 5.57% → 6.84% | 17.3% → 18.6% | 0.676 → 0.714 |
| 02 | 12,061 → 32,047 | 7.10 → 8.91 | 5.34% → 6.87% | 24.5% → 20.3% | 0.542 → 0.639 |
| 03 | 12,005 → 34,129 | 6.56 → 8.88 | 5.24% → 6.74% | 20.5% → 20.4% | 0.610 → 0.646 |
| 04 | 15,385 → 35,715 | 5.55 → 9.02 | 5.29% → 6.59% | 16.1% → 20.8% | 0.652 → 0.658 |
| 05 | 18,425 → 38,659 | 5.92 → 9.16 | 5.44% → 6.48% | 19.7% → 21.7% | 0.551 → 0.650 |
| 06 | 21,582 → 37,771 | 5.41 → 9.49 | 5.00% → 6.64% | 23.3% → 22.3% | 0.465 → 0.641 |
| 07 | 18,695 → 42,203 | 5.70 → 9.71 | 5.01% → 6.93% | 23.4% → 18.7% | 0.486 → 0.751 |
| 08 | 21,051 → 43,624 | 5.53 → 8.75 | 4.98% → 6.57% | 21.8% → 19.6% | 0.508 → 0.680 |
| 09 | 19,698 → 47,914 | 5.88 → 8.65 | 5.33% → 6.31% | 22.8% → 20.5% | 0.485 → 0.671 |
| 10 | 18,397 → 45,764 | 6.48 → 9.55 | 5.66% → 6.39% | 22.6% → 20.5% | 0.505 → 0.729 |
| 11 | 16,121 → 35,965 | 7.22 → 9.73 | 5.49% → 6.46% | 24.1% → 20.1% | 0.546 → 0.749 |
| 12 | 13,499 → 34,248 | 7.96 → 10.35 | 5.87% → 6.66% | 23.2% → 19.7% | 0.584 → 0.788 |
| 13 | 14,218 → 36,162 | 7.82 → 9.96 | 5.81% → 7.10% | 23.4% → 20.2% | 0.576 → 0.694 |
| 14 | 14,017 → 215,418 | 9.23 → 2.32 | 5.98% → 2.62% | 22.7% → 10.6% | 0.681 → 0.834 |
| 15 | 17,713 → 45,330 | 7.97 → 9.65 | 6.30% → 7.57% | 23.8% → 19.3% | 0.531 → 0.660 |
| 16 | 23,992 → 49,307 | 6.91 → 9.04 | 5.72% → 6.98% | 23.3% → 19.2% | 0.518 → 0.673 |
| 17 | 21,681 → 53,090 | 6.90 → 9.01 | 6.17% → 6.67% | 24.0% → 19.3% | 0.466 → 0.700 |
| 18 | 18,533 → 46,126 | 7.17 → 9.81 | 6.18% → 6.76% | 26.2% → 20.7% | 0.443 → 0.701 |
| 19 | 12,340 → 37,081 | 7.57 → 11.14 | 7.02% → 7.11% | 27.8% → 21.4% | 0.388 → 0.732 |
| 20 | 6,532 → 30,141 | 12.80 → 11.09 | 7.90% → 7.59% | 29.3% → 22.3% | 0.554 → 0.654 |
| 21 | 5,008 → 26,807 | 10.42 → 12.39 | 7.71% → 8.05% | 17.6% → 22.3% | 0.767 → 0.691 |
| 22 | 3,492 → 25,657 | 13.66 → 11.92 | 9.22% → 7.74% | 19.9% → 20.4% | 0.745 → 0.755 |
| 23 | 5,024 → 24,786 | 12.44 → 11.20 | 8.10% → 7.31% | 23.8% → 21.7% | 0.644 → 0.705 |
(i) The portfolio by country, 2026-08-01..2026-08-22. 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 | $2,624.45 | 22.1% | 461,238 | $5.69 | 5,592 | $0.469 | $2,275.08 | 0.87 | 394 |
| US | $1,773.21 | 14.9% | 42,416 | $41.81 | 1,045 | $1.697 | $2,381.20 | 1.34 | 195 |
| MX | $421.48 | 3.5% | 65,193 | $6.47 | 903 | $0.467 | $325.32 | 0.77 | 67 |
| GB | $409.90 | 3.4% | 17,778 | $23.06 | 443 | $0.925 | $464.87 | 1.13 | 37 |
| ID | $405.03 | 3.4% | 69,484 | $5.83 | 1,349 | $0.300 | $305.81 | 0.76 | 43 |
| DE | $399.57 | 3.4% | 9,796 | $40.79 | 242 | $1.651 | $258.73 | 0.65 | 27 |
| TR | $327.60 | 2.8% | 18,517 | $17.69 | 573 | $0.572 | $329.81 | 1.01 | 40 |
| PH | $297.54 | 2.5% | 123,287 | $2.41 | 1,122 | $0.265 | $221.77 | 0.75 | 37 |
| MY | $265.94 | 2.2% | 41,897 | $6.35 | 515 | $0.516 | $179.07 | 0.67 | 35 |
| AR | $249.64 | 2.1% | 22,711 | $10.99 | 570 | $0.438 | $181.66 | 0.73 | 30 |
| CA | $215.63 | 1.8% | 8,909 | $24.20 | 212 | $1.017 | $296.27 | 1.37 | 28 |
| AU | $206.11 | 1.7% | 6,986 | $29.51 | 150 | $1.374 | $156.27 | 0.76 | 20 |
216 further countries are not listed, $4,304.24 between them (36.2% of this block).
(ii) The same cut per account, 2026-08-01..2026-08-22.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $2,564.74 | 22.7% | 455,514 | $5.63 | 5,027 | $0.510 | $1,961.95 | 0.76 | 361 |
| US | $1,419.42 | 12.5% | 39,697 | $35.76 | 900 | $1.577 | $2,079.57 | 1.47 | 166 |
| MX | $413.97 | 3.7% | 64,430 | $6.43 | 748 | $0.553 | $254.16 | 0.61 | 58 |
| GB | $406.71 | 3.6% | 17,714 | $22.96 | 417 | $0.975 | $452.79 | 1.11 | 35 |
| DE | $396.94 | 3.5% | 9,743 | $40.74 | 235 | $1.689 | $258.73 | 0.65 | 27 |
| ID | $389.75 | 3.4% | 66,845 | $5.83 | 994 | $0.392 | $262.91 | 0.67 | 34 |
| TR | $318.91 | 2.8% | 18,206 | $17.52 | 484 | $0.659 | $272.84 | 0.86 | 30 |
| PH | $291.83 | 2.6% | 122,324 | $2.39 | 999 | $0.292 | $186.92 | 0.64 | 36 |
| MY | $259.67 | 2.3% | 41,384 | $6.27 | 458 | $0.567 | $168.31 | 0.65 | 32 |
| AR | $244.53 | 2.2% | 22,230 | $11.00 | 507 | $0.482 | $166.69 | 0.68 | 26 |
| CA | $212.70 | 1.9% | 8,842 | $24.06 | 197 | $1.080 | $234.76 | 1.10 | 24 |
| AU | $201.99 | 1.8% | 6,903 | $29.26 | 142 | $1.422 | $121.99 | 0.60 | 18 |
215 further countries are not listed, $4,198.33 between them (37.1% of this block).
Nomad Node
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $27.23 | 17.6% | 3,333 | $8.17 | 523 | $0.052 | $313.13 | 11.50 | 31 |
| ID | $12.55 | 8.1% | 2,419 | $5.19 | 355 | $0.035 | $42.90 | 3.42 | 9 |
| US | $10.50 | 6.8% | 138 | $76.09 | 73 | $0.144 | $149.78 | 14.26 | 19 |
| KR | $7.41 | 4.8% | 184 | $40.27 | 24 | $0.309 | $11.81 | 1.59 | 2 |
| BR | $5.99 | 3.9% | 458 | $13.08 | 225 | $0.027 | $44.00 | 7.35 | 8 |
| TH | $5.89 | 3.8% | 882 | $6.68 | 203 | $0.029 | $87.03 | 14.78 | 11 |
| TW | $5.59 | 3.6% | 239 | $23.39 | 45 | $0.124 | $115.83 | 20.72 | 8 |
| MX | $5.29 | 3.4% | 693 | $7.63 | 154 | $0.034 | $71.17 | 13.45 | 9 |
| MY | $5.14 | 3.3% | 457 | $11.25 | 57 | $0.090 | $10.76 | 2.09 | 3 |
| CO | $4.35 | 2.8% | 270 | $16.11 | 59 | $0.074 | $0.00 | 0.00 | 0 |
| CL | $3.97 | 2.6% | 252 | $15.75 | 51 | $0.078 | $15.42 | 3.88 | 3 |
| PH | $3.83 | 2.5% | 843 | $4.54 | 122 | $0.031 | $34.86 | 9.10 | 1 |
135 further countries are not listed, $57.16 between them (36.9% of this block).
KBM1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| US | $265.84 | 100.0% | 1,713 | $155.19 | 54 | $4.923 | $138.88 | 0.52 | 7 |
HR1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| US | $77.45 | 48.4% | 868 | $89.23 | 18 | $4.303 | $12.97 | 0.17 | 3 |
| IN | $32.48 | 20.3% | 2,391 | $13.59 | 42 | $0.773 | $0.00 | 0.00 | 2 |
| BR | $6.02 | 3.8% | 207 | $29.07 | 13 | $0.463 | $5.13 | 0.85 | 1 |
| TR | $5.12 | 3.2% | 95 | $53.88 | 5 | $1.024 | $0.00 | 0.00 | 0 |
| ID | $2.74 | 1.7% | 220 | $12.45 | 0 | — | $0.00 | 0.00 | 0 |
| CL | $2.55 | 1.6% | 40 | $63.75 | 1 | $2.550 | $0.00 | 0.00 | 0 |
| MX | $2.22 | 1.4% | 70 | $31.71 | 1 | $2.220 | $0.00 | 0.00 | 0 |
| TH | $2.00 | 1.2% | 149 | $13.42 | 5 | $0.400 | $0.00 | 0.00 | 0 |
| AU | $1.89 | 1.2% | 32 | $59.05 | 0 | — | $0.00 | 0.00 | 0 |
| PH | $1.88 | 1.2% | 120 | $15.66 | 1 | $1.880 | $0.00 | 0.00 | 0 |
| AR | $1.83 | 1.1% | 73 | $25.06 | 2 | $0.915 | $0.00 | 0.00 | 0 |
| IT | $1.74 | 1.1% | 27 | $64.43 | 0 | — | $0.00 | 0.00 | 0 |
95 further countries are not listed, $22.23 between them (13.9% of this block).
Reconciliation over the period. Every per-country cell is an allocation across hours; every total is measured. Each account's raked country total equals its bought spend for these days: B1 $11,319.47; Nomad Node $1,040.44; KBM1 $286.06; HR1 $160.14. The per-day reconciliations, naming the Meta days each figure was raked from, are on the daily pages.
B1 alone, pooled over the 24 hours both periods 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-07-23..2026-07-31 | $2,455.00 | 347,058 | 7.07 | 20,124 | 5.80% | 4,561 | 22.66% | $0.538 |
| 2026-08-01..2026-08-15 | $8,798.18 | 1,068,023 | 8.24 | 64,309 | 6.02% | 12,563 | 19.54% | $0.700 |
Pooling across hours weights each hour by what it delivered. The hourly pairing is the unweighted read of the same two periods; where they disagree, the mix moved.
Both reads agree: CPM up, CTR up, click→install down, CPI up, so the movement is not a mix effect at the hour grain.
The mix-neutral account line, $14.44 → $8.24 held to July's mix at $11.03, is about two campaigns and not the account (Caveats).
| measure | 2026-07-23..07-31 (9 days) | 2026-08-01..08-15 (15 days) | moves after the period closes? |
|---|---|---|---|
| booked | $3,125.48 (1.27) | $20,071.29 (2.28) | settled |
| within-day | $2,344.02 (0.95) | $8,491.30 (0.97) | never |
| cohort @ 24h | $2,697.93 (1.10) at 100% | $10,680.69 (1.21) at 97% | still rising on August |
Only the bracketed returns compare. The dollar figures are fifteen days against nine.
The three measures disagree; read within-day. Booked's 1.27 to 2.28 is barely buying, and the cohort row is a floor 3% short of coverage.
0.95 to 0.97 is not a movement at this account's daily variance: August's own days run 0.57 to 1.44 and July's 0.39 to 1.71.
Over one day this is a split by install date. Over a period it is a split by lag, because the same calendar day is a different age for every payer in it. The top row is the within-day total seen from the other side, which is the identity that makes the split worth drawing.
| installed | 2026-07-23..07-31 | 2026-08-01..08-15 |
|---|---|---|
| the same day | $2,344.02 (75.0%) | $8,491.30 (42.3%) |
| 1 day earlier | $349.19 (11.2%) | $2,885.75 (14.4%) |
| 2 days earlier | $285.86 (9.1%) | $1,744.37 (8.7%) |
| 3 days earlier | $74.17 (2.4%) | $1,240.99 (6.2%) |
| 4 days earlier | $45.44 (1.5%) | $1,161.25 (5.8%) |
| 5 days earlier | $21.04 (0.7%) | $839.19 (4.2%) |
| 6 days earlier | $5.76 (0.2%) | $874.69 (4.4%) |
| 7 days earlier | — | $961.35 (4.8%) |
Booked revenue arriving from its own day fell 75.0% to 42.3%, mostly on the account's age. Within-day survives it, counting only the same-day row.
August's rows stop at seven days and do not sum to its booked total: the remainder installed over a week out.
B1's campaigns alone.
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, which is what makes those comparable across campaigns, while revenue still needs 16 payers (DECISION_LOG.md #37, #48) and a campaign under that bar carries only a direction.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Worldwide | $7,372.94 | 83.8% | 922,354 | 86.4% | 7.99 | 51,973 | 5.63% | $0.142 | 9,319 | $0.791 | $6,791.42 | 0.92 | 501 |
| Earner (retired 08-03) | $1,188.49 | 13.5% | 140,595 | 13.2% | 8.45 | 11,988 | 8.53% | $0.099 | 3,151 | $0.377 | $1,530.10 | 1.29 | 144 |
| German (DE/AT/CH) | $236.75 | 2.7% | 5,074 | 0.5% | 46.66 | 348 | 6.86% | $0.680 | 87 | $2.721 | $111.08 | 0.47 | 9 |
Booking with no delivery, and excluded from every rate above: T1 (Jul 23) 0 installs (Meta), 3 registrations (ours), $0.00 within-day; T2 (Jul 23) 0 installs (Meta), 13 registrations (ours), $0.00 within-day; T3 (Jul 23) 0 installs (Meta), 42 registrations (ours), $0.00 within-day; T1 (Jul 25) 0 installs (Meta), 44 registrations (ours), $4.99 within-day; T2 (Jul 25) 1 installs (Meta), 68 registrations (ours), $0.00 within-day; T3 (Jul 25, India/SEA) 5 installs (Meta), 446 registrations (ours), $53.71 within-day. Counting them would put installs into the CPI denominator against spend that never happened.
Account CPM $14.44 → $8.24 (-42.9%). Held to 2026-07-23..2026-07-31's campaign mix it is $11.03 (-23.6%) — the difference between those two is the mix.
The earner's 13.5% is three days of fifteen, never sharing an hour with the worldwide campaign — 11:20 UTC on 08-03 against 12:44 (asset_performance_report_2026-08-03.md).
The earner is the cheapest line in the table, and both campaigns clear the 16-payer bar, so 1.29 and 0.92 read as levels (DECISION_LOG.md #48).
The German buy costs 5.8 times the account's CPM and 3.9 times its CPI, on 0.5% of impressions. Its 9 payers leave 0.47 a direction.
Retired campaigns are still booking, and the largest, T3 (Jul 25, India/SEA), stopped delivering three weeks ago.
The standing charts for this section plot spend share, CPM and CPI by campaign across the run. They are emitted per campaign into the tabs below.
Twenty assets took spend across the fifteen days, in three campaigns and across several budget regimes: the published dailies name E2-R6 through E2-R10 inside this period alone, and the earner ran its own before them. The tables in this section pool every one of those regimes, and the budget is a geography dial on this account, so no row below is regime-matched and none of them can settle a comparison between two creatives (DECISION_LOG.md #47, #48). What they can do is describe what the account bought and what came back.
The account's shape changed four times inside the period. It opened on the earner's single CBO ad set holding three creatives; on 08-03 a new campaign of five ad sets, one creative each at $100 a day, replaced it; the five-cell split test ran from 08-06; and from 08-11 20:22 UTC the account ran one arm at $450, bodysuit first and pool5 from 08-12 14:18 account time. Meta rejected spill on 08-03 and spill2 on 08-09 at 13:12 UTC, both under the Adult Sexual Solicitation standard, and both rejections are visible in the delivery table as arms whose spend stops.
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 | $2,655.20 | 328,656 | 8.08 | 21,358 | 6.50% | 3,459 | 16.20% | $0.768 |
E2/bodysuit | $1,692.76 | 161,754 | 10.47 | 9,610 | 5.94% | 2,234 | 23.25% | $0.758 |
E2/bikini | $1,177.14 | 106,771 | 11.02 | 7,293 | 6.83% | 1,524 | 20.90% | $0.772 |
E2/lounge | $992.65 | 85,015 | 11.68 | 5,717 | 6.72% | 952 | 16.65% | $1.043 |
earner/bodysuit | $650.16 | 82,258 | 7.90 | 6,798 | 8.26% | 1,823 | 26.82% | $0.357 |
E2/spill2 | $615.50 | 49,449 | 12.45 | 4,191 | 8.48% | 931 | 22.21% | $0.661 |
earner/bikini | $421.76 | 47,696 | 8.84 | 3,892 | 8.16% | 1,028 | 26.41% | $0.410 |
E2/mugshot | $129.97 | 8,061 | 16.12 | 774 | 9.60% | 144 | 18.60% | $0.903 |
earner/pool5 | $116.57 | 10,641 | 10.95 | 1,298 | 12.20% | 300 | 23.11% | $0.389 |
E2/spill | $109.72 | 182,648 | 0.60 | 3,030 | 1.66% | 75 | 2.48% | $1.463 |
DEww/bodysuit | $76.35 | 1,777 | 42.97 | 102 | 5.74% | 31 | 30.39% | $2.463 |
DE/turkish_mature | $56.25 | 1,034 | 54.40 | 70 | 6.77% | 14 | 20.00% | $4.018 |
DE/german_mature | $44.38 | 1,011 | 43.90 | 75 | 7.42% | 18 | 24.00% | $2.466 |
DEww/spill2 | $23.18 | 318 | 72.89 | 41 | 12.89% | 9 | 21.95% | $2.576 |
DE/german | $14.87 | 269 | 55.28 | 19 | 7.06% | 6 | 31.58% | $2.478 |
DEww/bikini | $8.24 | 205 | 40.20 | 16 | 7.80% | 3 | 18.75% | $2.747 |
DEww/pool5 | $6.10 | 307 | 19.87 | 15 | 4.89% | 2 | 13.33% | $3.050 |
DE/german_6s | $5.20 | 109 | 47.71 | 7 | 6.42% | 3 | 42.86% | $1.733 |
DE/latina_true | $1.79 | 36 | 49.72 | 3 | 8.33% | 1 | 33.33% | $1.790 |
DE/turkish_6s | $0.39 | 8 | 48.75 | 0 | 0.00% | 0 | — | — |
E2/spill is here as a record and not as a result: almost all of it is one hour on 08-03, before the build was rejected.
Three arms cost within 1.4 cents of each other per install on CPMs from 8.08 to 11.02; the cheapest-impression arm took the most spend.
E2/lounge is the one arm dearer per install than the pack, $1.043 against $0.758 to $0.772, on the lowest click→install at 16.65%.
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, 97% covered on this period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/pool5 | $6,082.02 | 2.29 (2.53) | $3,345.18 | 1.26 | $4,070.36 | 1.53 | 223 | 6.0% | 0.900 | 15.00 | 6.3% |
E2/bodysuit | $3,472.67 | 2.05 (2.14) | $1,475.38 | 0.87 | $1,863.98 | 1.10 | 121 | 4.9% | 0.601 | 12.19 | 9.5% |
E2/bikini | $1,345.76 | 1.14 (1.26) | $654.19 | 0.56 | $800.40 | 0.68 | 56 | 3.3% | 0.384 | 11.68 | 10.5% |
E2/lounge | $1,633.74 | 1.65 (1.94) | $756.03 | 0.76 | $853.26 | 0.86 | 53 | 5.4% | 0.764 | 14.26 | 19.9% |
earner/bodysuit | $2,894.64 | 4.45 (3.03) | $807.56 | 1.24 | $1,066.73 | 1.64 | 82 | 3.4% | 0.338 | 9.85 | 6.2% |
E2/spill2 | $1,341.57 | 2.18 (2.63) | $483.56 | 0.79 | $959.00 | 1.56 | 43 | 4.3% | 0.488 | 11.25 | 8.8% |
earner/bikini | $1,161.87 | 2.75 (1.57) | $593.30 | 1.41 | $634.25 | 1.50 | 48 | 3.9% | 0.482 | 12.36 | 9.6% |
E2/mugshot | $63.86 | 0.49 (0.63) | $17.02 | 0.13 | $22.92 | 0.18 | 3 | 1.9% | 0.106 | 5.67 | 37.1% |
earner/pool5 | $356.29 | 3.06 (2.45) | $129.23 | 1.11 | $135.82 | 1.17 | 14 | 3.6% | 0.329 | 9.23 | 27.5% |
E2/spill | $109.82 | 1.00 (0.33) | $60.05 | 0.55 | $104.19 | 0.95 | 2 | 2.2% | 0.675 | 30.03 | 90.2% |
DEww/bodysuit | $122.23 | 1.60 (0.84) | $24.75 | 0.32 | $24.75 | 0.32 | 3 | 10.7% | 0.884 | 8.25 | 37.6% |
DE/german_mature | $64.49 | 1.45 (1.33) | $58.74 | 1.32 | $58.74 | 1.32 | 4 | 18.2% | 2.670 | 14.69 | 43.2% |
DE/german | $66.92 | 4.50 (1.47) | $21.85 | 1.47 | $21.85 | 1.47 | 1 | 16.7% | 3.641 | 21.85 | 100.0% |
DEww/bikini | $102.42 | 12.43 (0.70) | $5.74 | 0.70 | $5.74 | 0.70 | 1 | 33.3% | 1.915 | 5.74 | 100.0% |
DE/turkish_mature | $5.74 | 0.10 (0.10) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DEww/spill2 · DEww/pool5 · DE/german_6s · DE/latina_true · DE/turkish_6s | $0.00 | 0.00 (0.00) | $0.00 | 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.
Seven rows clear the bar, which fifteen days of pooling bought and no daily in this series can.
Clearing the bar makes each row readable and does not rank them: the seven ran in different weeks and budgets, on audiences the auction chose.
E2/pool5 is the largest row here and among the least concentrated: 223 payers, top payer 6.3%, the highest payer rate and ARPPU of the seven.
E2/mugshot is the arm the account was right to cut — the only E2 arm whose delivery and revenue both sit at the bottom.
⚠ 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 | $2,733.85 | 21.4% | 14.3% | 64.3% | 23.4% |
E2/bodysuit | $1,701.60 | 27.2% | 13.5% | 59.3% | 29.5% |
E2/bikini | $1,181.40 | 28.4% | 11.7% | 59.9% | 27.3% |
E2/lounge | $995.23 | 17.8% | 11.5% | 70.7% | 14.5% |
earner/bodysuit | $555.79 | 30.4% | 5.5% | 64.0% | 3.1% |
E2/spill2 | $617.40 | 17.8% | 12.7% | 69.5% | 3.7% |
earner/bikini | $281.56 | 27.4% | 5.2% | 67.4% | 12.1% |
E2/mugshot | $130.18 | 31.7% | 5.4% | 62.8% | 29.3% |
earner/pool5 | $116.60 | 26.0% | 4.9% | 69.0% | 0.0% |
E2/spill | $110.05 | 21.5% | 4.5% | 74.0% | 0.0% |
DEww/bodysuit | $76.63 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/turkish_mature | $56.35 | 0.0% | 0.0% | 100.0% | — |
DE/german_mature | $44.50 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/spill2 | $23.18 | 0.0% | 0.0% | 100.0% | — |
DE/german | $14.91 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/bikini | $8.24 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/pool5 | $6.10 | 0.0% | 0.0% | 100.0% | — |
DE/german_6s | $5.33 | 0.0% | 0.0% | 100.0% | — |
DE/latina_true | $1.79 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_6s | $0.39 | 0.0% | 0.0% | 100.0% | — |
The three E2 arms with volume earn about twice as much in the United States as they spend there; the earner's arms do not.
The E2 arms and the earner's cannot be compared on revenue: they bought different countries, and country is most of the return here (DECISION_LOG.md #47).
Money is plotted per day and delivery per hour of day. Money-chart markers are hollow where the point sits under 16 payers, and assets under 20 installs are dropped from the composite and the region charts.
Three campaigns delivered in this period and each carries the same battery below, in the same order. The tabs hold depth; every claim this report makes is in sections 1 to 7 above or in Caveats.
Worldwide — every section below this line is Worldwide's: the day, the hours, the countries, the campaigns and the assets, counted on Worldwide's own ledger and its own accounts. Use the buttons above to switch.
$7,372.94, 83.8% of B1's spend, over the thirteen days from 08-03. Seven assets, all E2/*.
Hour of day pooled across the fifteen days of the period.
There is no matched-hours comparison for this campaign, which was built on 08-03: No hour was delivered in by both 2026-07-23..2026-07-31 and 2026-08-01..2026-08-15 above the impression floor, so there is no matched-hours comparison to make.
No pooled funnel either, for the same reason: No hour was delivered in by both 2026-07-23..2026-07-31 and 2026-08-01..2026-08-15, so there is no matched-hours funnel.
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 | $2,655.20 | 328,656 | 8.08 | 21,358 | 6.50% | 3,459 | 16.20% | $0.768 |
E2/bodysuit | $1,692.76 | 161,754 | 10.47 | 9,610 | 5.94% | 2,234 | 23.25% | $0.758 |
E2/bikini | $1,177.14 | 106,771 | 11.02 | 7,293 | 6.83% | 1,524 | 20.90% | $0.772 |
E2/lounge | $992.65 | 85,015 | 11.68 | 5,717 | 6.72% | 952 | 16.65% | $1.043 |
E2/spill2 | $615.50 | 49,449 | 12.45 | 4,191 | 8.48% | 931 | 22.21% | $0.661 |
E2/mugshot | $129.97 | 8,061 | 16.12 | 774 | 9.60% | 144 | 18.60% | $0.903 |
E2/spill | $109.72 | 182,648 | 0.60 | 3,030 | 1.66% | 75 | 2.48% | $1.463 |
Spend concentrates in one arm and the concentration grew: E2/pool5 took more than the next two together, and has run alone since 08-12.
E2/spill2 bought the cheapest installs of the surviving arms, at $0.661 and the highest CTR, and Meta stopped it on 08-09.
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, 96% covered on this period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
E2/pool5 | $6,082.02 | 2.29 (2.53) | $3,345.18 | 1.26 | $4,070.36 | 1.53 | 223 | 6.0% | 0.900 | 15.00 | 6.3% |
E2/bodysuit | $3,472.67 | 2.05 (2.14) | $1,475.38 | 0.87 | $1,863.98 | 1.10 | 121 | 4.9% | 0.601 | 12.19 | 9.5% |
E2/bikini | $1,345.76 | 1.14 (1.26) | $654.19 | 0.56 | $800.40 | 0.68 | 56 | 3.3% | 0.384 | 11.68 | 10.5% |
E2/lounge | $1,633.74 | 1.65 (1.94) | $756.03 | 0.76 | $853.26 | 0.86 | 53 | 5.4% | 0.764 | 14.26 | 19.9% |
E2/spill2 | $1,341.57 | 2.18 (2.63) | $483.56 | 0.79 | $959.00 | 1.56 | 43 | 4.3% | 0.488 | 11.25 | 8.8% |
E2/mugshot | $63.86 | 0.49 (0.63) | $17.02 | 0.13 | $22.92 | 0.18 | 3 | 1.9% | 0.106 | 5.67 | 37.1% |
E2/spill | $109.82 | 1.00 (0.33) | $60.05 | 0.55 | $104.19 | 0.95 | 2 | 2.2% | 0.675 | 30.03 | 90.2% |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
Payer rate separates these arms and cost per install does not: 6.0% down to 3.3%, against CPIs within a few cents of each other.
That is a description and not a creative verdict: the arms ran at different budgets in different weeks, and the budget selects the country mix.
⚠ 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 | $2,733.85 | 21.4% | 14.3% | 64.3% | 23.4% |
E2/bodysuit | $1,701.60 | 27.2% | 13.5% | 59.3% | 29.5% |
E2/bikini | $1,181.40 | 28.4% | 11.7% | 59.9% | 27.3% |
E2/lounge | $995.23 | 17.8% | 11.5% | 70.7% | 14.5% |
E2/spill2 | $617.40 | 17.8% | 12.7% | 69.5% | 3.7% |
E2/mugshot | $130.18 | 31.7% | 5.4% | 62.8% | 29.3% |
E2/spill | $110.05 | 21.5% | 4.5% | 74.0% | 0.0% |
India share and payer rate run opposite here: bikini buys the most India and pays least often, against section 4's India at 0.74 within-day.
Earner (retired 08-03) — every section below this line is Earner (retired 08-03)'s: the day, the hours, the countries, the campaigns and the assets, counted on Earner (retired 08-03)'s own ledger and its own accounts. Use the buttons above to switch.
$1,188.49, 13.5% of B1's spend, over three days. Three assets in one CBO ad set, all delivering together, which is why the ad is the level that separates here and the ad-set row would be the whole campaign.
Hour of day pooled across the fifteen days of the period. This campaign delivered on three of those fifteen days, so its buckets hold three clock hours each, and they are the first three days of the month.
Hours both periods delivered in, on the UTC clock: 00, 01, 02, 03, 06, 07, 08, 09, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23. 2026-08-01..2026-08-15 additionally delivered in 04, 05. Only the shared hours are compared. Each bucket pools that hour across the 15 days of the period, so the floor for reading one is 50 impressions a day, 750 across the period.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-08-01..2026-08-15 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 1 of 22 | 21 of 22 | p = 0.000 |
| CTR | 2 of 22 | 20 of 22 | p = 0.000 |
| click→install | 4 of 22 | 18 of 22 | p = 0.004 |
| CPI | 13 of 22 | 9 of 22 | p = 0.523 |
A sign test throws magnitude away and buys weight-free direction with it.
The one campaign in both periods says the opposite of the account: cheaper impressions against the account's dearer. The account rate is what August bought.
Cheaper impressions bought worse ones, and the two cancel: CPI is the one row of the four that does not separate.
Every shared hour, 2026-07-23..2026-07-31 → 2026-08-01..2026-08-15. 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 | 684 → 1,169 | 13.23 → 10.14 | 15.06% → 11.12% | 36.9% → 34.6% | 0.238 → 0.263 |
| 01 | 823 → 3,447 | 11.62 → 7.56 | 13.12% → 9.66% | 32.4% → 19.8% | 0.273 → 0.395 |
| 02 | 794 → 5,324 | 12.91 → 6.96 | 11.96% → 9.39% | 35.8% → 24.8% | 0.301 → 0.299 |
| 03 | 623 → 5,334 | 12.10 → 7.38 | 13.00% → 9.00% | 28.4% → 25.2% | 0.328 → 0.325 |
| 06 | 998 → 7,254 | 11.96 → 9.39 | 12.32% → 8.40% | 34.1% → 29.6% | 0.284 → 0.378 |
| 07 | 700 → 9,253 | 14.13 → 8.15 | 14.71% → 7.92% | 35.0% → 23.5% | 0.275 → 0.438 |
| 08 | 699 → 12,795 | 12.93 → 7.53 | 12.59% → 7.55% | 34.1% → 23.6% | 0.301 → 0.422 |
| 09 | 893 → 16,143 | 12.74 → 7.53 | 12.88% → 7.32% | 38.3% → 24.5% | 0.259 → 0.420 |
| 10 | 871 → 13,239 | 16.08 → 8.71 | 12.40% → 7.67% | 32.4% → 24.9% | 0.400 → 0.456 |
| 11 | 944 → 4,165 | 14.42 → 8.84 | 12.50% → 9.44% | 30.5% → 32.3% | 0.378 → 0.290 |
| 12 | 1,075 → 3,646 | 13.73 → 10.73 | 11.63% → 9.27% | 36.0% → 29.9% | 0.328 → 0.387 |
| 13 | 1,142 → 5,221 | 13.95 → 9.25 | 9.89% → 9.96% | 37.2% → 26.0% | 0.379 → 0.358 |
| 14 | 1,369 → 5,753 | 13.74 → 8.73 | 10.96% → 9.89% | 34.0% → 28.5% | 0.369 → 0.310 |
| 15 | 1,841 → 6,122 | 12.63 → 8.31 | 10.43% → 9.64% | 30.2% → 24.9% | 0.401 → 0.346 |
| 16 | 2,940 → 7,201 | 7.97 → 7.91 | 8.98% → 9.30% | 27.7% → 23.4% | 0.321 → 0.363 |
| 17 | 3,319 → 7,137 | 8.60 → 7.14 | 9.40% → 8.11% | 25.6% → 28.0% | 0.357 → 0.314 |
| 18 | 2,480 → 5,011 | 10.12 → 7.70 | 9.40% → 6.71% | 26.2% → 31.0% | 0.411 → 0.371 |
| 19 | 1,795 → 2,968 | 11.72 → 11.32 | 12.03% → 10.31% | 33.3% → 26.1% | 0.292 → 0.420 |
| 20 | 1,319 → 2,008 | 12.90 → 13.53 | 13.80% → 8.86% | 33.0% → 32.6% | 0.284 → 0.468 |
| 21 | 1,233 → 1,720 | 15.30 → 13.76 | 13.14% → 11.69% | 30.2% → 34.3% | 0.385 → 0.343 |
| 22 | 1,240 → 1,302 | 14.53 → 13.89 | 12.82% → 10.75% | 30.2% → 27.9% | 0.375 → 0.464 |
| 23 | 1,424 → 1,304 | 14.85 → 10.34 | 13.83% → 9.89% | 44.7% → 40.3% | 0.240 → 0.259 |
Pooled over the 22 hours both periods 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-07-23..2026-07-31 | $352.18 | 29,206 | 12.06 | 3,347 | 11.46% | 1,080 | 32.27% | $0.326 |
| 2026-08-01..2026-08-15 | $1,078.72 | 127,516 | 8.46 | 10,897 | 8.55% | 2,871 | 26.35% | $0.376 |
Pooling across hours weights each hour by what it delivered. The hourly pairing is the unweighted read of the same two periods; where they disagree, the mix moved.
Both reads agree and both fall, so this is not a mix effect — more impressions for less money, worse response from each.
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 |
|---|---|---|---|---|---|---|---|---|
earner/bodysuit | $650.16 | 82,258 | 7.90 | 6,798 | 8.26% | 1,823 | 26.82% | $0.357 |
earner/bikini | $421.76 | 47,696 | 8.84 | 3,892 | 8.16% | 1,028 | 26.41% | $0.410 |
earner/pool5 | $116.57 | 10,641 | 10.95 | 1,298 | 12.20% | 300 | 23.11% | $0.389 |
CBO put 55% of the set's money on one ad and 10% on another, in CPM order: pool5 had the best CTR, the worst CPM.
Cost per install is flat across the three at $0.357 to $0.410, so the concentration is not separating them on the metric the account buys.
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, 99% covered on this period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
earner/bodysuit | $2,894.64 | 4.45 (3.03) | $807.56 | 1.24 | $1,066.73 | 1.64 | 82 | 3.4% | 0.338 | 9.85 | 6.2% |
earner/bikini | $1,161.87 | 2.75 (1.57) | $593.30 | 1.41 | $634.25 | 1.50 | 48 | 3.9% | 0.482 | 12.36 | 9.6% |
earner/pool5 | $356.29 | 3.06 (2.45) | $129.23 | 1.11 | $135.82 | 1.17 | 14 | 3.6% | 0.329 | 9.23 | 27.5% |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
Two of the three clear the bar at 1.24 and 1.41 within-day, above every worldwide arm except pool5. earner/pool5, at 14 payers, is a direction.
The widest gap between our booked column and Meta's sits here: these three days are the oldest and inherit payments from before the period opened.
⚠ 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 |
|---|---|---|---|---|---|
earner/bodysuit | $555.79 | 30.4% | 5.5% | 64.0% | 3.1% |
earner/bikini | $281.56 | 27.4% | 5.2% | 67.4% | 12.1% |
earner/pool5 | $116.60 | 26.0% | 4.9% | 69.0% | 0.0% |
This campaign bought almost no United States and earned almost nothing there. Its returns came from a cheaper, more India-weighted mix than the worldwide arms'.
German (DE/AT/CH) — every section below this line is German (DE/AT/CH)'s: the day, the hours, the countries, the campaigns and the assets, counted on German (DE/AT/CH)'s own ledger and its own accounts. Use the buttons above to switch.
$236.75, 2.7% of B1's spend, 5,074 impressions, 87 installs. Two ad sets, DE/ and DEww/, and eleven assets between them.
Hour of day pooled across the fifteen days of the period.
No matched-hours comparison here either, and the reason is size: 5,074 impressions across fifteen days leave every bucket under the 750-impression floor. No hour was delivered in by both 2026-07-23..2026-07-31 and 2026-08-01..2026-08-15 above the impression floor, so there is no matched-hours comparison to make.
No pooled funnel either, for the same reason: No hour was delivered in by both 2026-07-23..2026-07-31 and 2026-08-01..2026-08-15, so there is no matched-hours funnel.
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 |
|---|---|---|---|---|---|---|---|---|
DEww/bodysuit | $76.35 | 1,777 | 42.97 | 102 | 5.74% | 31 | 30.39% | $2.463 |
DE/turkish_mature | $56.25 | 1,034 | 54.40 | 70 | 6.77% | 14 | 20.00% | $4.018 |
DE/german_mature | $44.38 | 1,011 | 43.90 | 75 | 7.42% | 18 | 24.00% | $2.466 |
DEww/spill2 | $23.18 | 318 | 72.89 | 41 | 12.89% | 9 | 21.95% | $2.576 |
DE/german | $14.87 | 269 | 55.28 | 19 | 7.06% | 6 | 31.58% | $2.478 |
DEww/bikini | $8.24 | 205 | 40.20 | 16 | 7.80% | 3 | 18.75% | $2.747 |
DEww/pool5 | $6.10 | 307 | 19.87 | 15 | 4.89% | 2 | 13.33% | $3.050 |
DE/german_6s | $5.20 | 109 | 47.71 | 7 | 6.42% | 3 | 42.86% | $1.733 |
DE/latina_true | $1.79 | 36 | 49.72 | 3 | 8.33% | 1 | 33.33% | $1.790 |
DE/turkish_6s | $0.39 | 8 | 48.75 | 0 | 0.00% | 0 | — | — |
DE/de_german_mature_6s | $0.00 | 0 | — | 0 | — | 0 | — | — |
Every row here is under twenty installs except the top one at 31 — read it for what Meta chose to deliver.
The cheapest impressions here are 2.4 times the account's CPM, and the rest run 40.20 to 72.89.
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, 99% covered on this period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
DEww/bodysuit | $122.23 | 1.60 (0.84) | $24.75 | 0.32 | $24.75 | 0.32 | 3 | 10.7% | 0.884 | 8.25 | 37.6% |
DE/turkish_mature | $5.74 | 0.10 (0.10) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german_mature | $64.49 | 1.45 (1.33) | $58.74 | 1.32 | $58.74 | 1.32 | 4 | 18.2% | 2.670 | 14.69 | 43.2% |
DEww/spill2 | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german | $66.92 | 4.50 (1.47) | $21.85 | 1.47 | $21.85 | 1.47 | 1 | 16.7% | 3.641 | 21.85 | 100.0% |
DEww/bikini | $102.42 | 12.43 (0.70) | $5.74 | 0.70 | $5.74 | 0.70 | 1 | 33.3% | 1.915 | 5.74 | 100.0% |
DEww/pool5 | $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 | — | — |
DE/latina_true | $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 | — | — | — | — |
DE/de_german_mature_6s | $29.27 | — (—) | $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.
No row clears the bar, and neither does the campaign at 9 payers: no German cell has ever cleared it in this account's history.
DEww/bikini reads 12.43 booked against Meta's 0.70: the smallest denominator in the report meeting an inherited payment, on $8.24 of spend.
⚠ 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 |
|---|---|---|---|---|---|
DEww/bodysuit | $76.63 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/turkish_mature | $56.35 | 0.0% | 0.0% | 100.0% | — |
DE/german_mature | $44.50 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/spill2 | $23.18 | 0.0% | 0.0% | 100.0% | — |
DE/german | $14.91 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/bikini | $8.24 | 0.0% | 0.0% | 100.0% | 0.0% |
DEww/pool5 | $6.10 | 0.0% | 0.0% | 100.0% | — |
DE/german_6s | $5.33 | 0.0% | 0.0% | 100.0% | — |
DE/latina_true | $1.79 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_6s | $0.39 | 0.0% | 0.0% | 100.0% | — |
Every row reads 0.0% India, 0.0% US, 100.0% other, which is the geo targeting working and leaves no mix comparison to make.
⚠⚠ The two periods are fifteen days and nine days long, and no level figure on this page compares to any other. Spend, impressions, clicks, installs, registrations and all three revenue totals are sums over unequal windows. August spending more than July is a statement about the calendar. Every comparison this report draws is a rate: CPM, CTR, click→install, CPI, the three returns, payer rate, ARPU and ARPPU, plus the sign tests, which give each hour one vote.
⚠ This is fifteen days of a thirty-one-day month. Nothing here is a monthly figure. The page will be reissued after 08-31 on the same sections, and its rates will move as the remaining sixteen days land.
⚠ The instrument gate reads 1.07 and is outside the documented 0.91 to 1.06 band. On B1's own clock over 08-01 to 08-15, Meta booked $18,775.98 against our $20,062.31, and our records are 1.07 of its number. It is quoted as measured and not rounded in. What it bounds is any sentence that sets our revenue against Meta's, including the bracketed bROAS figures in tables B and in section 4. It does not touch within-day or cohort at 24 hours, which never read Meta's revenue column at all, and every period-over-period claim on this page rests on those two.
⚠ The instrument gate is B1-scoped on both sides and that is what makes it a real reading. measures.py selects Meta rows by Ad ID against the run config's ads map and the shared accounts' ads are not in that map, so the 1.07 is B1's own revenue against B1's own Meta column. Dividing two accounts' revenue by one account's Meta figure is the error DECISION_LOG.md #64 records, and it is not present here.
⚠ Hour 14 of the pooled hourly table is dominated by one hour of one day. On 2026-08-03 the rejected spill build put 181,927 of its 182,648 impressions into a single account hour that maps to that bucket, at $95.44 of its $109.72 spend and returning nothing (DECISION_LOG.md #50). The bucket's CPM of 2.32, its CTR of 2.62% and its click→install of 10.6% are that hour and not the account's 14:00 behaviour. The sign tests are unaffected, because each hour counts once whatever it delivered.
⚠ The period spans several budget regimes and every per-asset table pools all of them. The dailies name E2-R6 through E2-R10 inside it, and the earner ran its own before those. The budget is a geography dial on this account, so two creatives measured across a budget change were compared on different audiences (DECISION_LOG.md #47). No row in section 7 is regime-matched, no comparison between two arms in it is decidable, and the regime-matched reads live in the dailies for the individual days.
⚠ The two accounts are on different clocks and neither offset is assumed. B1 is fixed at UTC-7, so its UTC day is stitched from two account days. The Nomad Node accounts run on UTC+0, so their reporting day is the UTC day and nothing is stitched; stitching them on B1's offset would move their spend seven hours. Both offsets were recovered from data, by correlating each account's hourly impressions against our own registrations from its campaigns, which are true UTC: B1 lands on seven hours at r = 0.878 and the shared accounts land on zero at r = 0.744.
The two accounts are ranked on within-day and cohort@24h, and never on booked. Booked counts everyone who paid inside the period whatever day they installed, so it credits B1 with a month of accumulated cohort and the shared buy, which opened on 08-11, with almost none.
The shared accounts enter section 2 and no other table on this page. Their export carries no Ad ID, no campaign name, no link clicks, no leads and no country, so no funnel, country or per-asset cut can be built from it. The only join key their files offer is the ad set name, which this report does not select on. Every table from section 3 down scopes to the ad ids in the run config and their traffic is not among them.
⚠ This page is measured entirely on the repaired payment instrument, and the dailies for 08-01 to 08-13 were not. The measure had been discarding any payment it could not tie to a person, which on some days was a fifth of them; joining the payment record to the registration feed on the account UUID both feeds carry recovers them, and that repair landed on 2026-08-16. Every within-day and cohort figure on this page is on the repaired basis. Comparing a figure here against one in a daily published before 08-14 is a comparison against a measurement defect. What remains unrecoverable is payments from people who registered before the registration push began on 2026-08-13 18:52 UTC.
⚠ The cohort figure is 97% covered and is a floor. Installs from the last hours of 08-15 had not lived 24 hours at the 2026-08-16 10:59 UTC payment cut. The 1.21 on this page can only rise. Every period-over-period claim above rests on within-day, which is sealed at midnight and needs no horizon.
The country section and table C are B1's own account day, seven hours offset from every other table. They are read for mix, never for level.
Section 4's Germany line, $350.84 at 0.62 within-day, is the closest thing to a German result the page carries, and it mixes the German campaign with German traffic the worldwide buy paid for.
The mix-neutral account line under the campaign table compares two campaigns and not the account. Its July side, $14.44, is the earner and the German buy alone, because the worldwide campaign did not exist in July and the July split-test campaigns did not deliver in August. The account's own July CPM was $7.07.
The FX table predates almost everything it prices. Revenue in 33 currencies is converted at rates pulled on 2026-08-02 and this period runs to 08-15. It is the last named candidate in the instrument reconciliation and it has never been tested.
Section 7's assets ran in three different campaign shapes and two of them were stopped by Meta. spill on 08-03 and spill2 on 08-09 were rejected under the Adult Sexual Solicitation standard. Their rows are truncated by an enforcement event, and neither is a result about the creative.
Whether the account's return actually moved between the two periods. Within-day went 0.95 to 0.97, against daily figures that ran 0.57 to 1.44 inside August alone, on periods that differ in length, campaign structure, creative set, budget and the number of ad accounts buying. The remaining sixteen days of August answer it on a single campaign shape and a single arm, which is the first stretch this account has ever had where nothing else changes.
Whether the diurnal money shape belongs to the hour or to the calendar. Hours 00 to 09 return 0.61 to 2.38 within-day and hours 10 to 23 return 0.58 to 1.15, but the fifteen days pooled into those buckets ran four different buys. Re-cutting the same hourly table inside the single-arm regime alone separates the two, and it costs one query against exports already on disk.
Whether the shared buy's 1.52 holds past five days. It is 4.8% of the period's spend on 1,710 new users, it leads B1 on both comparable returns, and it more than quintupled its daily spend across the five days, from $31.77 to $166.42. Five more days at the current split answer whether the return is the buy or its novelty, and its cost per new user of $0.258 makes the test cheap.
Whether the German buy is worth its price. Fifteen days produced 87 installs at $2.721 and 9 payers, so the campaign has not yet generated enough of a sample to fail, let alone to pass. Either it gets enough budget to reach the payer bar inside a month, or it stops; running it at 2.7% of spend costs little and settles nothing.
Nothing about ranking one creative against another. Seven assets cleared the payer bar over these fifteen days and not one of them shares a regime with another. The account's own decidability requirement, recorded in DECISION_LOG.md #48, sits far above the largest arm here at 3,459 installs.
This is fifteen days of a thirty-one-day month, and the two periods it compares are different lengths. August is measured to 2026-08-15 and this page will be reissued when the month closes. The comparison period is nine days against these fifteen, so every total here is arithmetic about the calendar and carries no comparison at all. What compares is the rates: CPM, CTR, click→install, CPI, the three returns, payer rate, ARPU and ARPPU.
The August close inherits sixteen more days on one campaign, one arm and one budget, which is the cleanest stretch this account has had. It can answer whether $0.700 per install and 0.97 within-day are where the account settles at this volume, and the monthly reissue should quote 08-15's frozen cohort figure, because this page's 1.21 at 97% coverage is still rising.
It also inherits a second ad account that will be a full month old. At that point booked stops flattering B1 for its age and the two accounts become comparable on all three measures, which is the first time a portfolio ranking will mean what it appears to mean.
Report clock UTC. B1's exports are stamped in its own account zone (UTC-7), so every B1 delivery row is restitched from two Meta days; the Nomad Node exports are stamped UTC+0 and are not restitched. The country tables and table C are not restitched and are labelled where they appear.
⚠ B1's own delivery export shows July spend this report does not count. From 07-15 to 07-21 the account ran the youguqi_ HeiHa test, $477.52, and on 07-30 and 07-31 it ran 0730_starfall_, 代投 for a third party, $71.62. Neither is this app's money. The comparison period 07-23 to 07-31 overlaps the second of those, so anyone reconciling this page against the raw account export will find $71.62 more spend inside the window than the tables carry.
| run | _runs/2026-08-16_periods/, generated by generate.sh |
|---|---|
| config | _runs/2026-08-16_receipt_series/run_config_full.json |
| period | 2026-08-01 → 2026-08-15 UTC, against 2026-07-23 → 2026-07-31 UTC |
| the account split, section 2 | _runs/2026-08-16_receipt_series/portfolio_split.py; the shared accounts' hourly exports under acct2/ |
| payment cut | 2026-08-16 10:59 UTC on the repaired join, and 2026-08-16 03:59 on the account's clock for the instrument gate |
| Meta exports | day and country×day pulled as one range; hourly per day, all 24 buckets verified on each |
| registrations | adjust_sink push merged onto the Telegram-parsed ledger; carries the account UUID the payment join needs |
| payments | in-app-purchase API, full history, repaired on the account UUID |
| FX | _runs/2026-08-02_today_read/fx_rates.json |
| instrument gate | measures_meta_gate_month_2026-08.txt, run on tz=META because the gate is invalid on any other clock |
bash _runs/2026-08-16_periods/generate.sh
The script runs measures, report_tables and report_charts over --from/--to in place of --day, once for the account and once per campaign tab, on the same config the dailies use. Nothing in this report computes anything: the instruments carry the gates, and a number that is wrong here is wrong in one of them.
The report clock is a UTC day, and a period is a run of them. 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 that account 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.
The hourly axis is hour of day pooled across the period. Fifteen days hold 360 hours and the table has 24 rows, so each bucket pools fifteen of them. An hour bucket must clear 50 impressions per day of the period to be compared, which is 750 here and 450 in the nine-day comparison period. Read the buckets for diurnal shape and never as a sequence.
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 period closes? |
|---|---|---|
| booked | revenue that arrived inside the period, whatever day its payer installed | settles about four hours after each midnight, then fixed. Meta's own number is this basis |
| within-day | installed on a day and paid before that day closed | never. Sealed at each midnight |
| cohort at H | each 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 period 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 period-over-period, 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.
Over a period, the booked split is keyed on lag in days. Within-day is still exactly the lag-0 row of it, which is the identity that makes the split worth drawing at all; the difference is that over one day a lag and a calendar date are the same thing and over fifteen days they are not.
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. That tie is made on the numeric user id where the payment carries one and on the account UUID where it does not. 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. Section 1's payer rate is within-day payers over our registrations and section 2's cost per new user is Meta's spend over our registrations, because the shared accounts' export carries no Meta install count at all.
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 period holds several of them, E2-R6 through E2-R10 among them, and every table in section 7 pools across all of them.
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, so separating two creatives by 20% needs an arm far larger than any this account has run.