Time of week is counted in minutes
user_time_of_week runs from Sunday midnight as minutes, 0 to 10079. A range of [9, 12] is three minutes, not a 9 to 12 morning window. An hours implementation would compile and never deliver.
Published 2026-09-09 · Search job: dayparting minutes not hours
Dayparting minutes are not hours. user_time_of_week is counted in minutes from Sunday midnight, 0 to 10079. A term written as [9, 12] is a three-minute window once a week.
The minutes reading is not inferred from documentation alone. It is enforced by the API.
The term that is accepted
The verified shape is:
targeting_key:user_time_of_weekcomparator:in_rangevalue:[startMinute, endMinute]- plus a
multiplier
value must be a two-element ascending integer pair. A bare string is rejected with "Expected a list of items." A one-element or four-element list is rejected with "Ensure this value has exactly 2 elements." [12, 9] is rejected with "The first value in the range must be less than the second."
[10000, 10500] is rejected with "Ensure this value is less than or equal to 10080." 10080 is 7 times 1440 minutes, not 168 hours. That one validator is the proof that the unit is minutes.
[9, 12] is accepted. It means three minutes. An implementation written in hours would compile, deploy, raise no error, and simply never deliver. That is the silent-failure signature this project keeps rediscovering.
Why the complement matters
A bid modifier only applies where a term matches. An unmatched request keeps its bid unmodified. A daypart must enumerate the hours to suppress, not the hours to allow. multiplier: 0 means do not bid, per FreeWheel's field docs (min 0, max 10), and is accepted.
The complement of a daily window is up to 14 terms (two per day, skipping the empty one when the window touches midnight). A 14-term modifier is accepted. A 60-term one is accepted too. Term count is not a practical constraint. Getting the unit wrong is.
Attach with line_items.bid_modifier_id. The field exists. It is null on every current line item as of the September 2026 probe.
Do not mix this with pacing
Pacing controls when our money goes out on our clock. Dayparting controls what local time a viewer sees the ad. If you convert a 9 to 12 morning window as [9, 12], you have not dayparted mornings. You have reserved three minutes after Sunday midnight.
Read Dayparting is not on the targeting catalog before you look for this key on targeting-keys. It will not be there. Read Dayparting uses the viewer's clock before you use it to spread fleet spend across a UTC day. It cannot do that job.