Daily campaign report — 2026-08-07, against 2026-08-06

The account bought $749.94 and got 998 installs at $0.751, against $793.94 and 1,172 at $0.677 the day before. Booked revenue was $1,505.16; within-day was $436.98, down 29.6%. Our records read 0.98 of Meta's booked figure. The German campaign was off from 22:49 PT on 08-06, so the worldwide buy is 98.4% of the day against 85.2% the day before, and this is the second complete day of the five-cell split test. Definitions, the report clock and the three revenue measures are in the appendix.

1Overview

Delivery rows are the delivering campaigns summed. The retired earner's booking tail (1 install (Meta), 21 registrations (ours), $9.32 within-day, on $0.00 of spend) is excluded here and named in section 5, because counting it would put installs into a CPI denominator against spend that was never incurred.

2026-08-062026-08-07move
spend$793.94$749.94−5.5%
impressions70,41181,142+15.2%
CPM$11.28$9.24−18.0%
clicks5,4035,016−7.2%
CTR7.67%6.18%−19.4%
installs (Meta)1,172998−14.8%
click→install21.69%19.90%−8.3%
CPI$0.677$0.751+10.9%
booked (Meta)$1,401.05 (1.76)$1,505.16 (2.01)+7.4%
within-day$620.48 (0.78)$436.98 (0.58)−29.6%
cohort @ 24h$715.22 (0.90)$468.89 (0.63)51% covered, see Caveats

Cohort value — ARPU and ARPPU at d0, d3 and d7

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.

appARPU (d0)ARPU (d3)ARPU (d7)ARPPU (d0)ARPPU (d3)ARPPU (d7)installs
Vloom$0.4527$0.7082$0.8683$12.43$16.73$17.991,181

Campaign spend split. Worldwide $676.53 (85.2%) → $737.89 (98.4%); German $117.41 (14.8%) → $12.05 (1.6%), the largest structural change between the two days.

The account bought more impressions for less money and converted them worse. Impressions rose 15.2% on 5.5% less spend, and installs still fell 14.8%.

2Hourly, 2026-08-07

Hours both days delivered in, on the UTC clock: 00 through 23. Only the shared hours are compared.

Counting which way each shared hour points:

metrichours 2026-08-07 ran higherhours it ran lowersign test
CPM3 of 2421 of 24p = 0.000
CTR1 of 2423 of 24p = 0.000
click→install9 of 2415 of 24p = 0.307
CPI16 of 248 of 24p = 0.152

A sign test throws magnitude away and buys weight-free direction with it. CTR ran lower in 23 of the 24 shared hours and CPM in 21 of 24, so neither is a mix artifact. CPI and click→install do not clear 0.05.

2026-08-08T05:35:08.022200 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 3 6 9 12 15 18 21 hour (UTC) 0 5 10 15 20 25 30 35 40 USD Spend by hour 0 3 6 9 12 15 18 21 hour (UTC) 2000 2500 3000 3500 4000 impressions Impressions and installs by hour impressions installs 25 30 35 40 45 50 installs (Meta Leads) The day's motion — whole account, 2026-08-07 (UTC)
The day's motion: spend by hour, and impressions against installs
2026-08-08T05:35:08.195511 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 4 8 12 16 20 hour (UTC) 5.0 5.5 6.0 6.5 7.0 7.5 CTR % CTR 0 4 8 12 16 20 hour (UTC) 7 8 9 10 11 12 USD per 1,000 impressions CPM 0 4 8 12 16 20 hour (UTC) 16 18 20 22 24 26 28 installs / clicks % Click → install 0 4 8 12 16 20 hour (UTC) 0.50 0.55 0.60 0.65 0.70 0.75 0.80 0.85 USD Cost per install Delivery by hour — whole account, 2026-08-07 (UTC)
CTR, CPM, click-to-install and CPI by hour, whole account
2026-08-08T05:35:08.390518 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 5 10 15 20 hour (UTC) 5 6 7 8 9 CTR % CTR 2026-08-06 2026-08-07 0 5 10 15 20 hour (UTC) 7 8 9 10 11 12 13 14 USD per 1,000 impressions CPM 0 5 10 15 20 hour (UTC) 16 18 20 22 24 26 28 installs / clicks % Click → install 0 5 10 15 20 hour (UTC) 0.5 0.6 0.7 0.8 0.9 1.0 USD Cost per install Delivery by hour — 2026-08-07 against 2026-08-06, shared hours only (UTC)
The same four ratios with the prior day laid over, shared hours only
The full hour-by-hour pairing, 2026-08-06 → 2026-08-07

Every shared hour, 2026-08-06 → 2026-08-07. All columns are Meta's instrument on both sides of each ratio. Revenue is deliberately absent: per-hour payer counts run 0 to 3, so an hourly revenue column would be one person's basket read as a rate.

hrimpressionsCPMCTRclick→installCPI
002,230 → 2,61510.39 → 10.656.91% → 6.88%24.0% → 18.9%0.626 → 0.819
012,587 → 3,1498.48 → 8.188.35% → 6.38%17.1% → 18.9%0.593 → 0.678
023,233 → 3,3708.76 → 8.157.15% → 6.62%20.8% → 18.8%0.590 → 0.654
033,292 → 3,4168.91 → 8.477.59% → 6.24%18.4% → 18.8%0.637 → 0.723
043,421 → 3,5079.83 → 9.717.45% → 5.82%27.5% → 19.1%0.481 → 0.873
053,182 → 3,65611.26 → 9.797.48% → 6.18%23.9% → 21.7%0.629 → 0.731
063,189 → 3,28711.25 → 6.538.81% → 6.27%25.6% → 21.4%0.498 → 0.487
071,589 → 3,08113.81 → 8.247.11% → 5.10%22.1% → 19.1%0.878 → 0.846
081,983 → 3,56013.14 → 7.997.72% → 6.38%20.9% → 15.4%0.814 → 0.813
092,291 → 3,87312.39 → 8.766.94% → 5.19%23.9% → 22.9%0.747 → 0.738
102,168 → 3,99413.40 → 9.207.66% → 5.78%24.1% → 18.6%0.726 → 0.855
112,758 → 4,11512.20 → 9.578.09% → 5.66%23.8% → 20.2%0.635 → 0.838
123,070 → 4,01813.85 → 8.916.91% → 6.22%23.1% → 16.4%0.868 → 0.873
132,575 → 4,01712.34 → 8.457.57% → 5.58%24.1% → 20.5%0.676 → 0.738
142,503 → 3,51014.14 → 11.448.27% → 6.95%16.4% → 19.7%1.041 → 0.836
153,375 → 4,31611.88 → 7.887.41% → 6.16%23.2% → 17.3%0.692 → 0.740
163,926 → 3,60810.19 → 8.036.67% → 6.32%18.3% → 16.7%0.833 → 0.762
174,967 → 4,1109.89 → 8.417.13% → 6.52%20.3% → 16.8%0.682 → 0.768
184,434 → 3,7009.67 → 11.266.97% → 7.14%20.1% → 20.1%0.691 → 0.786
193,631 → 3,20611.92 → 10.718.26% → 5.36%18.3% → 25.0%0.787 → 0.799
202,885 → 2,79912.19 → 10.318.56% → 6.11%21.5% → 28.1%0.664 → 0.601
212,453 → 2,35312.12 → 11.498.76% → 6.88%23.7% → 27.2%0.583 → 0.615
222,360 → 2,21111.89 → 12.429.28% → 6.33%21.9% → 23.6%0.585 → 0.832
232,309 → 1,67112.45 → 10.768.40% → 7.48%20.6% → 20.8%0.719 → 0.692

3Country

2026-08-23T12:43:19.484391 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ IN US DE TR MX ID GB CA PH MY AR IT 0 20 40 60 80 100 120 140 160 USD delivery raked onto the report clock against two measured margins; revenue is the report day Spend against within-day revenue by country — 2026-08-07 spend within-day revenue
Spend against within-day revenue by country
2026-08-23T12:43:19.523024 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ −0.04 −0.02 0.00 0.02 0.04 USD per install Cost per install by country — 2026-08-07 (report clock)
CPI by country

(i) The portfolio by country, 2026-08-07. 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.

ccspendshareimpressionsCPMregistrations (ours)cost/regwithin-daywROASpayers
IN$153.4220.5%28,467$5.39296$0.518$70.560.4628
US$85.3811.4%2,161$39.5053$1.611$28.930.347
DE$34.054.5%787$43.2813$2.619$5.740.173
TR$26.603.5%1,572$16.9233$0.806$0.000.002
MX$26.163.5%4,033$6.4955$0.476$5.710.223
ID$22.703.0%4,093$5.5553$0.428$21.950.974
GB$22.082.9%1,007$21.9231$0.712$6.040.272
CA$17.492.3%665$26.3119$0.921$4.990.291
PH$16.482.2%5,524$2.9852$0.317$11.270.684
MY$16.022.1%2,165$7.4021$0.763$0.000.001
AR$15.732.1%1,619$9.7231$0.507$7.980.512
IT$15.472.1%959$16.1325$0.619$9.990.653

187 further countries are not listed, $298.37 between them (39.8% of this block).

Reconciliation, what is measured and what is fitted. Every per-country cell is an allocation across hours; every total is measured. B1 (UTC-7) $201.27 from Meta 2026-08-06 and $548.67 from Meta 2026-08-07, a measured UTC-day total of $749.94.

Absent from the table above, by name: Nomad Node, KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.

(ii) The same cut per account, 2026-08-07.

B1

ccspendshareimpressionsCPMregistrations (ours)cost/regwithin-daywROASpayers
IN$153.4220.5%28,467$5.39296$0.518$70.560.4628
US$85.3811.4%2,161$39.5053$1.611$28.930.347
DE$34.054.5%787$43.2813$2.619$5.740.173
TR$26.603.5%1,572$16.9233$0.806$0.000.002
MX$26.163.5%4,033$6.4955$0.476$5.710.223
ID$22.703.0%4,093$5.5553$0.428$21.950.974
GB$22.082.9%1,007$21.9231$0.712$6.040.272
CA$17.492.3%665$26.3119$0.921$4.990.291
PH$16.482.2%5,524$2.9852$0.317$11.270.684
MY$16.022.1%2,165$7.4021$0.763$0.000.001
AR$15.732.1%1,619$9.7231$0.507$7.980.512
IT$15.472.1%959$16.1325$0.619$9.990.653

187 further countries are not listed, $298.37 between them (39.8% of this block).

Nomad Node — no country block: it delivered nothing on this day, a measured zero.

KBM1 — no country block: it delivered nothing on this day, a measured zero.

HR1 — no country block: it delivered nothing on this day, a measured zero.

The prior day, 2026-08-06, the same two tables.

(i) The portfolio by country, 2026-08-06. 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.

ccspendshareimpressionsCPMregistrations (ours)cost/regwithin-daywROASpayers
IN$160.5620.2%25,669$6.26344$0.467$93.590.5836
DE$98.5712.4%2,162$45.6042$2.347$48.380.496
US$72.789.2%1,733$42.0160$1.213$181.752.5016
TR$26.923.4%1,457$18.4744$0.612$5.890.222
ID$25.123.2%3,903$6.4482$0.306$0.000.002
MX$22.942.9%3,110$7.3853$0.433$5.710.253
GB$21.582.7%696$31.0229$0.744$6.040.282
AR$20.792.6%1,759$11.8153$0.392$9.980.482
PH$16.802.1%4,352$3.8654$0.311$5.630.345
AT$15.301.9%524$29.208$1.912$21.191.393
FR$15.111.9%550$27.4519$0.795$0.000.001
CA$14.281.8%410$34.8116$0.893$4.990.351

183 further countries are not listed, $283.17 between them (35.7% of this block).

Reconciliation, what is measured and what is fitted. Every per-country cell is an allocation across hours; every total is measured. B1 (UTC-7) $208.10 from Meta 2026-08-05 and $585.84 from Meta 2026-08-06, a measured UTC-day total of $793.94.

Absent from the table above, by name: Nomad Node, KBM1, HR1. Their spend is in every day-grain table; only their country split is missing.

(ii) The same cut per account, 2026-08-06.

B1

ccspendshareimpressionsCPMregistrations (ours)cost/regwithin-daywROASpayers
IN$160.5620.2%25,669$6.26344$0.467$93.590.5836
DE$98.5712.4%2,162$45.6042$2.347$48.380.496
US$72.789.2%1,733$42.0160$1.213$181.752.5016
TR$26.923.4%1,457$18.4744$0.612$5.890.222
ID$25.123.2%3,903$6.4482$0.306$0.000.002
MX$22.942.9%3,110$7.3853$0.433$5.710.253
GB$21.582.7%696$31.0229$0.744$6.040.282
AR$20.792.6%1,759$11.8153$0.392$9.980.482
PH$16.802.1%4,352$3.8654$0.311$5.630.345
AT$15.301.9%524$29.208$1.912$21.191.393
FR$15.111.9%550$27.4519$0.795$0.000.001
CA$14.281.8%410$34.8116$0.893$4.990.351

183 further countries are not listed, $283.17 between them (35.7% 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.

4Aggregate, both days

Pooled over the 24 hours both days delivered in, on the UTC clock. Meta's instrument on both sides of every ratio.

spendimpressionsCPMclicksCTRinstallsclick→installCPI
2026-08-06$793.9470,41111.285,4037.67%1,17221.69%$0.677
2026-08-07$749.9481,1429.245,0166.18%99819.90%$0.751

Account CPM $11.28 → $9.24, −18.0%; held to 2026-08-06's mix, $10.17 or −9.8%. Half the fall is the German campaign leaving, half cheaper worldwide buying.

The three measures side by side, and the split of booked revenue by the day its payer installed:

measure2026-08-062026-08-07
booked$1,401.05 (1.76)$1,505.16 (2.01)
within-day$620.48 (0.78)$436.98 (0.58)
cohort @ 24h$715.22 (0.90, 100% cov)$468.89 (0.63, 51% cov)
booked on 08-07 came from installs onamountshare
2026-08-07$436.9829.0%
2026-08-06$293.0019.5%
2026-08-05$394.4326.2%
2026-08-04$68.464.5%
2026-08-03$114.947.6%
2026-08-02$29.231.9%

Only 29.0% of the day's booked revenue was earned by the day's own installs. Booked rose 7.4% while within-day fell 29.6%, and the whole of that divergence is older cohorts paying.

2026-08-08T05:35:08.664393 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ booked within-day cohort @ 24h 0 200 400 600 800 1000 1200 1400 USD 1.76 0.78 0.90 2.01 0.58 0.63 the number above each bar is that measure's ROAS against the same day's spend The three revenue measures, 2026-08-06 against 2026-08-07 (UTC) 2026-08-06 2026-08-07
The three measures on both days
2026-08-08T05:35:08.723790 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 2026-08-06 2026-08-07 0 200 400 600 800 1000 1200 1400 USD the bottom segment IS the within-day figure: the same number seen twice Booked revenue by the day its payer installed (UTC) the day itself one day earlier two days earlier three days earlier four or more
Booked revenue split by the day its payer installed

5The campaigns, side by side

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.

campaignspendshareimpressionsimpr shareCPMclicksCTRcost/clickinstallsCPIwithin-daywROASpayers
Worldwide$737.8998.4%80,81399.6%9.134,9916.18%$0.148995$0.742$427.660.5836
German (DE/AT)$12.051.6%3290.4%36.63257.60%$0.4822$6.025$0.000.000

The German campaign gets no tab, 1.6% of spend and 2 installs against a 2%/20-install gate. Its $12.05 came from Meta 08-06 hours 17–23.

Booking with no delivery, and excluded from every rate above: Earner (retired 08-03) 1 install (Meta), 21 registrations (ours), $9.32 within-day. Meta stamps a conversion on the conversion hour, so a campaign switched off days ago still lands rows on this day.

6The worldwide campaign

One campaign carries 98.4% of the day, so this section is its whole battery.

Structure on this day

Five ad sets, one delivering ad each, all budgets level at $150/day since 04:06 PT on 08-06. The ad set row is the ad row on any single day, so the rows below are labelled by asset.

A. Per asset — delivery

Meta's instrument on both sides of every ratio. Our registrations never enter this table.

assetspendimpressionsCPMclicksCTRinstallsclick→installCPI
E2/bodysuit$163.0818,3328.901,0675.82%24623.06%$0.663
E2/lounge$159.3415,31010.411,0096.59%17417.24%$0.916
E2/pool5$150.8620,7927.261,2035.79%22818.95%$0.662
E2/spill2$148.6312,40811.988727.03%17920.53%$0.830
E2/bikini$115.9813,9718.308406.01%16719.88%$0.694

B. Per asset — the three revenue measures

Ours on every column. Payers are distinct people, never transactions. Cohort horizon H=24h, 51% covered on this day. Report clock UTC.

assetbookedbROAS (Meta)within-daywROAScohort@HcROASpayerspayer%ARPUARPPUlargest payer
E2/bodysuit$207.141.27 (2.02)$96.770.59$102.530.6393.4%0.36210.7534.8%
E2/lounge$168.211.06 (1.51)$104.340.65$104.340.6584.7%0.61713.0440.8%
E2/pool5$432.182.86 (3.08)$57.630.38$80.220.5352.1%0.24111.5360.1%
E2/spill2$242.201.63 (2.05)$147.360.99$147.360.99105.3%0.78014.7428.1%
E2/bikini$73.580.63 (1.07)$21.550.19$25.110.2242.2%0.1215.3926.7%

The 16-payer bar (#37): every row above is under it, at 4–10 payers. pool5's 2.86 booked is one payment at 60.1% of its revenue.

C. Per asset — country mix

⚠ A META-day cut, seven hours offset from tables A and B. Read it for mix, never for level.

assetspendIndia %US %other %US % of its revenue
E2/bodysuit$167.2824.9%11.2%63.9%5.2%
E2/lounge$144.8917.0%13.2%69.7%18.2%
E2/pool5$151.6319.6%14.4%66.0%0.0%
E2/spill2$143.7115.9%13.8%70.3%0.0%
E2/bikini$105.4226.3%8.6%65.1%23.2%

The split test, on its two complete days

The test runs on the ad account's calendar, "Aug 6, 2026, 12:00 AM to Aug 11, 2026, 12:00 AM Pacific Time", so it is read over the hours it actually ran. Day 1 is Meta 08-06 hours 04 to 23 PT, from the first settled hour after the arms went level; day 2 is the whole of Meta 08-07.

day 1, 08-06day 2, 08-07
armspendCPMCTRinstCPIspendCPMCTRinstCPI
bodysuit$100.238.396.75%186$0.539$167.289.165.71%245$0.683
pool5$107.068.196.87%182$0.588$151.637.185.56%208$0.729
bikini$134.208.746.63%204$0.658$105.429.336.09%142$0.742
spill$117.2612.698.42%166$0.706$143.7111.997.04%176$0.817
lounge$143.1911.317.95%185$0.774$144.8911.146.39%151$0.960

The cost-per-install order is identical on both days, Spearman +1.00, while every arm's CPI is higher on day 2 than day 1.

Day 1's spend confound does not replicate, closing test_register.md's open question. CPI against realised spend ran Spearman +0.90 on day 1, −0.60 on day 2.

The split still does not equalise spend. Realised spend runs $105.42 to $167.28 on five equal $150 budgets, a 1.59× range against day 1's 1.43×.

The pre-registered primary is still not readable. Payers per install needs full coverage; 08-07 sits at 51%, 08-06's completed cohort under the 16-payer bar.

2026-08-16T16:10:15.790952 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 5 6 7 8 9 10 CTR % CTR by hour — every asset, 2026-08-07 (UTC) E2/bodysuit E2/lounge E2/pool5 E2/spill2 E2/bikini
CTR by hour, one line per asset
2026-08-16T16:10:15.862091 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 5.0 7.5 10.0 12.5 15.0 17.5 20.0 22.5 USD per 1,000 impressions CPM by hour — every asset, 2026-08-07 (UTC) E2/bodysuit E2/lounge E2/pool5 E2/spill2 E2/bikini
CPM by hour, one line per asset
2026-08-16T16:10:15.934732 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 5 10 15 20 25 30 35 40 installs / clicks % Click → install by hour — every asset, 2026-08-07 (UTC) E2/bodysuit E2/lounge E2/pool5 E2/spill2 E2/bikini
Click-to-install by hour, one line per asset
2026-08-16T16:10:15.997672 image/svg+xml Matplotlib v3.11.1, https://matplotlib.org/ 0 2 4 6 8 10 12 14 16 18 20 22 hour (UTC) 0.5 1.0 1.5 2.0 2.5 3.0 3.5 USD Cost per install by hour — every asset, 2026-08-07 (UTC) E2/bodysuit E2/lounge E2/pool5 E2/spill2 E2/bikini
Cost per install by hour, one line per asset

7Caveats

The cohort figure below was published at 51% coverage and has since completed. At the full 24-hour horizon 2026-08-07's cohort is $472.45, the figure the 2026-08-08 report carries in its prior-day column; what this page shows is a lower-coverage read of the same cohort, not a different number. Against 08-06's completed $715.22 the day reads −33.9% — the comparison this page declined. Within-day and booked are unaffected; they were sealed and settled when this page shipped.

Cohort@24h is 51% covered on this cut. It is reported and not compared here; Caveats carries the completed figure. The 08-06 column beside it is at 100%, so the two are not the same kind of number and the fall from 0.90 to 0.63 is mostly coverage.

The country and per-asset country tables are META-day cuts and are seven hours offset from every other table here.

The CTR fall is now on its second consecutive day, and the split test is no longer a candidate explanation for it. Both days compared here are inside the test, which is what removes the structural change the 08-06 report could not rule out. Pooled CTR ran 8.73% on 08-05 before the test, 7.24% on the first test day and 6.05% on the second, measured on the account clock. The step from pre-test to test day 1 is the one the split explains; the further step from day 1 to day 2 is not, and it has no explanation in this report.

The split assigns each person to exactly one arm, which does not hold delivery equal.

Frequency is still elevated and is not falling back. Across the five arms it ran 1.23 before the test, 1.59 on day 1 and 1.54 on day 2. The account is still buying repeat exposure against the same partitioned pool.

Turkey's $278.95 booked on $25.03 of spend is one earlier cohort's payment and should not be read as a Turkish result. Its within-day figure is $0.00.

8What would settle the open questions

9What this hands to the next report

The test has three days left and 08-08 is the third in-test day, so the day-over-day comparison stays clean. The account is single-campaign, so section 5 will carry one row plus whatever booking tails land. The CPI ranking has now replicated twice and its spend confound is closed, which makes the remaining question about the arms a revenue question, gated on payer counts.

10Reproduce

python -m ad_ops.measures        --config _runs/2026-08-08_0807_daily/run_config.json --day
2026-08-07 --prev 2026-08-06
python -m ad_ops.day_compare     --config … --today 2026-08-07 --prev 2026-08-06 --h 6
python -m ad_ops.cohort_arpu     --config … --days 2026-08-01,…,2026-08-07
python -m ad_ops.asset_estimator hourly --meta <08-05,08-06,08-07 hourly> --lum <run>/lum --fx … \
    --ads bodysuit,pool5,bikini,spill,lounge --campaign bailingxia_meituan_ww_cvr_260802
python -m ad_ops.report_tables   --config … --day 2026-08-07 --prev 2026-08-06 [--campaign-table | --campaign ww]
python -m ad_ops.report_charts   --config … --day 2026-08-07 --prev 2026-08-06 --days 2026-08-04,…,2026-08-07 --out …

Exports pulled 2026-08-08 05:11 to 05:15 PT: ads × hour for Meta day 08-07 (24 buckets, single-day window confirmed on the file), ads × day and ads × country × day for Jul 1 → Aug 8. The hourly and day exports agree at $712.93 for Meta 08-07, and the country export sums to the same figure. Lum Telegram export taken on the laptop 2026-08-08 05:17 to 05:24 PT: 16,268 registrations, 1,745 payments, 10 unmatched, payment data cut 2026-08-08 12:24 UTC. Registrations rose against the previous cut's 15,234 and unmatched sits at 0.6%, which are the tells that the export is not truncated.

11Appendix — definitions

The report clock is UTC. Adjust reports in UTC, so a UTC-bucketed report lines up with the attribution dashboard. Meta's ad account is fixed at UTC-7, so a UTC day is Meta day D-1 17:00–23:59 plus Meta day D 00:00–16:59, which is why every daily needs two hourly exports. 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 three revenue measures, never one, never mixed, always labelled:

measurecountsmoves after the day closes?
bookedrevenue that arrived inside the day, whatever day its payer installed. Meta's own number is this basissettles ~4 h after midnight, then fixed
within-dayinstalled that day and paid before that day closednever. Sealed at midnight
cohort at Hthat day's installs, counted within H hours of each person's own install. House horizon H=24rises until every install has lived H hours. Always state coverage

All three are read on our own payment records. Meta can express only booked, so it appears bracketed beside that column and never as a row of its own.

A regime is a stretch over which the ad set's daily budget did not change. It matters because the budget is a geography dial on this account: raising it buys wider, cheaper countries, so two creatives measured across a budget change are compared on different audiences.

Internal — noindex. Not for distribution outside the team.