One Meta ad account bought this app across 2026-07-27 to 2026-08-02 and spent $2,946.25 on it, against $520.97 in the week before; the second ad account did not begin buying until 2026-08-11 and enters no table here. The week took 6,686 installs at $0.441 against 589 at $0.884, booked $4,852.38 and sealed $3,369.01 inside the days that bought it. Our records read 1.05 of Meta's booked value on the account's own clock, inside the documented 0.91 to 1.06 band. Definitions, the report clock, the three revenue measures and what changes when the report covers a week are in the appendix.
| 2026-07-20..2026-07-26 | 2026-07-27..2026-08-02 | change | |
|---|---|---|---|
| spend | $520.97 | $2,946.25 | +465.5% |
| impressions | 35,281 | 433,178 | +1,127.8% |
| CPM | $14.77 | $6.80 | −54.0% |
| clicks | 3,024 | 27,468 | +808.3% |
| CTR | 8.57% | 6.34% | −26.0% |
| installs (Meta) | 589 | 6,686 | +1,035.1% |
| click→install | 19.48% | 24.34% | +25.0% |
| CPI | $0.884 | $0.441 | −50.1% |
| registrations (ours) | 649 | 7,375 | +1,036.2% |
| booked | $274.13 (0.53) | $4,852.38 (1.65) | +1,670.1% |
| within-day | $246.87 (0.47) | $3,369.01 (1.14) | +1,264.7% |
| cohort @ 24h | $285.65 (0.55) at 100% | $3,954.81 (1.34) at 100% | +1,284.5% |
| within-day payers | 26 | 323 | +297 |
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.4868 | $0.6562 | $0.8135 | $11.06 | $12.76 | $14.36 | 8,068 |
The week before's campaign split: Jul 25 arms T2 26.2%, T3 25.1%, T1 16.4%; Jul 23 arms T1 13.9%, T2 10.6%, T3 7.8%.
Not like for like: the earlier week bought on four of its seven days, so the levels carry a ramp and only the rates compare.
Impressions halved in price and most of that is mix. CPM $13.88 → $6.80; held to the earlier week's mix, $11.52. Section 5 decomposes it.
The account cleared break-even for the first time. Within-day return went 0.47 to 1.14, on 26 payers and then 323.
The largest buy did not exist a week earlier. The worldwide campaign took $1,370.42 in three days at a return of 1.36.
The axis is hour of day pooled across the seven days, 168 hours into 24 rows: read it for diurnal shape, never as a timeline.
ours is our registrations in that hour, cov 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 | $43.04 | 6,241 | 6.90 | 456 | 7.31% | 92 | 20.2% | $0.468 | 99 | 100% | $75.23 | 1.75 | $32.61 | 0.76 | 4 | $32.61 | 0.76 |
| 1 | $83.96 | 13,763 | 6.10 | 882 | 6.41% | 175 | 19.8% | $0.480 | 192 | 100% | $138.54 | 1.65 | $101.52 | 1.21 | 13 | $101.52 | 1.21 |
| 2 | $103.82 | 16,118 | 6.44 | 1,049 | 6.51% | 282 | 26.9% | $0.368 | 300 | 100% | $160.61 | 1.55 | $132.95 | 1.28 | 12 | $132.95 | 1.28 |
| 3 | $103.75 | 16,030 | 6.47 | 1,036 | 6.46% | 248 | 23.9% | $0.418 | 264 | 100% | $188.65 | 1.82 | $183.86 | 1.77 | 18 | $189.62 | 1.83 |
| 4 | $115.67 | 19,788 | 5.85 | 1,191 | 6.02% | 234 | 19.6% | $0.494 | 256 | 100% | $180.84 | 1.56 | $156.10 | 1.35 | 15 | $165.41 | 1.43 |
| 5 | $137.02 | 22,580 | 6.07 | 1,304 | 5.78% | 302 | 23.2% | $0.454 | 326 | 100% | $203.79 | 1.49 | $243.05 | 1.77 | 23 | $261.75 | 1.91 |
| 6 | $146.48 | 25,208 | 5.81 | 1,334 | 5.29% | 338 | 25.3% | $0.433 | 368 | 100% | $226.94 | 1.55 | $154.37 | 1.05 | 17 | $158.15 | 1.08 |
| 7 | $140.29 | 23,988 | 5.85 | 1,329 | 5.54% | 316 | 23.8% | $0.444 | 349 | 100% | $331.35 | 2.36 | $251.28 | 1.79 | 23 | $271.27 | 1.93 |
| 8 | $171.43 | 29,607 | 5.79 | 1,671 | 5.64% | 380 | 22.7% | $0.451 | 422 | 100% | $255.37 | 1.49 | $207.05 | 1.21 | 19 | $229.37 | 1.34 |
| 9 | $194.34 | 31,160 | 6.24 | 1,842 | 5.91% | 429 | 23.3% | $0.453 | 481 | 100% | $207.01 | 1.07 | $161.86 | 0.83 | 12 | $177.96 | 0.92 |
| 10 | $194.60 | 27,614 | 7.05 | 1,720 | 6.23% | 407 | 23.7% | $0.478 | 460 | 100% | $141.30 | 0.73 | $103.41 | 0.53 | 13 | $120.79 | 0.62 |
| 11 | $132.99 | 18,398 | 7.23 | 1,096 | 5.96% | 284 | 25.9% | $0.468 | 316 | 100% | $251.55 | 1.89 | $238.00 | 1.79 | 18 | $368.45 | 2.77 |
| 12 | $134.13 | 16,325 | 8.22 | 1,049 | 6.43% | 262 | 25.0% | $0.512 | 292 | 100% | $117.62 | 0.88 | $136.60 | 1.02 | 13 | $155.23 | 1.16 |
| 13 | $143.37 | 18,308 | 7.83 | 1,224 | 6.69% | 296 | 24.2% | $0.484 | 318 | 100% | $279.24 | 1.95 | $178.98 | 1.25 | 19 | $178.98 | 1.25 |
| 14 | $153.79 | 17,961 | 8.56 | 1,267 | 7.05% | 321 | 25.3% | $0.479 | 347 | 100% | $335.17 | 2.18 | $274.64 | 1.79 | 17 | $302.08 | 1.96 |
| 15 | $158.11 | 21,565 | 7.33 | 1,514 | 7.02% | 355 | 23.4% | $0.445 | 394 | 100% | $337.21 | 2.13 | $144.23 | 0.91 | 15 | $150.85 | 0.95 |
| 16 | $190.67 | 28,745 | 6.63 | 1,884 | 6.55% | 431 | 22.9% | $0.442 | 478 | 100% | $189.87 | 1.00 | $129.68 | 0.68 | 10 | $140.44 | 0.74 |
| 17 | $162.45 | 25,758 | 6.31 | 1,684 | 6.54% | 422 | 25.1% | $0.385 | 480 | 100% | $303.61 | 1.87 | $212.83 | 1.31 | 19 | $255.12 | 1.57 |
| 18 | $131.65 | 19,764 | 6.66 | 1,187 | 6.01% | 325 | 27.4% | $0.405 | 363 | 100% | $197.44 | 1.50 | $46.39 | 0.35 | 8 | $122.40 | 0.93 |
| 19 | $96.99 | 12,992 | 7.47 | 947 | 7.29% | 255 | 26.9% | $0.380 | 290 | 100% | $176.92 | 1.82 | $68.37 | 0.70 | 9 | $74.24 | 0.77 |
| 20 | $64.12 | 6,708 | 9.56 | 518 | 7.72% | 158 | 30.5% | $0.406 | 179 | 100% | $109.86 | 1.71 | $29.61 | 0.46 | 4 | $34.60 | 0.54 |
| 21 | $55.70 | 5,652 | 9.85 | 495 | 8.76% | 130 | 26.3% | $0.428 | 144 | 100% | $171.12 | 3.07 | $103.91 | 1.87 | 12 | $214.43 | 3.85 |
| 22 | $42.65 | 3,913 | 10.90 | 371 | 9.48% | 99 | 26.7% | $0.431 | 100 | 100% | $158.22 | 3.71 | $61.10 | 1.43 | 7 | $94.20 | 2.21 |
| 23 | $45.23 | 4,992 | 9.06 | 418 | 8.37% | 145 | 34.7% | $0.312 | 157 | 100% | $114.90 | 2.54 | $16.64 | 0.37 | 3 | $22.40 | 0.50 |
| all | $2,946.25 | 433,178 | 6.80 | 27,468 | 6.34% | 6,686 | 24.3% | $0.441 | 7,375 | 100% | $4,852.38 | 1.65 | $3,369.01 | 1.14 | 323 | $3,954.81 | 1.34 |
⚠ Payer counts per bucket run 3 to 23, seven days of that hour pooled into each. That is enough to read direction and not enough to read an hourly ARPPU as a rate. Read the all row for level and the buckets for shape.
Cohort coverage is 100% in every bucket. The youngest install had lived 325.4 hours at the payment cut, so the column is settled.
Volume peaks where price is lowest, buckets 4 to 10 holding the peak spend and the four cheapest CPMs of the UTC day.
Click rate and install rate both peak in the thin late buckets, and CPI still comes out flat, $0.312 to $0.512 across all 24.
Revenue by bucket shows shape only. Booked sits on the payment hour, so bucket 22's 3.71 counts payments made in that hour.
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 7 days of the period, so the floor for reading one is 50 impressions a day, 350 across the period.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-07-27..2026-08-02 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 0 of 24 | 24 of 24 | p = 0.000 |
| CTR | 4 of 24 | 20 of 24 | p = 0.002 |
| click→install | 19 of 24 | 5 of 24 | p = 0.007 |
| CPI | 2 of 21 | 19 of 21 | p = 0.000 |
A sign test throws magnitude away and buys weight-free direction with it.
Every shared hour, 2026-07-20..2026-07-26 → 2026-07-27..2026-08-02. 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 | 1,028 → 6,241 | 21.18 → 6.90 | 9.73% → 7.31% | 0.0% → 20.2% | — → 0.468 |
| 01 | 1,173 → 13,763 | 14.57 → 6.10 | 7.76% → 6.41% | 0.0% → 19.8% | — → 0.480 |
| 02 | 1,267 → 16,118 | 14.86 → 6.44 | 7.50% → 6.51% | 1.1% → 26.9% | 18.830 → 0.368 |
| 03 | 1,309 → 16,030 | 10.95 → 6.47 | 5.58% → 6.46% | 0.0% → 23.9% | — → 0.418 |
| 04 | 901 → 19,788 | 9.94 → 5.85 | 5.99% → 6.02% | 5.6% → 19.6% | 2.987 → 0.494 |
| 05 | 1,096 → 22,580 | 15.86 → 6.07 | 10.22% → 5.78% | 17.9% → 23.2% | 0.869 → 0.454 |
| 06 | 1,157 → 25,208 | 11.96 → 5.81 | 11.41% → 5.29% | 24.2% → 25.3% | 0.432 → 0.433 |
| 07 | 1,156 → 23,988 | 11.95 → 5.85 | 8.56% → 5.54% | 21.2% → 23.8% | 0.658 → 0.444 |
| 08 | 819 → 29,607 | 13.54 → 5.79 | 9.52% → 5.64% | 19.2% → 22.7% | 0.739 → 0.451 |
| 09 | 955 → 31,160 | 13.92 → 6.24 | 9.95% → 5.91% | 22.1% → 23.3% | 0.633 → 0.453 |
| 10 | 819 → 27,614 | 12.74 → 7.05 | 10.74% → 6.23% | 25.0% → 23.7% | 0.474 → 0.478 |
| 11 | 842 → 18,398 | 13.19 → 7.23 | 9.86% → 5.96% | 25.3% → 25.9% | 0.529 → 0.468 |
| 12 | 820 → 16,325 | 15.23 → 8.22 | 9.88% → 6.43% | 21.0% → 25.0% | 0.735 → 0.512 |
| 13 | 1,131 → 18,308 | 14.22 → 7.83 | 10.79% → 6.69% | 22.1% → 24.2% | 0.596 → 0.484 |
| 14 | 1,809 → 17,961 | 14.25 → 8.56 | 7.74% → 7.05% | 20.7% → 25.3% | 0.889 → 0.479 |
| 15 | 2,270 → 21,565 | 14.94 → 7.33 | 8.46% → 7.02% | 29.7% → 23.4% | 0.595 → 0.445 |
| 16 | 2,448 → 28,745 | 13.14 → 6.63 | 6.50% → 6.55% | 27.7% → 22.9% | 0.731 → 0.442 |
| 17 | 3,060 → 25,758 | 12.44 → 6.31 | 7.61% → 6.54% | 25.3% → 25.1% | 0.645 → 0.385 |
| 18 | 3,780 → 19,764 | 10.53 → 6.66 | 7.80% → 6.01% | 26.1% → 27.4% | 0.517 → 0.405 |
| 19 | 2,316 → 12,992 | 12.98 → 7.47 | 9.72% → 7.29% | 28.9% → 26.9% | 0.463 → 0.380 |
| 20 | 1,832 → 6,708 | 25.48 → 9.56 | 9.61% → 7.72% | 27.8% → 30.5% | 0.953 → 0.406 |
| 21 | 1,076 → 5,652 | 18.70 → 9.85 | 8.55% → 8.76% | 4.3% → 26.3% | 5.030 → 0.428 |
| 22 | 881 → 3,913 | 26.24 → 10.90 | 10.33% → 9.48% | 4.4% → 26.7% | 5.780 → 0.431 |
| 23 | 1,336 → 4,992 | 23.02 → 9.06 | 8.83% → 8.37% | 0.8% → 34.7% | 30.750 → 0.312 |
Impressions got cheaper in all twenty-four shared buckets, unweighted, and CPI fell in 19 of 21.
The click rate fell and the install rate more than made up for it: a wider, cheaper impression that gets clicked less and converts better.
The unweighted read agrees with the pooled one on all four, and neither separates mix from buying. Section 5's mix-neutral line does.
(i) The portfolio by country, 2026-07-27..2026-08-02. 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 | $1,645.83 | 55.9% | 349,134 | $4.71 | 4,107 | $0.401 | $1,643.43 | 1.00 | 251 |
| MX | $173.12 | 5.9% | 12,411 | $13.95 | 240 | $0.721 | $110.56 | 0.64 | 22 |
| US | $119.61 | 4.1% | 1,695 | $70.58 | 148 | $0.808 | $223.67 | 1.87 | 18 |
| DE | $76.36 | 2.6% | 1,444 | $52.86 | 47 | $1.625 | $101.66 | 1.33 | 3 |
| BR | $66.43 | 2.3% | 5,713 | $11.63 | 334 | $0.199 | $128.67 | 1.94 | 9 |
| GB | $57.47 | 2.0% | 1,188 | $48.38 | 62 | $0.927 | $0.00 | 0.00 | 0 |
| ID | $51.14 | 1.7% | 8,185 | $6.25 | 262 | $0.195 | $55.54 | 1.09 | 5 |
| TR | $47.82 | 1.6% | 2,428 | $19.69 | 107 | $0.447 | $51.96 | 1.09 | 7 |
| CH | $45.03 | 1.5% | 1,099 | $40.97 | 5 | $9.007 | $69.29 | 1.54 | 2 |
| MY | $35.99 | 1.2% | 3,392 | $10.61 | 107 | $0.336 | $48.19 | 1.34 | 4 |
| AR | $32.50 | 1.1% | 2,015 | $16.13 | 97 | $0.335 | $45.88 | 1.41 | 6 |
| AU | $31.05 | 1.1% | 508 | $61.08 | 24 | $1.294 | $22.08 | 0.71 | 1 |
184 further countries are not listed, $563.91 between them (19.1% of this block).
Absent from the table above, by name: Nomad Node, KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.
(ii) The same cut per account, 2026-07-27..2026-08-02.
B1
| cc | spend | share | impressions | CPM | registrations (ours) | cost/reg | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|
| IN | $1,645.83 | 55.9% | 349,134 | $4.71 | 4,107 | $0.401 | $1,643.43 | 1.00 | 251 |
| MX | $173.12 | 5.9% | 12,411 | $13.95 | 240 | $0.721 | $110.56 | 0.64 | 22 |
| US | $119.61 | 4.1% | 1,695 | $70.58 | 148 | $0.808 | $223.67 | 1.87 | 18 |
| DE | $76.36 | 2.6% | 1,444 | $52.86 | 47 | $1.625 | $101.66 | 1.33 | 3 |
| BR | $66.43 | 2.3% | 5,713 | $11.63 | 334 | $0.199 | $128.67 | 1.94 | 9 |
| GB | $57.47 | 2.0% | 1,188 | $48.38 | 62 | $0.927 | $0.00 | 0.00 | 0 |
| ID | $51.14 | 1.7% | 8,185 | $6.25 | 262 | $0.195 | $55.54 | 1.09 | 5 |
| TR | $47.82 | 1.6% | 2,428 | $19.69 | 107 | $0.447 | $51.96 | 1.09 | 7 |
| CH | $45.03 | 1.5% | 1,099 | $40.97 | 5 | $9.007 | $69.29 | 1.54 | 2 |
| MY | $35.99 | 1.2% | 3,392 | $10.61 | 107 | $0.336 | $48.19 | 1.34 | 4 |
| AR | $32.50 | 1.1% | 2,015 | $16.13 | 97 | $0.335 | $45.88 | 1.41 | 6 |
| AU | $31.05 | 1.1% | 508 | $61.08 | 24 | $1.294 | $22.08 | 0.71 | 1 |
184 further countries are not listed, $563.91 between them (19.1% of this block).
Nomad Node — no country block: it delivered nothing on this day, a measured zero.
KBM1 — no country block: it delivered nothing on this day, a measured zero.
HR1 — no country block: it delivered nothing on this day, a measured zero.
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 $2,946.25. The per-day reconciliations, naming the Meta days each figure was raked from, are on the daily pages.
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-20..2026-07-26 | $520.97 | 35,281 | 14.77 | 3,024 | 8.57% | 589 | 19.48% | $0.884 |
| 2026-07-27..2026-08-02 | $2,946.25 | 433,178 | 6.80 | 27,468 | 6.34% | 6,686 | 24.34% | $0.441 |
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 tests print p = 0.000 on 433,178 impressions against 35,281, and both agree with the unweighted sign tests in section 2. On samples this size a two-proportion test will separate differences that carry no operational meaning, so the number to look at is the size of the move: click→install rose 25.0% and CTR fell 26.0%.
| measure | 2026-07-20..2026-07-26 | 2026-07-27..2026-08-02 | moves after the period closes? |
|---|---|---|---|
| booked | $274.13 (0.53) | $4,852.38 (1.65) | settled |
| within-day | $246.87 (0.47) | $3,369.01 (1.14) | never |
| cohort @ 24h | $285.65 (0.55) at 100% | $3,954.81 (1.34) at 100% | frozen on both |
All three measures agree, and roughly tripled as returns. Both weeks are old enough that nothing in this table is still moving.
The gap between booked and within-day is the inherited cohort. The earlier week's buy was three days old and had almost none to inherit.
Over a single day this split is the same thing as splitting by install date. Over a week it is not, so the rows below count how long each payer had been installed at the moment they paid.
| installed | 2026-07-20..2026-07-26 | 2026-07-27..2026-08-02 |
|---|---|---|
| the same day | $246.87 (90.1%) | $3,369.01 (69.4%) |
| one day earlier | $23.70 (8.6%) | $698.50 (14.4%) |
| two days earlier | $3.56 (1.3%) | $343.59 (7.1%) |
| three days earlier | — | $135.10 (2.8%) |
| four days earlier | — | $127.62 (2.6%) |
| five days earlier | — | $92.50 (1.9%) |
| six days earlier | — | $65.67 (1.4%) |
| seven days earlier | — | $14.51 (0.3%) |
The top row of this table is the within-day total, seen from the other side. That is what makes the split worth drawing: the gap between booked and within-day is exactly the rest of the column.
The earlier week's split stops at two days: the buy was three days old, so its 90.1% same-day share is the account's age.
This week is the first with a tail. 69.4% of its booked revenue is same-day and the rest reaches out to seven days.
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 a direction and never a magnitude.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Earner (retired 08-03) | $1,370.42 | 46.5% | 150,993 | 34.9% | 9.08 | 13,791 | 9.13% | $0.099 | 3,814 | $0.359 | $1,857.42 | 1.36 | 176 |
| T3 (Jul 25, India/SEA) | $1,225.01 | 41.6% | 268,875 | 62.1% | 4.56 | 12,821 | 4.77% | $0.096 | 2,584 | $0.474 | $1,188.17 | 0.97 | 126 |
| T2 (Jul 25) | $132.11 | 4.5% | 9,808 | 2.3% | 13.47 | 565 | 5.76% | $0.234 | 182 | $0.726 | $95.73 | 0.72 | 12 |
| T1 (Jul 25) | $118.73 | 4.0% | 1,362 | 0.3% | 87.17 | 208 | 15.27% | $0.571 | 82 | $1.448 | $82.89 | 0.70 | 5 |
| German (DE/AT/CH) | $99.98 | 3.4% | 2,140 | 0.5% | 46.72 | 83 | 3.88% | $1.205 | 23 | $4.347 | $127.00 | 1.27 | 2 |
Booking with no delivery, and excluded from every rate above: T1 (Jul 23) 0 installs (Meta), 0 registrations (ours), $0.00 within-day; T2 (Jul 23) 0 installs (Meta), 1 registrations (ours), $0.00 within-day; T3 (Jul 23) 1 installs (Meta), 19 registrations (ours), $17.80 within-day. Counting them would put installs into the CPI denominator against spend that never happened.
Account CPM $13.88 → $6.80 (-51.0%). Held to 2026-07-20..2026-07-26's campaign mix it is $11.52 (-17.0%) — the difference between those two is the campaign mix.
Two thirds of the CPM fall is where the money went, and a third is cheaper buying inside the campaigns.
T3 and the earner differ twofold on impression price and not at all on cost per click, so their returns part after the click.
T1 is the account's price outlier and it is buying a country. Its tab shows where the money went.
Three of the five rows are under the 16-payer bar. The German 1.27 sits above T3's 0.97 in this table and does not beat it.
The standing chart set this build emits carries no campaign-level panel, so this section is its table alone. Spend share, CPM and CPI by campaign across the run are drawn per campaign inside the tabs below.
Five campaigns delivered. Tabs are ordered by spend descending and the largest is open by default. Every tab carries the same sections in the same order, and a campaign too thin for one says so in place.
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.
The worldwide campaign bailingxia_meituan_ww_cvr_260730: one CBO ad set holding three ads, all delivering together, worldwide, Android, optimised to Purchase. It went live on 2026-07-30 at 15:00 account time, so it took the largest share of the week's money in the last three of its seven days. The ad-set row here would be the whole campaign, so the level that separates is the ad and the tables below are per ad.
The campaign did not exist in the week before, so no hour is shared with it: there is no matched-hours comparison and no paired chart. Its own two hourly panels below are on the pooled hour-of-day axis, seven days to a bucket.
The campaign's country cut is table C below, on the account's own day. All three ads bought between 27.8% and 31.2% India and between 4.7% and 5.4% United States, the only three-way mix any campaign on the account ran this week.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Earner (retired 08-03) | $1,370.42 | 46.5% | 150,993 | 34.9% | 9.08 | 13,791 | 9.13% | $0.099 | 3,814 | $0.359 | $1,857.42 | 1.36 | 176 |
With no shared hour there is no matched-hours funnel for this campaign either. The row above is its whole week, and 176 payers puts it far above the 16-payer bar, which makes it the only campaign on the page whose return can be read as a magnitude.
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 | $874.50 | 97,592 | 8.96 | 8,965 | 9.19% | 2,536 | 28.29% | $0.345 |
earner/bikini | $382.24 | 43,722 | 8.74 | 3,523 | 8.06% | 921 | 26.14% | $0.415 |
earner/pool5 | $113.68 | 9,679 | 11.75 | 1,303 | 13.46% | 357 | 27.40% | $0.318 |
pool5 has the highest click rate in this campaign at 13.46% and its cheapest install at $0.318, on the smallest spend of the three. bodysuit took $874.50 of the campaign's $1,370.42; bikini bought the cheapest impressions at 8.74 and turned the smallest share of its clicks into installs, 26.14%.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
earner/bodysuit | $1,534.08 | 1.75 (1.94) | $1,169.03 | 1.34 | $1,486.79 | 1.70 | 115 | 4.2% | 0.426 | 10.17 | 4.3% |
earner/bikini | $542.27 | 1.42 (1.32) | $504.96 | 1.32 | $545.91 | 1.43 | 41 | 4.1% | 0.504 | 12.32 | 11.3% |
earner/pool5 | $197.88 | 1.74 (1.68) | $183.43 | 1.61 | $190.02 | 1.67 | 20 | 5.2% | 0.480 | 9.17 | 19.4% |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
All three clear the payer bar, and bodysuit is the least concentrated row on the page at 4.3% in its largest basket, against pool5's 19.4%.
⚠ The three cannot be ranked on this week. The budget moved inside it (Caveats), and the 08-02 daily's regime-matched cut orders them differently.
⚠ 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 | $907.67 | 31.2% | 5.3% | 63.5% | 5.9% |
earner/bikini | $393.59 | 28.4% | 4.7% | 66.9% | 14.2% |
earner/pool5 | $122.28 | 27.8% | 5.4% | 66.8% | 2.7% |
None of the three is a geography purchase. Their American revenue shares sit close to their American spend shares.
Delivery is plotted hourly, because CTR, click-to-install, CPI and CPM sit on hundreds to thousands of impressions an hour and carry shape. Money is plotted per day, because payers run 0 to 2 per asset per hour. There is deliberately no hourly revenue chart.
T3 (Jul 25, India/SEA) — every section below this line is T3 (Jul 25, India/SEA)'s: the day, the hours, the countries, the campaigns and the assets, counted on T3 (Jul 25, India/SEA)'s own ledger and its own accounts. Use the buttons above to switch.
The India and South-East Asia tier of the _260725 test, restructured on the evening of 2026-07-26 into one pooled ad set carrying a twelve-creative geo-matched pack (asset_performance_report_2026-07-27.md). Eighteen creatives are mapped to it, thirteen took spend in the week and three booked conversions on none. In a pooled ad set the optimiser chooses the allocation, so the per-asset cost columns below are contaminated by that choice and are not a test.
Hours both periods delivered in, on the UTC clock: 01, 02, 05, 06, 07, 08, 09, 10, 11, 13, 14, 15, 16, 17, 18, 19, 20, 23. 2026-07-27..2026-08-02 additionally delivered in 00, 03, 04, 12, 21, 22. Only the shared hours are compared. Each bucket pools that hour across the 7 days of the period, so the floor for reading one is 50 impressions a day, 350 across the period.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-07-27..2026-08-02 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 0 of 18 | 18 of 18 | p = 0.000 |
| CTR | 0 of 18 | 18 of 18 | p = 0.000 |
| click→install | 8 of 18 | 10 of 18 | p = 0.815 |
| CPI | 10 of 15 | 5 of 15 | p = 0.302 |
A sign test throws magnitude away and buys weight-free direction with it.
Every shared hour, 2026-07-20..2026-07-26 → 2026-07-27..2026-08-02. 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 |
|---|---|---|---|---|---|
| 01 | 562 → 8,793 | 10.34 → 4.20 | 7.12% → 4.51% | 0.0% → 16.1% | — → 0.577 |
| 02 | 441 → 9,151 | 9.12 → 4.10 | 9.07% → 4.26% | 0.0% → 27.9% | — → 0.344 |
| 05 | 447 → 16,238 | 6.06 → 4.32 | 10.07% → 4.88% | 15.6% → 17.9% | 0.387 → 0.494 |
| 06 | 694 → 18,925 | 7.64 → 4.27 | 10.81% → 4.17% | 28.0% → 21.5% | 0.252 → 0.475 |
| 07 | 559 → 16,286 | 8.59 → 4.28 | 9.48% → 4.25% | 17.0% → 20.8% | 0.533 → 0.484 |
| 08 | 397 → 19,211 | 10.93 → 4.47 | 11.34% → 4.47% | 22.2% → 20.2% | 0.434 → 0.497 |
| 09 | 481 → 17,614 | 10.56 → 4.63 | 7.69% → 4.68% | 18.9% → 20.4% | 0.726 → 0.486 |
| 10 | 359 → 16,336 | 8.91 → 4.89 | 10.03% → 5.05% | 33.3% → 21.3% | 0.267 → 0.454 |
| 11 | 409 → 13,449 | 10.29 → 4.70 | 8.56% → 4.74% | 22.9% → 22.1% | 0.526 → 0.448 |
| 13 | 435 → 10,998 | 8.48 → 4.87 | 10.34% → 4.93% | 17.8% → 19.7% | 0.461 → 0.501 |
| 14 | 703 → 9,901 | 7.07 → 4.94 | 8.11% → 4.83% | 12.3% → 18.4% | 0.710 → 0.556 |
| 15 | 1,091 → 12,626 | 7.33 → 4.58 | 8.62% → 5.31% | 29.8% → 19.3% | 0.286 → 0.448 |
| 16 | 1,237 → 17,642 | 9.05 → 4.46 | 7.44% → 5.09% | 21.7% → 20.2% | 0.560 → 0.435 |
| 17 | 1,913 → 14,528 | 7.21 → 4.72 | 7.68% → 5.13% | 27.2% → 23.4% | 0.345 → 0.394 |
| 18 | 2,513 → 11,540 | 7.21 → 4.63 | 7.92% → 4.92% | 26.6% → 24.6% | 0.342 → 0.381 |
| 19 | 985 → 8,193 | 8.26 → 5.13 | 10.76% → 5.18% | 32.1% → 24.3% | 0.239 → 0.408 |
| 20 | 514 → 3,381 | 9.05 → 5.90 | 10.70% → 4.67% | 38.2% → 25.3% | 0.221 → 0.499 |
| 23 | 442 → 2,264 | 7.26 → 4.69 | 8.82% → 4.06% | 0.0% → 8.7% | — → 1.326 |
Price and click rate both fell in all eighteen shared buckets and neither downstream rate moved: halving both leaves the install costing what it did.
The campaign's country cut is table C below, on the account's own day. Every asset in it that took enough spend to have a mix bought 100.0% India, so there is no country comparison to make inside this campaign; the geography is the campaign.
Pooled over the 18 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-20..2026-07-26 | $115.24 | 14,182 | 8.13 | 1,240 | 8.74% | 285 | 22.98% | $0.404 |
| 2026-07-27..2026-08-02 | $1,039.24 | 227,076 | 4.58 | 10,782 | 4.75% | 2,257 | 20.93% | $0.460 |
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.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T3 (Jul 25, India/SEA) | $1,225.01 | 41.6% | 268,875 | 62.1% | 4.56 | 12,821 | 4.77% | $0.096 | 2,584 | $0.474 | $1,188.17 | 0.97 | 126 |
On the shared hours the install got dearer as the impression got cheaper. The account's CPI fall comes from money moving, not from inside T3.
126 payers clears the bar, so 0.97 is a magnitude, against 1.03 for the same campaign a week earlier.
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 |
|---|---|---|---|---|---|---|---|---|
T3b/utility_6s | $284.10 | 46,024 | 6.17 | 2,404 | 5.22% | 453 | 18.84% | $0.627 |
T3b/sasian_spice5_15s | $282.77 | 67,051 | 4.22 | 2,182 | 3.25% | 452 | 20.71% | $0.626 |
T3b/sasian_bodysuit_10s | $273.98 | 53,295 | 5.14 | 2,711 | 5.09% | 490 | 18.07% | $0.559 |
T3b/sasian_bikini_6s | $188.68 | 57,949 | 3.26 | 3,138 | 5.42% | 755 | 24.06% | $0.250 |
T3b/sasian_bikini_10s | $119.74 | 34,260 | 3.50 | 1,835 | 5.36% | 329 | 17.93% | $0.364 |
T3b/sasian_fishnet_top_6s | $22.81 | 3,858 | 5.91 | 143 | 3.71% | 40 | 27.97% | $0.570 |
T3b/sasian_slip_dress | $21.47 | 2,684 | 8.00 | 222 | 8.27% | 37 | 16.67% | $0.580 |
T3b/sasian_bodysuit_6s | $12.74 | 1,452 | 8.77 | 45 | 3.10% | 12 | 26.67% | $1.062 |
T3b/sasian_offshoulder | $7.52 | 792 | 9.49 | 54 | 6.82% | 2 | 3.70% | $3.760 |
T3b/sasian_corset_6s | $6.74 | 1,095 | 6.16 | 70 | 6.39% | 9 | 12.86% | $0.749 |
T3b/sasian_fishnet_top_10s | $3.52 | 315 | 11.17 | 12 | 3.81% | 3 | 25.00% | $1.173 |
T3b/sasian_corset_10s | $0.89 | 83 | 10.72 | 5 | 6.02% | 1 | 20.00% | $0.890 |
T3b/sasian_jean_shorts | $0.05 | 17 | 2.94 | 0 | 0.00% | 0 | — | — |
T3b/control_15s#3 | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
T3b/utility_15s#3 | $0.00 | 0 | — | 0 | — | 0 | — | — |
T3b/control_10s#3 | $0.00 | 0 | — | 0 | — | 0 | — | — |
sasian_bikini_6s bought the cheapest impressions and the cheapest installs on the whole account, 3.26 and $0.250, and turned 24.06% of its clicks into installs. utility_6s, the incumbent clip the pack was built to beat, took the most money of any asset here and returned the dearest install of the five that matter, $0.627.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
T3b/utility_6s | $471.36 | 1.66 (1.19) | $190.58 | 0.67 | $272.76 | 0.96 | 25 | 4.8% | 0.369 | 7.62 | 12.4% |
T3b/sasian_spice5_15s | $357.31 | 1.26 (1.02) | $217.76 | 0.77 | $243.62 | 0.86 | 31 | 5.9% | 0.417 | 7.02 | 5.9% |
T3b/sasian_bodysuit_10s | $381.80 | 1.39 (1.40) | $259.21 | 0.95 | $295.23 | 1.08 | 30 | 5.3% | 0.455 | 8.64 | 16.0% |
T3b/sasian_bikini_6s | $485.03 | 2.57 (2.29) | $283.40 | 1.50 | $316.27 | 1.68 | 18 | 2.2% | 0.342 | 15.74 | 33.1% |
T3b/sasian_bikini_10s | $107.52 | 0.90 (1.12) | $79.46 | 0.66 | $79.46 | 0.66 | 7 | 1.9% | 0.215 | 11.35 | 52.0% |
T3b/sasian_fishnet_top_6s | $100.29 | 4.40 (5.79) | $88.78 | 3.89 | $88.78 | 3.89 | 8 | 15.1% | 1.675 | 11.10 | 46.6% |
T3b/sasian_slip_dress | $84.07 | 3.92 (1.90) | $35.18 | 1.64 | $44.49 | 2.07 | 4 | 8.0% | 0.704 | 8.79 | 43.2% |
T3b/sasian_bodysuit_6s | $33.81 | 2.65 (2.35) | $5.76 | 0.45 | $15.08 | 1.18 | 1 | 8.3% | 0.480 | 5.76 | 100.0% |
T3b/sasian_offshoulder | $0.00 | 0.00 (2.63) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T3b/sasian_corset_6s | $39.68 | 5.89 (1.37) | $24.50 | 3.63 | $24.50 | 3.63 | 1 | 9.1% | 2.227 | 24.50 | 100.0% |
T3b/sasian_fishnet_top_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T3b/sasian_corset_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T3b/sasian_jean_shorts | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
T3b/control_15s#3 | $0.00 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T3b/utility_15s#3 | $8.75 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T3b/control_10s#3 | $12.88 | — (—) | $3.56 | — | $3.56 | — | 1 | 50.0% | 1.780 | 3.56 | 100.0% |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
Four rows clear the payer bar and they order the pack: all three geo-matched clips beat utility_6s, the incumbent the pack was built to test.
⚠ The winner's revenue is a third of one person. sasian_bikini_6s bought the most installs in the pack and converted the smallest share of them.
⚠ 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 |
|---|---|---|---|---|---|
T3b/utility_6s | $271.18 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_spice5_15s | $275.01 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bodysuit_10s | $253.11 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bikini_6s | $182.76 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bikini_10s | $119.26 | 100.0% | 0.0% | -0.0% | 0.0% |
T3b/sasian_fishnet_top_6s | $14.85 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_slip_dress | $18.43 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bodysuit_6s | $8.94 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_offshoulder | $7.44 | 100.0% | 0.0% | 0.0% | — |
T3b/sasian_fishnet_top_10s | $2.95 | 100.0% | 0.0% | 0.0% | — |
Every asset here bought one country, which is what makes them comparable: geography held at 100.0% India, so a row difference is a creative difference.
Assets under 20 installs in the week are dropped from the composite and the region charts, and money-chart markers are hollow where the point sits under 16 payers.
T2 (Jul 25) — every section below this line is T2 (Jul 25)'s: the day, the hours, the countries, the campaigns and the assets, counted on T2 (Jul 25)'s own ledger and its own accounts. Use the buttons above to switch.
The Mexico tier of the _260725 test, rebuilt on the evening of 2026-07-26 as three equal ABO arms alongside a Spanish-language pack (asset_performance_report_2026-07-27.md). Eighteen creatives are mapped to it, four took spend in the week and one booked a conversion on none. This is the campaign that shrank: it was the largest by spend in the week before at 26.2% and is third here at 4.5%.
Hours both periods delivered in, on the UTC clock: 14, 15, 16, 17, 18. 2026-07-27..2026-08-02 additionally delivered in 01, 02, 03, 04, 05, 06, 07, 12, 13. 2026-07-20..2026-07-26 additionally delivered in 19, 20, 23. Only the shared hours are compared. Each bucket pools that hour across the 7 days of the period, so the floor for reading one is 50 impressions a day, 350 across the period.
Counting which way each shared hour points, which needs no weighting and asks only for a direction:
| metric | hours 2026-07-27..2026-08-02 ran higher | hours it ran lower | sign test |
|---|---|---|---|
| CPM | 2 of 5 | 3 of 5 | p = 1.000 |
| CTR | 2 of 5 | 3 of 5 | p = 1.000 |
| click→install | 3 of 5 | 2 of 5 | p = 1.000 |
| CPI | 0 of 5 | 5 of 5 | p = 0.062 |
A sign test throws magnitude away and buys weight-free direction with it.
Every shared hour, 2026-07-20..2026-07-26 → 2026-07-27..2026-08-02. 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 |
|---|---|---|---|---|---|
| 14 | 678 → 418 | 15.74 → 14.23 | 4.72% → 6.94% | 21.9% → 27.6% | 1.524 → 0.744 |
| 15 | 675 → 606 | 17.24 → 10.83 | 7.26% → 5.28% | 24.5% → 34.4% | 0.970 → 0.596 |
| 16 | 755 → 595 | 13.38 → 15.19 | 3.84% → 5.04% | 44.8% → 43.3% | 0.777 → 0.695 |
| 17 | 789 → 678 | 18.64 → 11.70 | 6.08% → 5.01% | 29.2% → 26.5% | 1.051 → 0.881 |
| 18 | 874 → 667 | 14.20 → 14.84 | 6.41% → 6.15% | 25.0% → 34.1% | 0.886 → 0.707 |
Only five hours are shared. CPI fell in all five and still reads p = 0.062: five buckets cannot reach 0.05 however cleanly they point.
The campaign's country cut is table C below, on the account's own day. Every asset in it bought 0.0% India and 0.0% United States, so all of its money went to the countries the Mexico tier targets and none of it can be compared against the India or worldwide tabs on geography.
Pooled over the 5 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-20..2026-07-26 | $59.53 | 3,771 | 15.79 | 214 | 5.67% | 60 | 28.04% | $0.992 |
| 2026-07-27..2026-08-02 | $39.38 | 2,964 | 13.29 | 166 | 5.60% | 55 | 33.13% | $0.716 |
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.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T2 (Jul 25) | $132.11 | 4.5% | 9,808 | 2.3% | 13.47 | 565 | 5.76% | $0.234 | 182 | $0.726 | $95.73 | 0.72 | 12 |
This campaign's pooled row is the only one on the page that moves down, and its whole-week CPI is $0.726 against the earlier week's $1.167.
Twelve payers is under the bar, so the 0.72 is a direction, up from 0.35 on four payers a week earlier.
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 |
|---|---|---|---|---|---|---|---|---|
T2b/utility_6s#3 | $48.71 | 2,524 | 19.30 | 154 | 6.10% | 56 | 36.36% | $0.870 |
T2b/latina_es_bikini_10s | $40.27 | 4,472 | 9.00 | 274 | 6.13% | 90 | 32.85% | $0.447 |
T2b/utility_15s#2 | $39.47 | 2,427 | 16.26 | 120 | 4.94% | 29 | 24.17% | $1.361 |
T2b/latina_es_bikini_6s | $3.66 | 385 | 9.51 | 17 | 4.42% | 6 | 35.29% | $0.610 |
T2b/latina_es_slip_dress | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
The Spanish-language pack buys impressions at roughly half the incumbent's price, and the tab's cheapest install is the pack's.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
T2b/utility_6s#3 | $5.71 | 0.12 (0.12) | $5.71 | 0.12 | $5.71 | 0.12 | 1 | 1.8% | 0.102 | 5.71 | 100.0% |
T2b/latina_es_bikini_10s | $108.25 | 2.69 (2.67) | $68.40 | 1.70 | $71.80 | 1.78 | 9 | 10.0% | 0.760 | 7.60 | 33.2% |
T2b/utility_15s#2 | $28.43 | 0.72 (0.86) | $21.63 | 0.55 | $25.03 | 0.63 | 2 | 6.9% | 0.746 | 10.81 | 73.6% |
T2b/latina_es_bikini_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T2b/latina_es_slip_dress | $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.
Nothing here clears the payer bar. latina_es_bikini_10s carries the campaign's revenue almost by itself, a direction worth another week of budget.
⚠ 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 |
|---|---|---|---|---|---|
T2b/utility_6s#3 | $28.73 | 0.0% | 0.0% | 100.0% | 0.0% |
T2b/latina_es_bikini_10s | $25.30 | 0.0% | 0.0% | 100.0% | 0.0% |
T2b/utility_15s#2 | $21.11 | 0.0% | 0.0% | 100.0% | 0.0% |
T2b/latina_es_bikini_6s | $1.22 | 0.0% | 0.0% | 100.0% | — |
No American money in or out, so nothing in this tab is the effect the last column exists to catch.
Assets under 20 installs in the week are dropped from the composite and the region charts, and money-chart markers are hollow where the point sits under 16 payers.
T1 (Jul 25) — every section below this line is T1 (Jul 25)'s: the day, the hours, the countries, the campaigns and the assets, counted on T1 (Jul 25)'s own ledger and its own accounts. Use the buttons above to switch.
The premium-country tier of the _260725 test. It was switched back on late on 2026-07-26 with four of its six arms cut and the surviving two raised from $15 to $60 a day, to test whether its impression price would fall once it was funded at real volume (asset_performance_report_2026-07-27.md). Six creatives are mapped and two delivered.
No hour was delivered in by both 2026-07-20..2026-07-26 and 2026-07-27..2026-08-02 above the impression floor, so there is no matched-hours comparison to make. On 1,362 impressions for the whole week, a bucket that pools seven days still averages under 60. There is no paired chart under this heading for the same reason there is no paired table.
The campaign's country cut is table C below, on the account's own day. This is the only tab on the page whose assets bought a large share of the United States, 46.4% and 42.4% of their own spend.
No hour was delivered in by both 2026-07-20..2026-07-26 and 2026-07-27..2026-08-02, so there is no matched-hours funnel for this campaign. Its whole week is the row below, and the campaign's own row from the earlier week's table is quoted under it in prose.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| T1 (Jul 25) | $118.73 | 4.0% | 1,362 | 0.3% | 87.17 | 208 | 15.27% | $0.571 | 82 | $1.448 | $82.89 | 0.70 | 5 |
Funding it did not make its impressions cheaper. A week earlier: $85.20, 1,229 impressions, CPM 69.32. More money bought about as many at 87.17.
Everything after the impression improved. CTR went 11.88% to 15.27% and installs 20 to 82, so cost per install fell from $4.260 to $1.448.
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 |
|---|---|---|---|---|---|---|---|---|
T1b/utility_6s#2 | $59.96 | 674 | 88.96 | 117 | 17.36% | 52 | 44.44% | $1.153 |
T1b/utility_15s | $58.77 | 688 | 85.42 | 91 | 13.23% | 29 | 31.87% | $2.027 |
The account's dearest impressions, and its best click-to-install rates above $50 of spend. The premium geography converts better and costs far more to reach.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
T1b/utility_6s#2 | $77.90 | 1.30 (1.12) | $66.93 | 1.12 | $66.93 | 1.12 | 3 | 5.8% | 1.287 | 22.31 | 52.3% |
T1b/utility_15s | $15.96 | 0.27 (0.27) | $15.96 | 0.27 | $15.96 | 0.27 | 2 | 6.7% | 0.532 | 7.98 | 68.8% |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
Five payers across the tab, and the larger row's revenue is half one person. Its ARPPU of 22.31 is the page's highest above two payers.
⚠ 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 |
|---|---|---|---|---|---|
T1b/utility_6s#2 | $38.90 | 0.0% | 46.4% | 53.6% | 100.0% |
T1b/utility_15s | $37.63 | 0.0% | 42.4% | 57.6% | 68.8% |
⚠ This is the clearest geography purchase on the page. Whatever these two rows say about the creative, they say first which country was bought.
Assets under 20 installs in the week are dropped from the composite and the region charts, and money-chart markers are hollow where the point sits under 16 payers.
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.
The _260729 German-area campaign, opened on 2026-07-30 with two ad sets at $75 a day each: DE and AT together, and Switzerland on its own (asset_performance_report_2026-07-30.md). Twenty-nine creatives are mapped and twenty-four delivered, five of them taking more than $4 for the week. This is the account's smallest buy and the source of its most expensive installs.
No hour was delivered in by both 2026-07-20..2026-07-26 and 2026-07-27..2026-08-02 above the impression floor, so there is no matched-hours comparison to make and no paired chart: the campaign did not exist in the earlier week, and 2,140 impressions across seven days leaves every pooled bucket far under the 350 floor.
The campaign's country cut is table C below, on the account's own day. Its countries are the account-level table's DE at $77.22 and CH at $45.19, and section 3 records that all of each one's revenue is a single payer.
No hour was delivered in by both 2026-07-20..2026-07-26 and 2026-07-27..2026-08-02, so there is no matched-hours funnel for this campaign. Its whole week is the row below.
| campaign | spend | share | impressions | impr share | CPM | clicks | CTR | cost/click | installs | CPI | within-day | wROAS | payers |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| German (DE/AT/CH) | $99.98 | 3.4% | 2,140 | 0.5% | 46.72 | 83 | 3.88% | $1.205 | 23 | $4.347 | $127.00 | 1.27 | 2 |
⚠ Two payers. The 1.27 is two people. It takes section 5's second-highest return on the page's smallest sample, at its highest cost per install.
A click rate of 3.88% is the lowest of the five campaigns, and with impressions at $46.72 that is what produces a $4.347 install.
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 |
|---|---|---|---|---|---|---|---|---|
DE/de_german_mature_6s | $27.40 | 456 | 60.09 | 29 | 6.36% | 8 | 27.59% | $3.425 |
DE/ch_arab_gulf_6s | $21.75 | 498 | 43.67 | 12 | 2.41% | 1 | 8.33% | $21.750 |
DE/de_arab_gulf_10s | $5.79 | 83 | 69.76 | 5 | 6.02% | 1 | 20.00% | $5.790 |
DE/ch_german_10s | $5.20 | 102 | 50.98 | 2 | 1.96% | 0 | 0.00% | — |
DE/ch_latina_true_6s | $5.17 | 106 | 48.77 | 1 | 0.94% | 0 | 0.00% | — |
DE/de_turkish_mature_10s | $4.71 | 126 | 37.38 | 5 | 3.97% | 3 | 60.00% | $1.570 |
DE/german_6s | $4.07 | 100 | 40.70 | 6 | 6.00% | 0 | 0.00% | — |
DE/ch_german_mature_6s | $4.02 | 103 | 39.03 | 0 | 0.00% | 0 | — | — |
DE/turkish_mature | $3.95 | 57 | 69.30 | 4 | 7.02% | 4 | 100.00% | $0.987 |
DE/ch_arab_gulf_10s | $3.66 | 146 | 25.07 | 1 | 0.68% | 1 | 100.00% | $3.660 |
DE/german_mature | $3.01 | 89 | 33.82 | 6 | 6.74% | 2 | 33.33% | $1.505 |
DE/de_arab_gulf_6s | $2.51 | 26 | 96.54 | 2 | 7.69% | 1 | 50.00% | $2.510 |
DE/german | $1.90 | 60 | 31.67 | 0 | 0.00% | 0 | — | — |
DE/latina_true | $1.36 | 21 | 64.76 | 1 | 4.76% | 0 | 0.00% | — |
DE/de_turkish_10s | $1.16 | 30 | 38.67 | 6 | 20.00% | 2 | 33.33% | $0.580 |
DE/de_pool5_15s | $1.04 | 21 | 49.52 | 0 | 0.00% | 0 | — | — |
DE/de_asian_mature_6s | $0.99 | 37 | 26.76 | 0 | 0.00% | 0 | — | — |
DE/ch_german_mature_10s | $0.76 | 30 | 25.33 | 1 | 3.33% | 0 | 0.00% | — |
DE/turkish_6s | $0.54 | 24 | 22.50 | 1 | 4.17% | 0 | 0.00% | — |
DE/ch_latina_mature_10s | $0.42 | 7 | 60.00 | 0 | 0.00% | 0 | — | — |
DE/de_latina_true_6s | $0.25 | 5 | 50.00 | 0 | 0.00% | 0 | — | — |
DE/ch_german_6s | $0.14 | 4 | 35.00 | 0 | 0.00% | 0 | — | — |
DE/ch_asian_mature_6s | $0.11 | 3 | 36.67 | 1 | 33.33% | 0 | 0.00% | — |
DE/ch_pool5_15s | $0.07 | 4 | 17.50 | 0 | 0.00% | 0 | — | — |
Twenty-four creatives share $99.98 and two take half of it. Every rate below those two runs on double-digit impressions and none is readable.
The Swiss arm's most expensive install is $21.750, and that row is the campaign's second-largest by spend.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
DE/de_german_mature_6s | $101.66 | 3.71 (3.36) | $92.36 | 3.37 | $98.10 | 3.58 | 1 | 12.5% | 11.545 | 92.36 | 100.0% |
DE/ch_arab_gulf_6s | $47.02 | 2.16 (2.15) | $34.65 | 1.59 | $47.02 | 2.16 | 1 | 50.0% | 17.323 | 34.65 | 100.0% |
DE/de_arab_gulf_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/ch_german_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_latina_true_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_turkish_mature_10s | $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 | — | — | — | — |
DE/ch_german_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/turkish_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/ch_arab_gulf_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/de_arab_gulf_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/latina_true | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_turkish_10s | $0.00 | 0.00 (4.30) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/de_pool5_15s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_asian_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_german_mature_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/turkish_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_latina_mature_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_latina_true_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_german_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_asian_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_pool5_15s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
The 16-payer bar (#37): any row above whose payer count is under 16 is a direction and never a magnitude.
Two rows have revenue and each is one person at 100.0%. Those two baskets are the campaign's entire $127.00; twenty-two creatives returned nothing.
⚠ 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 |
|---|---|---|---|---|---|
DE/de_german_mature_6s | $27.40 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/ch_arab_gulf_6s | $21.75 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/de_arab_gulf_10s | $5.79 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_10s | $5.20 | 0.0% | 0.0% | 100.0% | — |
DE/ch_latina_true_6s | $5.17 | 0.0% | 0.0% | 100.0% | — |
DE/de_turkish_mature_10s | $4.71 | 0.0% | 0.0% | 100.0% | — |
DE/german_6s | $4.07 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_mature_6s | $4.02 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_mature | $3.95 | 0.0% | 0.0% | 100.0% | — |
DE/ch_arab_gulf_10s | $3.66 | 0.0% | 0.0% | 100.0% | — |
DE/german_mature | $3.01 | 0.0% | 0.0% | 100.0% | — |
DE/de_arab_gulf_6s | $2.51 | 0.0% | 0.0% | 100.0% | — |
DE/german | $1.90 | 0.0% | 0.0% | 100.0% | — |
DE/latina_true | $1.36 | 0.0% | 0.0% | 100.0% | — |
DE/de_turkish_10s | $1.16 | 0.0% | 0.0% | 100.0% | — |
DE/de_pool5_15s | $1.04 | 0.0% | 0.0% | 100.0% | — |
DE/de_asian_mature_6s | $0.99 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_mature_10s | $0.76 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_6s | $0.54 | 0.0% | 0.0% | 100.0% | — |
DE/ch_latina_mature_10s | $0.42 | 0.0% | 0.0% | 100.0% | — |
DE/de_latina_true_6s | $0.25 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_6s | $0.14 | 0.0% | 0.0% | 100.0% | — |
DE/ch_asian_mature_6s | $0.11 | 0.0% | 0.0% | 100.0% | — |
DE/ch_pool5_15s | $0.07 | 0.0% | 0.0% | 100.0% | — |
This table's working column is blank. The campaign targets neither India nor the United States, and DE against CH is not a column here.
No asset in this campaign reached 20 installs in the week, so the composite and the region charts have nothing to draw and the money-chart markers are hollow throughout.
The account's whole creative inventory for the week, across all five campaigns, in the three standing tables. A row here can be ranked against another row in the same campaign and not against a row in a different one: inside a campaign the geography is held, so cost columns compare; across campaigns the geography is the treatment and the auction chose the audience, which is what DECISION_LOG.md
#48 bars ranking creatives on.
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 | $874.50 | 97,592 | 8.96 | 8,965 | 9.19% | 2,536 | 28.29% | $0.345 |
earner/bikini | $382.24 | 43,722 | 8.74 | 3,523 | 8.06% | 921 | 26.14% | $0.415 |
T3b/utility_6s | $284.10 | 46,024 | 6.17 | 2,404 | 5.22% | 453 | 18.84% | $0.627 |
T3b/sasian_spice5_15s | $282.77 | 67,051 | 4.22 | 2,182 | 3.25% | 452 | 20.71% | $0.626 |
T3b/sasian_bodysuit_10s | $273.98 | 53,295 | 5.14 | 2,711 | 5.09% | 490 | 18.07% | $0.559 |
T3b/sasian_bikini_6s | $188.68 | 57,949 | 3.26 | 3,138 | 5.42% | 755 | 24.06% | $0.250 |
T3b/sasian_bikini_10s | $119.74 | 34,260 | 3.50 | 1,835 | 5.36% | 329 | 17.93% | $0.364 |
earner/pool5 | $113.68 | 9,679 | 11.75 | 1,303 | 13.46% | 357 | 27.40% | $0.318 |
T1b/utility_6s#2 | $59.96 | 674 | 88.96 | 117 | 17.36% | 52 | 44.44% | $1.153 |
T1b/utility_15s | $58.77 | 688 | 85.42 | 91 | 13.23% | 29 | 31.87% | $2.027 |
T2b/utility_6s#3 | $48.71 | 2,524 | 19.30 | 154 | 6.10% | 56 | 36.36% | $0.870 |
T2b/latina_es_bikini_10s | $40.27 | 4,472 | 9.00 | 274 | 6.13% | 90 | 32.85% | $0.447 |
T2b/utility_15s#2 | $39.47 | 2,427 | 16.26 | 120 | 4.94% | 29 | 24.17% | $1.361 |
DE/de_german_mature_6s | $27.40 | 456 | 60.09 | 29 | 6.36% | 8 | 27.59% | $3.425 |
T3b/sasian_fishnet_top_6s | $22.81 | 3,858 | 5.91 | 143 | 3.71% | 40 | 27.97% | $0.570 |
DE/ch_arab_gulf_6s | $21.75 | 498 | 43.67 | 12 | 2.41% | 1 | 8.33% | $21.750 |
T3b/sasian_slip_dress | $21.47 | 2,684 | 8.00 | 222 | 8.27% | 37 | 16.67% | $0.580 |
T3b/sasian_bodysuit_6s | $12.74 | 1,452 | 8.77 | 45 | 3.10% | 12 | 26.67% | $1.062 |
T3b/sasian_offshoulder | $7.52 | 792 | 9.49 | 54 | 6.82% | 2 | 3.70% | $3.760 |
T3b/sasian_corset_6s | $6.74 | 1,095 | 6.16 | 70 | 6.39% | 9 | 12.86% | $0.749 |
DE/de_arab_gulf_10s | $5.79 | 83 | 69.76 | 5 | 6.02% | 1 | 20.00% | $5.790 |
DE/ch_german_10s | $5.20 | 102 | 50.98 | 2 | 1.96% | 0 | 0.00% | — |
DE/ch_latina_true_6s | $5.17 | 106 | 48.77 | 1 | 0.94% | 0 | 0.00% | — |
DE/de_turkish_mature_10s | $4.71 | 126 | 37.38 | 5 | 3.97% | 3 | 60.00% | $1.570 |
DE/german_6s | $4.07 | 100 | 40.70 | 6 | 6.00% | 0 | 0.00% | — |
DE/ch_german_mature_6s | $4.02 | 103 | 39.03 | 0 | 0.00% | 0 | — | — |
DE/turkish_mature | $3.95 | 57 | 69.30 | 4 | 7.02% | 4 | 100.00% | $0.987 |
DE/ch_arab_gulf_10s | $3.66 | 146 | 25.07 | 1 | 0.68% | 1 | 100.00% | $3.660 |
T2b/latina_es_bikini_6s | $3.66 | 385 | 9.51 | 17 | 4.42% | 6 | 35.29% | $0.610 |
T3b/sasian_fishnet_top_10s | $3.52 | 315 | 11.17 | 12 | 3.81% | 3 | 25.00% | $1.173 |
DE/german_mature | $3.01 | 89 | 33.82 | 6 | 6.74% | 2 | 33.33% | $1.505 |
DE/de_arab_gulf_6s | $2.51 | 26 | 96.54 | 2 | 7.69% | 1 | 50.00% | $2.510 |
DE/german | $1.90 | 60 | 31.67 | 0 | 0.00% | 0 | — | — |
DE/latina_true | $1.36 | 21 | 64.76 | 1 | 4.76% | 0 | 0.00% | — |
DE/de_turkish_10s | $1.16 | 30 | 38.67 | 6 | 20.00% | 2 | 33.33% | $0.580 |
DE/de_pool5_15s | $1.04 | 21 | 49.52 | 0 | 0.00% | 0 | — | — |
DE/de_asian_mature_6s | $0.99 | 37 | 26.76 | 0 | 0.00% | 0 | — | — |
T3b/sasian_corset_10s | $0.89 | 83 | 10.72 | 5 | 6.02% | 1 | 20.00% | $0.890 |
DE/ch_german_mature_10s | $0.76 | 30 | 25.33 | 1 | 3.33% | 0 | 0.00% | — |
DE/turkish_6s | $0.54 | 24 | 22.50 | 1 | 4.17% | 0 | 0.00% | — |
DE/ch_latina_mature_10s | $0.42 | 7 | 60.00 | 0 | 0.00% | 0 | — | — |
DE/de_latina_true_6s | $0.25 | 5 | 50.00 | 0 | 0.00% | 0 | — | — |
DE/ch_german_6s | $0.14 | 4 | 35.00 | 0 | 0.00% | 0 | — | — |
DE/ch_asian_mature_6s | $0.11 | 3 | 36.67 | 1 | 33.33% | 0 | 0.00% | — |
DE/ch_pool5_15s | $0.07 | 4 | 17.50 | 0 | 0.00% | 0 | — | — |
T3b/sasian_jean_shorts | $0.05 | 17 | 2.94 | 0 | 0.00% | 0 | — | — |
T3a/utility_sexy#2 | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
T2a/control_sexy#2 | $0.00 | 0 | — | 0 | — | 0 | — | — |
T2b/latina_es_slip_dress | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
T3b/control_15s#3 | $0.00 | 0 | — | 0 | — | 1 | — | $0.000 |
T3b/utility_15s#3 | $0.00 | 0 | — | 0 | — | 0 | — | — |
T3b/control_10s#3 | $0.00 | 0 | — | 0 | — | 0 | — | — |
Impression price runs 3.26 to 88.96 here and geography is what moves it. Click-to-install, 3.70% to 100.00%, is a country before it is a clip.
Eight assets took more than $100 and they set the account's shape. Below them the impression counts are two digits and the rates are noise.
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 period. Report clock UTC.
| asset | booked | bROAS (Meta) | within-day | wROAS | cohort@H | cROAS | payers | payer% | ARPU | ARPPU | largest payer |
|---|---|---|---|---|---|---|---|---|---|---|---|
earner/bodysuit | $1,534.08 | 1.75 (1.94) | $1,169.03 | 1.34 | $1,486.79 | 1.70 | 115 | 4.2% | 0.426 | 10.17 | 4.3% |
earner/bikini | $542.27 | 1.42 (1.32) | $504.96 | 1.32 | $545.91 | 1.43 | 41 | 4.1% | 0.504 | 12.32 | 11.3% |
T3b/utility_6s | $471.36 | 1.66 (1.19) | $190.58 | 0.67 | $272.76 | 0.96 | 25 | 4.8% | 0.369 | 7.62 | 12.4% |
T3b/sasian_spice5_15s | $357.31 | 1.26 (1.02) | $217.76 | 0.77 | $243.62 | 0.86 | 31 | 5.9% | 0.417 | 7.02 | 5.9% |
T3b/sasian_bodysuit_10s | $381.80 | 1.39 (1.40) | $259.21 | 0.95 | $295.23 | 1.08 | 30 | 5.3% | 0.455 | 8.64 | 16.0% |
T3b/sasian_bikini_6s | $485.03 | 2.57 (2.29) | $283.40 | 1.50 | $316.27 | 1.68 | 18 | 2.2% | 0.342 | 15.74 | 33.1% |
T3b/sasian_bikini_10s | $107.52 | 0.90 (1.12) | $79.46 | 0.66 | $79.46 | 0.66 | 7 | 1.9% | 0.215 | 11.35 | 52.0% |
earner/pool5 | $197.88 | 1.74 (1.68) | $183.43 | 1.61 | $190.02 | 1.67 | 20 | 5.2% | 0.480 | 9.17 | 19.4% |
T1b/utility_6s#2 | $77.90 | 1.30 (1.12) | $66.93 | 1.12 | $66.93 | 1.12 | 3 | 5.8% | 1.287 | 22.31 | 52.3% |
T1b/utility_15s | $15.96 | 0.27 (0.27) | $15.96 | 0.27 | $15.96 | 0.27 | 2 | 6.7% | 0.532 | 7.98 | 68.8% |
T2b/utility_6s#3 | $5.71 | 0.12 (0.12) | $5.71 | 0.12 | $5.71 | 0.12 | 1 | 1.8% | 0.102 | 5.71 | 100.0% |
T2b/latina_es_bikini_10s | $108.25 | 2.69 (2.67) | $68.40 | 1.70 | $71.80 | 1.78 | 9 | 10.0% | 0.760 | 7.60 | 33.2% |
T2b/utility_15s#2 | $28.43 | 0.72 (0.86) | $21.63 | 0.55 | $25.03 | 0.63 | 2 | 6.9% | 0.746 | 10.81 | 73.6% |
DE/de_german_mature_6s | $101.66 | 3.71 (3.36) | $92.36 | 3.37 | $98.10 | 3.58 | 1 | 12.5% | 11.545 | 92.36 | 100.0% |
T3b/sasian_fishnet_top_6s | $100.29 | 4.40 (5.79) | $88.78 | 3.89 | $88.78 | 3.89 | 8 | 15.1% | 1.675 | 11.10 | 46.6% |
DE/ch_arab_gulf_6s | $47.02 | 2.16 (2.15) | $34.65 | 1.59 | $47.02 | 2.16 | 1 | 50.0% | 17.323 | 34.65 | 100.0% |
T3b/sasian_slip_dress | $84.07 | 3.92 (1.90) | $35.18 | 1.64 | $44.49 | 2.07 | 4 | 8.0% | 0.704 | 8.79 | 43.2% |
T3b/sasian_bodysuit_6s | $33.81 | 2.65 (2.35) | $5.76 | 0.45 | $15.08 | 1.18 | 1 | 8.3% | 0.480 | 5.76 | 100.0% |
T3b/sasian_offshoulder | $0.00 | 0.00 (2.63) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T3b/sasian_corset_6s | $39.68 | 5.89 (1.37) | $24.50 | 3.63 | $24.50 | 3.63 | 1 | 9.1% | 2.227 | 24.50 | 100.0% |
DE/de_arab_gulf_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/ch_german_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_latina_true_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_turkish_mature_10s | $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 | — | — | — | — |
DE/ch_german_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/turkish_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/ch_arab_gulf_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T2b/latina_es_bikini_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
T3b/sasian_fishnet_top_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german_mature | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/de_arab_gulf_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/german | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/latina_true | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_turkish_10s | $0.00 | 0.00 (4.30) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/de_pool5_15s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_asian_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
T3b/sasian_corset_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | 0.0% | 0.000 | — | — |
DE/ch_german_mature_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/turkish_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_latina_mature_10s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/de_latina_true_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_german_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_asian_mature_6s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
DE/ch_pool5_15s | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
T3b/sasian_jean_shorts | $0.00 | 0.00 (0.00) | $0.00 | 0.00 | $0.00 | 0.00 | 0 | — | — | — | — |
T3a/utility_sexy#2 | $36.43 | — (—) | $17.80 | — | $17.80 | — | 2 | 10.5% | 0.937 | 8.90 | 80.0% |
T2a/control_sexy#2 | $0.00 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T2b/latina_es_slip_dress | $0.00 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T3b/control_15s#3 | $0.00 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T3b/utility_15s#3 | $8.75 | — (—) | $0.00 | — | $0.00 | — | 0 | 0.0% | 0.000 | — | — |
T3b/control_10s#3 | $12.88 | — (—) | $3.56 | — | $3.56 | — | 1 | 50.0% | 1.780 | 3.56 | 100.0% |
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 payer bar and all seven belong to the two campaigns that carried the week. The 08-15 daily, for comparison, had one.
Concentration falls as the payer count rises. Every row under the bar that has revenue sits between 33.2% and 100.0% in its largest basket.
Payer rate does not order return: sasian_bikini_6s converts at 2.2% and returns 1.50, utility_6s at 4.8% and 0.67, because its ARPPU is twice as high.
⚠ 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 | $907.67 | 31.2% | 5.3% | 63.5% | 5.9% |
earner/bikini | $393.59 | 28.4% | 4.7% | 66.9% | 14.2% |
T3b/utility_6s | $271.18 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_spice5_15s | $275.01 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bodysuit_10s | $253.11 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bikini_6s | $182.76 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bikini_10s | $119.26 | 100.0% | 0.0% | -0.0% | 0.0% |
earner/pool5 | $122.28 | 27.8% | 5.4% | 66.8% | 2.7% |
T1b/utility_6s#2 | $38.90 | 0.0% | 46.4% | 53.6% | 100.0% |
T1b/utility_15s | $37.63 | 0.0% | 42.4% | 57.6% | 68.8% |
T2b/utility_6s#3 | $28.73 | 0.0% | 0.0% | 100.0% | 0.0% |
T2b/latina_es_bikini_10s | $25.30 | 0.0% | 0.0% | 100.0% | 0.0% |
T2b/utility_15s#2 | $21.11 | 0.0% | 0.0% | 100.0% | 0.0% |
DE/de_german_mature_6s | $27.40 | 0.0% | 0.0% | 100.0% | 0.0% |
T3b/sasian_fishnet_top_6s | $14.85 | 100.0% | 0.0% | 0.0% | 0.0% |
DE/ch_arab_gulf_6s | $21.75 | 0.0% | 0.0% | 100.0% | 0.0% |
T3b/sasian_slip_dress | $18.43 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_bodysuit_6s | $8.94 | 100.0% | 0.0% | 0.0% | 0.0% |
T3b/sasian_offshoulder | $7.44 | 100.0% | 0.0% | 0.0% | — |
DE/de_arab_gulf_10s | $5.79 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_10s | $5.20 | 0.0% | 0.0% | 100.0% | — |
DE/ch_latina_true_6s | $5.17 | 0.0% | 0.0% | 100.0% | — |
DE/de_turkish_mature_10s | $4.71 | 0.0% | 0.0% | 100.0% | — |
DE/german_6s | $4.07 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_mature_6s | $4.02 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_mature | $3.95 | 0.0% | 0.0% | 100.0% | — |
DE/ch_arab_gulf_10s | $3.66 | 0.0% | 0.0% | 100.0% | — |
T2b/latina_es_bikini_6s | $1.22 | 0.0% | 0.0% | 100.0% | — |
T3b/sasian_fishnet_top_10s | $2.95 | 100.0% | 0.0% | 0.0% | — |
DE/german_mature | $3.01 | 0.0% | 0.0% | 100.0% | — |
DE/de_arab_gulf_6s | $2.51 | 0.0% | 0.0% | 100.0% | — |
DE/german | $1.90 | 0.0% | 0.0% | 100.0% | — |
DE/latina_true | $1.36 | 0.0% | 0.0% | 100.0% | — |
DE/de_turkish_10s | $1.16 | 0.0% | 0.0% | 100.0% | — |
DE/de_pool5_15s | $1.04 | 0.0% | 0.0% | 100.0% | — |
DE/de_asian_mature_6s | $0.99 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_mature_10s | $0.76 | 0.0% | 0.0% | 100.0% | — |
DE/turkish_6s | $0.54 | 0.0% | 0.0% | 100.0% | — |
DE/ch_latina_mature_10s | $0.42 | 0.0% | 0.0% | 100.0% | — |
DE/de_latina_true_6s | $0.25 | 0.0% | 0.0% | 100.0% | — |
DE/ch_german_6s | $0.14 | 0.0% | 0.0% | 100.0% | — |
DE/ch_asian_mature_6s | $0.11 | 0.0% | 0.0% | 100.0% | — |
DE/ch_pool5_15s | $0.07 | 0.0% | 0.0% | 100.0% | — |
The account ran three geographies this week: the earner's worldwide mix, the T3 pack's 100.0% India, and everything else neither.
Delivery is plotted hourly and money per day, on the same reasoning as inside the tabs. Assets under 20 installs in the week are dropped from the composite and the region charts, and money-chart markers are hollow where the point sits under 16 payers.
⚠⚠ The comparison week is a partial week's buying inside a full week's window. The account's first spend on this app was 2026-07-23, so 2026-07-20, 07-21 and 07-22 carry none of it. The two windows are the same seven days long, which is what makes CPM, CTR, click→install, CPI, payer rate, ARPU, ARPPU and every return column comparable between them. It is also why every level in section 1 moved by hundreds of percent, and why none of those level changes is a result.
⚠ The week spans a budget change on the campaign that spent the most. The worldwide buy ran at $875 a day and then $500 from 04:10 account time on 08-01 (asset_performance_report_2026-08-02.md). The budget is a geography dial on this account (DECISION_LOG.md #47), so its three ads were bought different audiences inside the week and the per-asset table in the earner tab is not regime-matched. Ranking the three on it would be ranking the budget.
⚠ Two campaigns' entire revenue is a handful of people. The German buy's $127.00 is two payers, one for each of its two earning creatives at 100.0% of that creative's total, and T1's $82.89 is five. Both sit under the 16-payer bar and both appear in section 5 alongside campaigns carrying 176 and 126 payers.
The cohort figure is complete on both weeks, and that is a property of their age. Coverage is 100% throughout, so nothing in the cohort column can still rise. A daily report written a day after its day cannot say this, and comparisons drawn here against a daily's cohort figure would be comparing a settled number against a floor.
The country section and table C are the account's own day, seven hours offset from every other table on the page, because Meta serves no hour × country grid. They are read for mix and never for level.
The instrument gate is quoted on the META clock and only there. Our records read 1.05 of Meta's booked value over the account's own days, inside the 0.91 to 1.06 band. The UTC run prints a ratio too and marks it CROSS-CLOCK, NOT A VALID CHECK, because Meta files its conversion value on the conversion hour and that column cannot honestly be restitched.
Section 5 carries no charts. The standing chart set in this build has no campaign-level entry in its section map, so spend share, CPM and CPI by campaign across the run are not drawn at account level. They exist per campaign inside the tabs.
Two tabs carry eighteen charts and three carry nineteen. A campaign that did not deliver in the comparison week has no paired hourly chart to draw, so the earner and German tabs are one short. Every tab still carries every section, and the section says in place what is missing from it.
The page is heavy. One hundred and twelve charts are inlined as SVG at publish time, roughly three megabytes before the markup. The format's rule is not to fix that by moving charts out of tabs, which would rebuild the chart appendix this format deleted.
Registrations run ahead of Meta's installs by about a tenth, 7,375 against 6,686. Both counts are correct on their own instrument and neither is divided by the other anywhere on this page: the funnel is Meta's on both sides and the payer rate is ours on both sides.
CPI's sign test in section 2 runs on 21 buckets, not 24. Buckets 00, 01 and 03 took no install in the earlier week, so they cannot be paired.
Section 5's $13.88 base is not section 2's $14.77. $13.88 is the earlier week's price over the five campaigns that delivered in this one, the like-for-like base; $14.77 is the whole earlier account, including the three Jul 23 campaigns that have since stopped.
Whether the worldwide buy's 1.36 is the format or the creative. It ran three days at two budgets, with 176 payers, and it was retired on 08-03, the day after this week closed. A regime-held read of its three ads over a single budget is the comparison this week cannot supply, and the 08-02 daily has already run it on part of the span.
Whether the India pack can be pushed over 1.00. T3 returned 0.97 on 126 payers, and section 3 puts India itself at 1.04, so the campaign is running at roughly the country's own level. The four pack creatives that clear the payer bar spread from 0.67 to 1.50, and one more week at this budget would say whether that spread survives.
Whether T1's premium geography is worth $87.17 per thousand impressions. Funding it four-fold raised its price and cut its cost per install to a third. Five payers cannot answer what it earns, and its ARPPU of 22.31 is high enough that the question is worth a budget.
Whether the German buy is anything at all. 23 installs and two payers for $99.98 over three days. It needs either enough budget to reach a readable payer count or a decision to stop, and this week supports neither reading.
The week of 08-03 inherits an account that has crossed 1.00 on within-day revenue for the first time, and it inherits it from a campaign that was retired on the first day of that week. The question it can answer that this one cannot is whether the account holds 1.14 once the buy that produced 46.5% of this week's spend is gone.
It also inherits the mix question. Two thirds of this week's CPM improvement was money moving to cheaper campaigns, and that move has run out of room: T3 and the earner already held 41.6% and 46.5% of the spend. A further fall in the account's impression price would have to come from inside the campaigns, which is a different and harder thing to buy.
Report clock UTC. The ad account's exports are stamped in its own zone (UTC-7), so every delivery row is restitched from two account days. The country tables and table C are not restitched and are labelled where they appear. Each hourly bucket on this page pools that hour of the day across the seven days of the period.
⚠ The account's own delivery export shows spend this report does not count, on four days inside these two windows. On 2026-07-20 and 07-21 the account ran the youguqi_ HeiHa test, and on 07-30 and 07-31 it ran 0730_starfall_, media bought on behalf of a third party. Neither is this app's money and neither is in any table here. Rows are selected by Ad ID against the run config's ads map, which is what keeps them out.
| run | _runs/2026-08-16_periods/, from _runs/2026-08-16_receipt_series/run_config_full.json |
|---|---|
| period | 2026-07-27 to 2026-08-02 UTC, against 2026-07-20 to 2026-07-26 UTC |
| payment cut | 2026-08-16 10:59 UTC; the META-clock gate run is cut at 2026-08-16 03:59 account time |
| cohort | H=24h, 100% covered on both periods, 7,375 installs aged 325.4 to 489.6 hours at the cut |
| instrument gate | ours ÷ Meta booked = 1.05 on the META clock, band 0.91 to 1.06 |
| regimes | read from the dailies published inside the period: asset_performance_report_2026-07-27.md, _2026-07-30.md, _2026-08-01.md, _2026-08-02.md |
python -m ad_ops.measures --config <cfg> --from 2026-07-27 --to 2026-08-02 \
--prev-from 2026-07-20 --prev-to 2026-07-26
python -m ad_ops.report_tables --config <cfg> --from 2026-07-27 --to 2026-08-02 \
--prev-from 2026-07-20 --prev-to 2026-07-26
python -m ad_ops.report_tables --config <cfg> --from 2026-07-27 --to 2026-08-02 \
--prev-from 2026-07-20 --prev-to 2026-07-26 --campaign-table
python -m ad_ops.report_charts --config <cfg> --from 2026-07-27 --to 2026-08-02 \
--prev-from 2026-07-20 --prev-to 2026-07-26 \
--out ad_ops/figures/week_2026-07-27 --relpath figures/week_2026-07-27
Each tab is the same three commands with --campaign <key> and its own --out directory, for the keys earner, t3_0725, t2_0725, t1_0725 and de. The filenames do not carry the campaign, so two campaigns written to one directory overwrite each other.
The report clock is a UTC day, and this report covers seven of them. Adjust reports in UTC, so a UTC-bucketed report lines up with the attribution dashboard without anyone converting in their head. The ad account 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.
Four things change when the report covers a week.
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 of the period and paid before that day closed | never. Sealed at each midnight |
| cohort at H | the period'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 earlier 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.
All three are read on our own payment records, and all three count only payments the record can tie to a person who installed through one of our mapped ads. Meta can express only booked, so it appears bracketed beside that column and never as a row of its own.
Two install counts exist and they are never crossed. Meta's Leads and our own registrations disagree by 5 to 10%. Meta's is used for the delivery funnel, so CPI and click→install have both numerator and denominator on one instrument. Ours is used for payer rate and every revenue measure, so the payers and the installs they came from are the same population.
A regime is a stretch over which the ad set's daily budget did not change. The budget is a geography dial on this account, so two creatives measured across a budget change were compared on different audiences. Regimes are hand-recorded and go stale silently, so nothing on this page asserts one that is not sourced from a daily published inside the period.
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 a cell with few payers is describing whoever happened to be in it. Seven asset rows on this page clear the bar and forty-five do not.