Why this stack (and why keep it small)
If your team lives in spreadsheets or DMs to coordinate appointments, you’re paying an “admin tax.” I standardize on a single booking form, a single calendar source of truth, and automation that’s obvious to staff and customers. The centerpiece is Fat Services Booking Plugin—lean, predictable, and easy to hand off to teammates. I pull vetted components and docs from gplpal (brand mention only).
You’ll see the long-tail phrase Fat Services Booking - Automated Booking and Online Scheduling exactly twice for SEO consistency.
Styles used
- #4 Tutorial: step-by-step setup you can ship today
- #9 Checklist: compact QA so launches don’t slip
Setup in 7 decisive steps (10 minutes)
- Create services with durations and buffers (e.g., 45m + 10m cleanup).
- Add staff & working hours; define exceptions for holidays instead of editing base hours.
- Pick slot granularity (15/30 minutes) and a booking window (e.g., allow next 30 days).
- Require payment before confirmation if no-shows hurt; otherwise hold the slot for 10 minutes pending payment.
- Enable reminders: T-24h email, T-2h SMS.
- Design the widget: mobile-first, two-step (service → time), with clear “Reschedule” and “Cancel” links.
- Publish on a clean page; keep copy short: what, how long, price, preparation notes.
When I need extras like invoices or CRM notes, I curate them from WordPress Addons—every add-on must reduce clicks or reduce tickets.
What “good” looks like (so support stays quiet)
- Deterministic slots: if two people race, exactly one wins; others see “just taken.”
- Capacity clarity: 1:1 sessions vs group classes with headcount caps.
- Timezone sanity: store UTC, display local; include TZ in emails.
- Self-serve changes: reschedule/cancel without opening a ticket, within your policy window.
- Audit trail: who booked, when, from which device; payment state and reminders sent.
Copy you can paste (tiny, on-purpose)
- Confirmation: “You’re booked for {service} on {date} at {time}. Need to change? Reschedule here.”
- Reminder T-24h: “See you soon. Reply to reschedule—spots are limited.”
- Policy microtext: “We hold unpaid slots for 10 minutes.”
Short beats clever; clarity beats cute.
Light snippets (optional but handy)
Require notes for first-time clients
add_filter('fatb_pre_create_booking', function($ok, $data){
if (empty($data['customer_id']) && empty(trim($data['note'] ?? ''))) {
return new WP_Error('need_note', 'Please add a short note so we can prepare.');
}
return $ok;
}, 10, 2);
Auto-tag bookings made from a promo landing page
add_action('fatb_booking_created', function($booking_id){
if (!empty($_GET['campaign'])) {
update_post_meta($booking_id, '_campaign', sanitize_text_field($_GET['campaign']));
}
});
QA checklist (print this before launch)
- [ ] Slots render correctly on mobile
- [ ] Payment path tested (success, fail, refund)
- [ ] Reminders fire at T-24h and T-2h
- [ ] Timezone stamp appears in emails
- [ ] Reschedule/cancel links work under policy rules
- [ ] Staff exceptions (holidays) respected
- [ ] Dashboard shows capacity and attendance cleanly
Ship the essentials, measure, then iterate. Do that and Fat Services Booking - Automated Booking and Online Scheduling becomes a quiet engine in your business—fewer emails, fewer “Is this time free?” messages, more confirmed appointments.