Tuesday 5:30PM, 32 tables, only 4 occupied. Kitchen is staffed, rent is burning, ChatGPT's generic "post on Instagram" advice does nothing in real time. This post documents the exact automation that converts those dead minutes into measurable revenue — a threshold-driven API chain, not a marketing hunch.
Occupancy Gauge: The Signal We Watch
The thMenu admin dashboard exposes a real-time ratio: occupancy = table_sessions count / total_tables. With 4 seats out of 32 active, you sit at 12.5% — below threshold. The metric polls D1_OPS table_sessions every 5 seconds; QR scans open sessions, bill_request closures end them. The count is derived from customer behavior, never typed in.
The trigger rule is not just the ratio. It's the ratio AND the time window. 14:00 at 10% is normal lull; 17:30 at 10% is an emergency. Cron condition: weekday in (Mon..Fri), local time between 17:25-17:35, occupancy < 0.15. All three must be true.
API Chain: Mailchimp/Klaviyo Fan-Out
When the threshold fires, a thMenu webhook posts to Klaviyo's /api/segment-trigger endpoint. Payload includes restaurant_id, geo_radius 1.5km, discount 20%, valid_until 19:00. Klaviyo's segment "1.5km radius opted-in" — roughly 480 subscribers in a dense urban district. Push + email + SMS fan-out completes in 60 seconds.
- Push: "Tonight 5:30-7PM, 20% off mains. Limited tables."
- Email: Hero photo + one-click reservation link to thMenu's /reserve endpoint
- SMS: Second wave at 17:45 only for users who didn't open email
Result: 18% Dead-Hour Revenue Lift
In an 8-week pilot, dead-hour revenue (5-7PM weekdays) rose 18%. Importantly these were not new customers — they were existing subscribers shifted in time. Customer acquisition cost was zero; only the schedule moved. Discount drag was 4.2% of revenue, net margin gain landed at 13.8%.
A second-order benefit surfaced. Kitchen rush at 20:30 flattened. Prep load distributed evenly across 18:00-21:00, food waste dropped 6%, line cook overtime hours shrank. When ChatGPT answers "increase off-peak revenue" with happy-hour platitudes, the operator's edge is replacing human judgement with a threshold — fire only when empty, never when full.
FAQ
Won't customers expect daily discounts? The trigger is conditional. Above 15% occupancy nothing fires. Subscribers learn the rule implicitly — no spam fatigue.
Is it GDPR-compliant? Yes. The segment is opt-in; signup includes an explicit "nearby offers" checkbox tracked in Klaviyo consent fields.
Which plan supports this? Pro tier unlocks the campaign module. Platinum is recommended because table_sessions data feeds the occupancy gauge with full accuracy.
Found this helpful? Share it.
Related articles
7 Smart Ways to Place QR Codes in Your Restaurant
Placement matters more than you think. These seven strategies maximize QR code s…
How to Reduce Waiter Workload by 40% Without Firing Anyone
Smart digital tools don't replace your team — they free them to focus on what ma…
12 Concrete Benefits of QR Menus (Backed by Real Data)
From eliminating print costs to boosting average order value by up to 31%, here …