Your own portal
A campaign goes through five states, and you can see all of them.
The lifecycle is an enforced state machine, not a status field somebody updates by hand: draft, pending approval, approved, scheduled or active, then paused, ended or exhausted. Nothing skips a step, including ours.
1. Draft — build it yourself
Pick your placement, pick a creative from the library, and watch the patron-facing preview render as you go. The builder shows a projected reach and return panel beside it, labelled as modelled on every field, and it shows nothing at all rather than a fabricated number when it has no basis for one.
2. Pending approval — a human reads it
Submitting moves the campaign into an approval queue. Creative that runs in somebody's bar in front of somebody's guests gets looked at by a person. This is a feature of the product, not a delay in it.
3. Approved, then scheduled or active
Once approved the campaign schedules or goes live against the venues and window you chose, and serving obeys the ancillary allow-list, the Sponsored label and the frequency budget on every single impression.
4. Live — impressions and taps, deduplicated
Every impression and every tap is recorded as an idempotent, receipt-verified event against your campaign, capped per guest per day so one person cannot inflate your numbers by reloading a screen. Your dashboard, insights, reach and ROI views read from that.
5. Paused, ended or exhausted
You can pause. A campaign that reaches its window ends. Budget caps and automatic pause-on-spend are built but not yet enforced end to end in the live portal — that one is upcoming, and until it lands your account contact watches the spend with you rather than us pretending a switch is flipped.
What return on ad spend means here
It is a projection, and it only appears when you supply what a redemption is worth to you. DrinkLync does not observe your revenue, so it cannot report your return — it can report what it saw and do your arithmetic. With no live campaign, the insights view is an honest empty state rather than a zero dressed as a measurement.