Every contest, every station, one hub. And it agrees with itself.
Plan promotions, track prize inventory, record winners, schedule liners and imaging, and run remotes — every station in the group, in one hub that agrees with itself.
A promotions department runs on records — who won what, what it was worth, what is left, what airs when. These cards name the rules that keep those records honest, and the limits that come with them.
Paused is not ended
A promotion's lifecycle is a choice; where today sits against its dates is derived. Pause one mid-flight and it says paused — not ended, which is what single-flag systems tell the jock who then stops plugging a contest that is still running.
One number, however you count it
Every stat on the hub is computed in SQL over the whole table. The headline cards and the lists underneath them cannot disagree, because they are the same query — not a server count sitting over a first-fifty-rows list.
The claimed counter cannot drift
Because it does not exist. What a prize has left is derived from its winner rows every time anyone asks, so inventory is never a second number somebody forgot to decrement — and a forfeited win puts the prize straight back on the shelf.
Prizes know their days
Every prize carries a day-of-week window and an optional date range of its own. A weekday-only gas card never appears in Sunday's show prep, so the overnight jock cannot give away what the sales contract said Monday to Friday.
The winner does the data entry
Award the prize, issue the link. The listener opens it, types their own contact details and postal address, and signs the release — so the record is in the winner's own words and nobody at the station retypes a phone number wrong.
Signed before it is collected
The winner link carries your release text, and the name the listener types is kept verbatim as the signature record, with the moment it was signed. Revoke a link and every later visit is a plain 404 — it never confirms what the URL used to be.
January cannot rewrite itself
A prize's per-unit value is frozen onto the winner row at award time, in integer cents. Reprice the prize in March and January's totals do not move — so each listener's calendar-year figure, and the $600 1099 flag on it, holds still for the bookkeeper.
Eligibility, before the congratulation
Every prize carries a per-winner limit, and a listener's wins are on their record where you award. "You've already won this month" is a thing the screen says before the on-air congratulation, not a thing legal says after.
Liners that read where they air
Live-read copy tied to its promotion and scheduled by date range, with an optional station-specific cut. What a jock sees is what is current — a liner outside its window is not in today's list.
Imaging with six named stages
Needs review, needs voicing, needs producing, final review, needs scheduling, completed. Every promo, sweeper, credit and bumper is at exactly one of them, with the cart number recorded once playout has one — so nothing sits in an unnamed limbo.
The remote on one page
A run sheet for every appearance: venue and address, the contact and their phone, door times, what the street team brings, team notes and the on-air mentions. The van leaves with the whole plan, not with whoever remembers it.
The month in one query
Promotion starts and ends, prize windows and events on one calendar, windowed in the database rather than paginated — so the week you are looking at is the whole week, whatever size the tenant.
Rename a station, it renames everywhere
Stations are rows with a join table, not an id list serialized into a column. "Everything running on the FM" is an indexed query, a callsign change is one edit, and a station that signs off is archived with its history intact.
Your listener database, portable
Every contest builds an audience. Export the listener database as CSV whenever you want it — names, contact details, addresses — because it is your record, not a thing the platform holds hostage.
Read-only seats for the airstaff
Viewers read everything — show prep, liners, what is left on the shelf — and can change nothing. Members and up write. A jock checking prep at 5am cannot archive the contest by mistake.
Who did what, kept
Consequential actions write an audit row — who awarded, who archived, who changed the plan. The activity feed reads the same log, so accountability is not a separate system that could disagree with it.
Nothing silently undeletable
Promotions, prizes, stations and sponsors archive rather than delete, so history keeps its references. And a listener with wins on record cannot be deleted out from under the prize ledger — the product offers archive or anonymise instead of failing mysteriously.
Name the signals and the advertisers behind the prizes. Optional and skippable — a promotion runs fine without either, and you can attach them later.
2
Create the promotion, stock the prizes
Dates, stations, the show-prep notes, then the shelf: quantities, values, per-winner limits and the days each prize may go out the door.
3
Award winners — the link does the paperwork
Pick the prize and the listener; the value freezes itself. Send the winner link and the listener types their own details and signs the release.
For programme directors
Numbers you can repeat in the Monday meeting
A hub that computes every figure over the whole table means the answer you read is the answer, whichever station, whichever market, however big the quarter got.
1
One look across the group
Every station's promotions on one hub and one calendar. What is live, what is paused, what ends this week — per market, without ringing each building.
2
Paused is a decision you can see
Two status axes mean the hub distinguishes a promotion someone stopped from one that ran its course. The difference is exactly the thing a PD needs to ask about.
3
Rankings over everything
Top promotions by awarded value and most-awarded prizes, computed over every row in the period — not over whatever page of the list happened to load.
4
Give the airstaff the keys, not the pen
Viewer seats let every jock read show prep, liners and prize availability without being able to change a record. Access stops being a reason things live on paper.
Awarding is the daily verb, so it is the shortest path in the product — and the parts that used to mean a clipboard, a release form and a January of spreadsheet archaeology are records the system keeps as you go.
1
Award in seconds
Prize, listener, done. The unit value freezes onto the record at that moment, and the per-winner limit has already been checked against their history.
2
Send the link, skip the retyping
The winner submits their own contact details and address and signs the release on their own phone. What lands in the database is their spelling, not your transcription.
3
Know what is left on the shelf
Low stock and promotions ending with prizes still unclaimed are surfaced on the hub — the ones someone should be giving away harder this week.
4
January is already done
Calendar-year totals per listener, values as they were at award time, the $600 threshold flagged, and a CSV for the bookkeeper. Tax season is an export, not a reconstruction.
A winner link shows the listener their prize, your station group's name and your release text — no other winner, no other record. Revoke it and the address stops existing; every later visit is a 404.
Every plan includes the whole product. What changes is scale: how many promotions may be live at the same time, and how many stations the workspace programs. Nothing is metered and nothing resets monthly.
Prices in USD. The caps are live counts, not meters: pause or archive a promotion and its slot frees instantly, archive a station and so does its. Nothing accrues, nothing resets on a date, and there is no overage to be surprised by.
No seat pricing on any plan. Invite the whole airstaff — the caps count promotions and stations, never people, and a read-only Viewer seat costs the same as no seat at all: nothing.
No plan on this page carries an uptime commitment, a service-level credit or a support response time. The Terms of Service are what govern.
For developers
One key, REST and MCP
The API reads and writes the same records the console does — promotions, prizes, winners, events. Issue a key from the workspace, keep it in your environment, and wire the promo calendar into whatever already runs your station.
Keys are hashed at rest and scoped to what each integration needs.
Reads and writes across promotions, prizes, winners and events — the same records the console holds.
REST and MCP from one catalogue, so one key drives both.