Implied spend = daily budget × budget-usage % from Amazon's Budget Usage API. Times shown in PST (EST in parens).
Total Implied Spend
—
Budget Usage API
Total Reported Spend
—
live-tool BQ
Delta (Implied − Reported)
—
—
Total Sales Today
—
live-tool BQ
Live TACoS
—
implied spend ÷ sales
Total Daily Budget
—
—
Enabled Campaigns
—
—
Last Refreshed
—
EST: —
SP — Implied / Reported
—
—
SB — Implied / Reported
—
—
SD — Implied / Reported
—
—
Idle.
Type
Campaign
ID
Daily Budget
Usage %
Implied Spend
Reported Spend
Delta
Portfolio
Cap Eligible
Reported As Of (PST)
Usage Updated (PST)
Click Pull In Live to load.
Live TACoS = implied ad spend (Budget Usage API) ÷ total sales today (live-tool BQ). Implied spend column sums to the Total Implied Spend KPI on the campaigns tab.
Portfolio
Name match
Campaigns
Implied Spend
Reported Spend
Total Sales Today
Live TACoS
Cap Eligible
Daily Budget
Sales As Of (PT)
No data yet.
One column per day (PT calendar day), going backwards from yesterday. A cell shows Capped when at least one
campaign in that portfolio had its budget capped that night, with the time of the first cap push in ET and PT.
Rows are sorted by yesterday's revenue, highest first.
Loading…
The Daily P&L's Capping TACoS Targets, read straight from their Firestore docs — this is what the
cap runner's portfolio lane acts on. One row per portfolio the Daily P&L knows (its rolling 120-day
portfolio table), one column per capping slot. A cell shows the TACoS % set for that slot; on, no % means the slot is on
with nothing typed for it (that portfolio is reported, not evaluated, at that slot); — means the slot is off.
The Daily P&L's fallback % is shown for reference only and plays no role in either lane. At each slot time the
runner caps every campaign of a portfolio whose live TACoS is over that cell. Portfolios with targets sort first,
then by 30-day sales. Edit the numbers in the Daily P&L; turn the lane on or off in Settings.
Loading…
One row per cap-runner or revert-runner invocation. Click any row to drill into per-campaign details.
Started (PST)
Kind
Mode
Status
Campaigns
Total Original $
Total New $
Δ vs Original
Run ID
Report
Loading…
Run details
Status
Type
Portfolio
Campaign
Original $
Implied @ cap
New cap $
Reverted $
Pushed at (PST)
Reverted at (PST)
Errors
Verify runs (cap+30min, cap+2h, revert+30min, revert+2h) compare Amazon's actual budget against what we intended. Any campaign that doesn't match shows here with a one-click correction button.
Every cap-runner, revert-runner, and verify-runner invocation logs a row here so you can see what fired, when, and the result.
Started (PST)
Kind
Pass
Status
Attempted
Succeeded
Failed
Mismatches
Run ID
Loading…
Settings access
Enter the 4-digit code to unlock settings.
Configure when and how the nightly auto-cap runs. Dry-run mode is ON by default — no real budget pushes happen until you turn it off and click Save.
Portfolio waves
lead lane— each portfolio against its own Daily P&L capping %
Nine fixed slots on the :25 marker (4:25 PM → 11:25 PM PT, plus 11:59 PM PT). At each slot the runner reads the
Capping Targets
straight from Firestore and, for every portfolio that has that slot ON, caps all of its campaigns when its live
TACoS is over that portfolio's own %. A portfolio with no % for the slot is not touched. A configured name
that is not an Amazon Ads portfolio is listed in the run email as NOT evaluated — never silently skipped.
Campaigns capped by either lane are left alone by every later run tonight, so the two lanes never double-cap.
A portfolio that has targets here belongs to this lane only — the system waves below never touch it, even
when it is over a wave's line, because its plan may say "not until a later slot". The system waves are the
backstop for portfolios that have no targets. Turning this off pauses the nine slot
schedulers; turning it on resumes them (they are created on first save if missing).
Sponsored Brands rule
special case— the one portfolio that has no sales of its own
This portfolio carries ad spend but has no catalog twin, so it has no sales, so it has
no live TACoS — it could never clear any threshold and sat outside capping entirely.
The rule gives it two chances of its own inside the portfolio lane. At the TACoS slot it is
capped when the whole business (total implied spend ÷ total sales, every portfolio) is over
the % below. If that slot holds, the forced slot caps it regardless of any TACoS. Campaigns
already capped earlier tonight are left alone, so the forced slot tops up rather than re-caps.
Campaign and portfolio excludes still win, and an incomplete snapshot still withholds the cap.
The system waves never touch this portfolio while the rule is on.
These two slot schedulers keep firing even if the portfolio lane above is off.
Cap waves
All times in PST— system-level backstop: up to 6, each with one threshold against every portfolio that has no Daily P&L targets
A portfolio is cap-eligible when its Live TACoS at the wave's cap time is strictly greater than that wave's TACoS %. Portfolios with their own Daily P&L capping targets are never evaluated by a system wave — they are the portfolio lane's alone. Lower TACoS % = more aggressive. Each wave only touches campaigns NOT already capped earlier today (by either lane). One verify pair fires after the last cap time that still leaves 2 hours before the revert. The revert at the time below covers every cap of the night in one shot. With the portfolio lane on, a system wave may not sit within 10 minutes of a slot time.
EST is shown next to each PST input for reference — the system always operates on PST.
Revert time
PST
When to restore budgets (typically just after midnight). Reverts every cap from today regardless of wave.
Cap math — applies to every wave
%
Example: Cap % = 110, implied spend at cap time = $60 → new budget = $60 × 1.10 = $66 Example: Cap % = 100, implied = $60 → new budget = $60 Example: Cap % = 50, implied = $60 → new budget = $30 (very aggressive throttle)
$
Example: Flat = $6 → every cap-eligible campaign gets a $6.00 daily budget, whether it spent $2 or $200 today.
The min floor and "never raise" rule below still apply — a campaign whose current budget is already under the flat amount is skipped when "never raise" is on.
$
Absolute minimum new budget we'll push to Amazon. Amazon's API hard-min is $1.00 — set this to $1 to allow even $0-spend campaigns to be capped.
Example: Implied $0 + 100% cap = $0 → floored to $1.00 (the new budget pushed to Amazon).
Important: No longer skips low-spend campaigns. Every cap-eligible campaign (subject to "never raise") gets a cap action.
Revert math
%
Example (original mode, 100%): capped to $66 from original $100 → revert sets budget back to $100 Example (original mode, 85%): original $100 → revert sets to $85 Example (implied mode, 120%): implied $60 at cap → revert sets to $72
Safety
Paused dates
Cap and revert will skip cleanly on any PT date listed here. Use for Prime Day, BFCM, or any window when budgets should run unimpeded. One date per line in YYYY-MM-DD format. Empty = no pause.
Portfolio name aliases
Ad spend is named by Amazon Ads; sales are named by the catalog. This page joins the two on the portfolio name.
When a portfolio is renamed on one side only, it splits into a spend-only half (no sales, no TACoS, never capped) and a sales-only half (no spend, 0% TACoS, never capped).
An alias tells the page "spend under this ads name belongs to this catalog name". The catalog name is the one the Daily P&L capping targets use.
Type the names exactly as they appear (suggestions come from the current snapshot). Nothing takes effect until you press Save Settings.
Ads portfolio name (spend side)
Catalog portfolio name (sales side)
Manual excludes
A ticked campaign is never capped by auto-cap, whatever its portfolio's TACoS. Tick to exclude, untick to put it back in play. Nothing takes effect until you press Save Settings at the bottom.
Portfolio excludes
Every campaign in a checked portfolio is skipped by auto-cap, regardless of the portfolio's live TACoS or cap-eligibility. Matched by exact portfolio name — the list below is exactly what the runner sees, so pick from it rather than typing.
The "Run Cap Now" button triggers the cap-runner Cloud Run Job once. It honors all settings including dry-run mode.
Use this to validate behavior before letting the daily scheduler take over. Allow ~10 min for sales priming + execution.
⚠ EMERGENCY CONTROLS
REVERT ALL NOW — immediately reverts every currently-capped campaign back to settings-defined revert budget. Use if something went wrong overnight and you need to undo right away. Ignores dry-run. Pushes for real.