Inventory and last-N-day traffic for every published wrapper — search, bulk-manage, export, and edit ad-rotation configs.
One GET /admin/inventory (a single KV LIST — metadata rides on each key, no per-id reads) joined with one GET /admin/stats?days=N (one Analytics-Engine query). Each row shows engine variant, ad mode, size, publish age and traffic.Press / to search, Esc to close.
Enter the Worker URL + admin token (or open this from the builder's Wrappers tab) and press Load.
Published wrappers
0
Requests (30d)
0
Delivery rate Level 3, weighted: SUM(delivered) ÷ SUM(delivered + not-in-target + undetermined) — the CLASSIFIED requests, not every billed request. Rows whose stats carry no level-3 counters are excluded, never counted as 0. delivered = requests − not-in-target − undetermined, i.e. the visitors who could actually see a pop. Needs a Worker that returns the level-3 counters; shows — otherwise.
—
Cost / month The EFFECTIVE account-wide monthly bill = the flat {$base}/mo Workers Paid base PLUS the marginal, projected to the current month (daily avg × days-in-month). Uses the REAL account usage (Worker requests + KV) via /admin/usage when loaded — scaled from ITS window, which the Worker clamps at 31d — otherwise an AE-requests estimate scaled from the selected window. It reads {$base}/mo flat until the account crosses its {freeWorker} requests/mo free tier. CPU is NOT in this total (this page has no CPU meter) — hover the number for the exact gap.
$5.00
More metrics
Active / DeadActive = wrappers that DELIVERED ≥1 in-target request in the window. Not delivering = 0 requests (dead), or requests that were all refused / undetermined (paying, 0 delivered). Falls back to ‘≥1 request’ when the Worker returns no level-3 counters. Requires traffic stats; shows — otherwise.
—
Rotation / Single
0
KV storage Sum of published wrapper byte sizes (metadata field b) across all ids — the KV storage footprint of the wrapper bodies.
0
Overall hit-rate Weighted: SUM(hits)/SUM(requests) across all wrappers. hit (double2=1) = a cached object was PRESENT for that request — including a request the gate then refused. It is a cache signal, never a delivery signal: use the delivery rate for that.
—
Avg req / active Total requests ÷ the number of ACTIVE wrappers (delivering ≥1 in-target request; falls back to ≥1 request when the level-3 counters are unavailable).
—
Rows that delivered nothing: 0 requests (dead), or requests > 0 with 0 in target (paying, 0 delivered). Falls back to ‘0 requests’ when the level-3 counters are unavailable.
⋯
Wrapper build recipes + rotation configs as ONE self-documenting JSON. Exports the SELECTED rows, or every visible row when nothing is selected. The recipe is read from THIS browser — a wrapper published from another machine exports its rotation config but carries no recipe.
Nothing is written until you have reviewed every item: existing + identical is skipped, existing + different asks you to overwrite, clone or skip.
Labels are your own names for each wrapper and live in THIS browser only — detected hosts are measured from live traffic and are not stored.
Fleet delivery — visible rows
ID Wrapper id. Sub-line = engine variant plus the ☠ dead / 💸 0 delivered state chips.
Mode Rotation ×N (weighted/RR) or Single. Targeting chips are COUNTS, never truncated code lists: 📱/🖥️ general device · 🌍 N allowed · ⛔ N blocked · 🛡 VPN blocked · 🎯 N ads with their own filter. Open a chip for its full ISO list; edit in config.html.
Build Published wrapper size and publish age. ⏳ marks a build older than 30 days. The exact publish timestamp is on the age itself.
Requests Level 1 — total /w/.js invocations in the window. THE BILLING NUMBER: the Worker runs before cache and is billed either way, refusals included. Never netted down. The rule under the number is a RANK cue scaled to the largest visible row — it has no track, so it is not a rate.
Delivery Level 3 — the delivery COMPOSITION of this row's requests: requests = in target + not in target + undetermined, three exclusive buckets that sum to 100% by construction. Absent counters render a neutral empty track, never a fabricated 0.innotundet.
Cache Level 2 — hits ÷ requests, as a single fill on a visible EMPTY track: the emptiness is the miss (miss = requests − hits). The tick is the fleet hit-rate. A hit only means a cached object was present; it says nothing about whether a pop was delivered.
Est. cost Big number = GROSS cost weight at {$worker} (requests × rate, per the ‘cost:’ basis in the toolbar — month or window). It's always >0 with traffic, so it RANKS who consumes most at a glance. Sortable. Cost is driven by REQUESTS, never by delivery — a wrapper flooded with out-of-target traffic still pays, and the Worker runs BEFORE the cache so a refusal is billed too. The ‘bill’ subline = what you actually PAY: this row's share of the account marginal beyond the {freeWorker}/mo free tier ($0 / ‘free’ until the account crosses it). ‘+base’ = share of the flat {$base}/mo Paid base (informational). THIRD LINE = the same money split by OUTCOME, because the outcomes are not one price: an in-target request also pays a second Worker request (/geo, cached {geoCacheH} h in localStorage) plus the cfg object and the engine {engineGets}×, while a refused one pays the {denyBytes}-byte 403 and nothing after it. ‘in’ / ‘not’ are shares of this row's MODELLED COST — of money, not of requests, so they deliberately differ from the Delivery column beside them. Hover that line for the exact amounts per bucket; ⋯ → Row details carries the full breakdown and the unit prices.
Actions
Legend & notesin targetnot in targetundetermined
Segmented bar = composition · single fill on an empty track = rate · grey track = not reported, never a measured 0. Every exact count is one click away: ⓘ in any row, or ⋯ → 🔎 Row details.
*+$x* on the billed line = this row's share of the flat {$base}/mo base (informational).
☠ dead = 0 requests in the window · 💸 0 delivered = requests > 0, nothing in target: billed in full, no visitor could see a pop.
Legend & notes
0 selected
Real account usage
Actual Cloudflare account totals via GraphQL (GET /admin/usage). Account-wide, not per-wrapper. Needs MGMT_API_TOKEN on the Worker; hidden if not configured.