How a budget works

Explains: D-BUD-01, D-BUD-02, D-BUD-07, D-BUD-08, D-BUD-09, D-BUD-10, D-BUD-15, D-BUD-16, D-BUD-17, D-BUD-19, D-021-01, D-021-03, D-021-05, D-021-30, D-021-35, D-021-40, D-024-01, D-024-03, D-024-06, D-024-11, D-JL-09, D-JL-15, specs/021-budgets-and-rollups#req-006, specs/021-budgets-and-rollups#req-007, specs/021-budgets-and-rollups#req-010, specs/021-budgets-and-rollups#req-011, specs/021-budgets-and-rollups#req-012, specs/024-budget-history#req-004

A budget is the most a customer is billed in a window of time. A campaign can carry one, and so can the customer that owns it. ClickFactor measures spend against both from the clicks it has recorded, and stops a campaign on its own before the budget is spent. This page explains what a budget counts, when its window starts and ends, and how the stop works; what a stopped campaign says on its row, and what resumes it, is on Why a campaign stopped.

Two budgets, and the tighter one binds

A click spends against its campaign's budget and against the customer's budget, and whichever would be reached first is the one that stops the campaign (D-BUD-02). The campaign screen shows both, and says which of the two would stop it first. Money is US dollars only (D-BUD-08).

What spend is

Spend is the sum of revenue on billable clicks: what the customer is billed, and nothing else (D-BUD-01). A click the customer is not billed for, whatever the reason, adds nothing to spend. The figures come from the hourly roll-ups of recorded clicks, so a click counts within a few minutes of arriving, and the screen says how old its spend figure is (specs/021 REQ-006).

Windows are UTC

Every budget window is kept in UTC, whatever time zone you read it from, and the screen names the window it is counting:

  • Monthly. The window is the whole UTC calendar month, whenever in the month the budget was set: a budget set on the 15th counts everything billed since the 1st (D-024-06). The screen reads "This month: 1 Oct – 31 Oct 2026, UTC". On the 1st at 00:00 UTC a new window starts at $0.
  • Lifetime. The window starts at the UTC hour the budget was set as lifetime and has no end. Spend before it was set never counts (D-021-30). Changing only the amount keeps the start; removing the budget, or changing it to monthly, ends the window, and a lifetime budget set after that starts again at zero (D-024-11). The screen reads "Lifetime: since 3 Jul 2026, UTC".

There are no daily budgets (D-BUD-16). A click is counted in the window that holds the hour it was billed in, and it is graded against the budget that was in force in that hour, never against a later one (D-024-03, specs/024 REQ-004).

A budget stops the campaign before it is spent

A budget is enforced by pausing the campaign before spend reaches it, not after (D-BUD-15). A pause takes a few minutes to reach every publisher, and clicks keep arriving on cached feeds for a while after that, so ClickFactor holds back headroom for the traffic still in flight: it forecasts the campaign's rate of spend and stops at the budget less what that rate would spend before the pause takes effect (D-BUD-19, D-021-03). The aim is as close to the budget as possible without going over.

The campaign screen shows the figures it uses: Spent, Remaining, Forecast rate (so much an hour), and Would stop at, the stop point. A spike in traffic raises the forecast rate within one evaluation and brings the stop point down; a spike is never treated as invalid traffic (D-BUD-17). The in-flight part of the headroom is measured from what followed earlier removals in your shop, and is 240 minutes of full-rate traffic until there is enough data; the screen says when it is still using that default (specs/021 REQ-007).

The budget's note on the screen says the same in a sentence: "Spend is counted from recorded clicks. This campaign pauses on its own when its spend reaches the stop point, before the budget is spent." (D-021-35). The check runs in near real time from the roll-ups, never at the moment of a click (D-BUD-07).

A monthly budget is spread over the month

A monthly budget is paced: each UTC day gets an allowance, the remaining budget divided by the days left in the month, today included (D-BUD-09). The campaign screen shows Today's allowance, Spent today and Would stop today at. When the day's spend reaches the allowance less the same headroom, the whole campaign pauses for the rest of the day and resumes at 00:00 UTC (D-BUD-10, D-BUD-17). The allowance is fixed from the spend before today's 00:00 UTC, so today's own clicks never move it, and it is worked out again at once if the budget changes during the day (D-021-40). There is no allowance stop in the last 60 minutes of a UTC day, and a lifetime budget is never paced (D-021-05).

When the figures are out of date, the system stops to be safe

The stop depends on fresh spend figures. If they are more than 10 minutes old, ClickFactor fails safe: it forecasts with the highest hourly rate of the last 24 hours across the whole stale period, and stops any campaign that rate could carry over its stop point. Past 30 minutes, or when the figures cannot be read at all, it stops every campaign that has a budget in play (D-BUD-19, D-021-01). These stops lift on their own once the figures are fresh and spend is below every stop point (specs/021 REQ-010).

Clicks past the budget

Because the stop holds back headroom, a budget is normally not reached. When one is, a click that arrives inside the 24-hour grace after it was reached is paid to the publisher and not billed to the customer, and carries the reason over budget (D-JL-09). The customer is never billed past their budget, and no screen, export or statement ever shows them billed above it, not even briefly (D-JL-15).

A budget has a history

Every budget is a record with a start and, once replaced or removed, an end; a change closes the current record as it opens the next, and nothing is ever edited or deleted (D-024-01). What a change does, and the question you are asked when a raise clears a stop, is on Changing a budget.