Message templates

Reusable messages for common situations — booking reminders, door codes, plan renewals, lockouts, no-shows.

Back
Message templates · Golf Box
18 templates · 13 active · 5 paused
3,847 sent last 30 days · avg 4.2% reply rate · 0.8% opt-out
Live
Category
Status
Bookings · auto-trigger
6 templates · 2,318 sent / 30d
  • Booking confirmation
    auto · on confirm · all customers
    Hi {{customer.first_name}} — you're booked for {{booking.bay}} at {{booking.time}}. Door code arrives 30 min before.
    SMS
    912sent · 1.2% replies
    Edit
  • Day-of reminder · 4 hours before
    auto · 4h before start · all customers
    Heads up {{customer.first_name}} — your {{booking.bay}} session is at {{booking.time}} today. Door code: {{booking.door_code}}.
    SMS
    586sent · 2.1% replies
    Edit
  • Door code dispatch · 30 min before
    auto · 30m before start · all customers
    Your door code for {{booking.bay}}: {{booking.door_code}}. Valid for the full session length.
    SMS
    586sent · 0.3% replies
    Edit
  • Welcome / first booking
    auto · on first confirm · public + members
    Welcome to Golf Box, {{customer.first_name}}! Here's a quick walkthrough video before your first session...
    SMS
    28sent · 14.3% replies
    Edit
  • Booking rescheduled
    paused · was auto-on-reschedule
    Your {{booking.bay}} session has been moved to {{booking.time}}...
    SMS
    —paused 14 days ago
    Edit
  • Booking cancelled by club
    auto · on club-side cancel · all customers
    Sorry {{customer.first_name}} — your {{booking.bay}} session at {{booking.time}} was cancelled. {{refund.summary}}
    SMS
    206sent · 6.8% replies
    Edit
Door codes · access
3 templates · 712 sent / 30d
  • Door code unused · 10 min check-in
    auto · 10m after start, no entry · all customers
    Hi {{customer.first_name}}, we noticed you haven't checked in to {{booking.bay}} yet. Code {{booking.door_code}} is still valid.
    SMS
    42sent · 78% used after
    Edit
  • Door code expired · session ended
    auto · on auto-checkout · all customers
    Thanks for playing {{customer.first_name}} — your {{booking.bay}} session ended. Door code has been retired.
    SMS
    670sent · 0.4% replies
    Edit
  • Door code regenerated · manual
    manual · operator-triggered · all customers
    New door code for {{booking.bay}}: {{booking.door_code}}. Old code retired.
    SMS
    —manual / on demand
    Edit
Plans · renewals + caps
4 templates · 187 sent / 30d
  • Plan renewal reminder · 7 days
    auto · 7d before renewal · members
    Your {{plan.name}} plan renews in 7 days at {{plan.price}}. Manage your subscription: {{links.account}}
    38sent · 3.2% replies
    Edit
  • Plan-hour cap nearing · 95%
    auto · on 95% utilization · members only
    Hey {{customer.first_name}} — you've used {{plan.hours_used}} of {{plan.hours_total}}. Need more? {{links.addon}}
    SMS
    14sent · 21% click-through
    Edit
  • Plan payment failed
    auto · on Stripe failure · members
    Heads up {{customer.first_name}} — we couldn't process your {{plan.name}} renewal. Update your card: {{links.account}}
    SMS
    3sent · 100% recovery
    Edit
  • Plan suggestion · upsell to Premium
    paused · was auto-on-6hr-Basic-usage
    Hi {{customer.first_name}}, you've been playing more than your Basic plan covers...
    —paused for Q3 redesign
    Edit
Lockouts · No-shows · Marketing
5 templates · 630 sent / 30d · View all
  • No-show follow-up · day after
    auto · 24h after no-show · all customers
    Hi {{customer.first_name}}, we missed you yesterday. Book a make-up session — first 60 min on the house this week.
    SMS
    15sent · 37% recovery
    Edit
  • Tonight-prime promo
    manual · sent via promote flow
    Hey {{customer.first_name}} — we have {{promo.slot_count}} open slots tonight. Members get first dibs.
    SMS
    312sent · 12% conversion
    Edit

Variables reference

Available {{namespace.field}} substitutions. Resolved at send time; unknown variables fall back to an empty string + log a warning.

All 24 variables ›
{{customer.first_name}}
Customer's first name; falls back to "there"
{{customer.phone}}
E.164 format · masked in SMS preview
{{booking.bay}}
Display name (e.g. "Bay 1")
{{booking.time}}
Customer's local time, e.g. "Tomorrow 10 AM"
{{booking.door_code}}
4-digit code · only resolves if dispatch window is open
{{plan.hours_used}}
Numeric · 1 decimal place
{{plan.hours_total}}
Plan included-hours cap
{{links.rebook}}
One-tap rebook URL · valid 30 days
{{links.account}}
Member account page
How message templates work
Templates live on message_template with trigger_kind enum (manual | on_booking_confirm | n_hours_before | on_plan_renewal | on_lockout | on_no_show | on_winback | ...). Each template carries a body_html with {{namespace.field}} placeholders. The dispatcher resolves placeholders at send time from the booking/customer/plan context. Pausing a template via the Edit sheet sets status = paused; existing scheduled sends in the queue stay scheduled unless explicitly cancelled. Version history is kept on message_template_revision rows — last 10 versions retained, older versions garbage-collected.