Generate a WordPress appointment booking plugin with Stripe payment
Appointment booking is a crowded market (Amelia, Bookly, Calendly, Acuity) but each has a specific opinion about services, staff, and pricing. When your flow is slightly off-grid — single practitioner, fixed slot length, deposit-only upfront — it is often faster to ship a focused plugin than to bend an existing one.
We generate a plugin that owns the booking table, talks to Stripe for the deposit, writes the confirmed appointment to Google Calendar, and sends reminder emails. Three hundred lines, exactly your flow, no feature bloat.
Why generate it instead of installing an existing plugin?
Amelia starts at €60/year and scales to €300+/year with add-ons. Bookly is €89 plus add-ons per feature. Calendly embeds are free up to a point but then push you to their tiers, and critically they do not own the data inside your WordPress.
A generated plugin keeps everything in your DB (appointments, customer info, payment status), uses Stripe Payment Intents for the deposit with proper 3DS handling, and syncs to Google Calendar via a service account so you never OAuth your own account.
The concrete win: you can modify anything. Want to block bookings 24h in advance? One line. Want a custom intake form tied to the booking? Add fields. The plugin is yours, not a rented config.
Example prompt
This is the kind of description that generates this plugin. You can start from it and tweak whatever you need before hitting generate.
Plugin name: Acme Booking
Single practitioner. Service: 60-minute consultation at €100. Deposit: €20 at booking.
Availability: Mon-Fri 10:00-18:00 Europe/Madrid, 30-min slot intervals, no weekends.
Blackout: configurable list of dates via admin.
Flow:
1. Visitor sees calendar (4 weeks out), clicks an open slot.
2. Form: name, email, phone, short note.
3. Stripe Payment Element collects €20 deposit.
4. On payment success: create appointment row, send confirmation email to customer + admin, create Google Calendar event via service account.
5. 24h before appointment: send reminder email (WP Cron).
Customer can cancel via a signed link in the email; if > 48h out, deposit refunded automatically via Stripe refund API.
Admin: list + filters, mark-complete, notes, total revenue this month.What the generated plugin typically includes
- Custom table for appointments with status (pending, confirmed, completed, cancelled, refunded)
- Calendar UI rendered from availability rules + existing bookings
- Stripe Payment Intent with automatic 3DS
- Google Calendar sync via service account (no per-user OAuth)
- WP Cron for reminders and retention cleanup
- Signed cancel/reschedule links with HMAC
- Admin dashboard with monthly revenue and upcoming bookings
Slot length, availability, deposit %, cancellation policy, and which emails go out are defined in the prompt. Multi-practitioner/service is possible but adds complexity; describe it explicitly if needed.
Frequently asked questions
What about timezones?
The admin stores appointments in the shop timezone. Customer-facing emails show their local timezone detected from the browser, with an ICS attachment that clients convert automatically.
Does it handle Stripe disputes?
The plugin listens to charge.dispute.created and flags the appointment. Refund automation on early cancellations is built-in; dispute handling is manual from the Stripe dashboard.