MF Appointment Booking

ማብራሪያ

Let customers choose a service and an available time, then book directly on your WordPress website. Use a general agenda without creating professionals, or assign a team when your business needs one. MF Appointment Booking brings your calendar, availability and booking form into a clean workspace with separate settings tabs.

Use it for consultations, coaching sessions and other appointment-based services. Free bookings work without a payment account. For paid appointments, connect your own Stripe, PayPal or Redsys account and choose full payment or a deposit.

Booking and availability

  • Reception bookings can be confirmed for in-person payment without an online gateway. Record cash, card-terminal or bank-transfer receipts, partial payments and the outstanding balance. Recording a receipt never charges a customer.
  • Optional customer rescheduling through the private booking link, with a configurable deadline, availability checks and updated confirmation emails and reminders.
  • Optional weekly service hours restrict existing business, location and professional availability, including appointment buffers.
  • Private diagnostics for background tasks, email, Google Calendar and online payment verification, with a bounded event history and no customer details or credentials.

  • Create bookings from the admin calendar or a customer record, with the same availability and pricing checks as the public form.

  • Booking detail panel with contact editing, form answers, private notes, participant rates and change history.
  • Customer directory with name, email and phone search, reservation history and contact reuse without customer accounts.
  • Copy daily hours, save reusable weekly templates, and set holidays or special opening hours for a date range.
  • Optional activity sessions with shared seat capacity, adult/child/senior or custom rates, free tickets, quantity limits and itemized group totals. Deposits are calculated on the group total.
  • Services shared across locations by default, with optional single-location restrictions. Each location has its own general capacity, opening hours and appointment address; professionals share capacity across locations.
  • Guided, direct Google Calendar connection with your own credentials, a copyable redirect URI and writable-calendar dropdowns. Two-way sync exports bookings, imports valid moves and cancellations, and blocks external busy times.
  • Custom fields: text, long text, email, phone, select, checkbox and number. Number fields support optional minimum and maximum values.
  • Conditional visibility for every custom field type, based on earlier answers, the selected service or professional.
  • Separate payment gateway cards, including Redsys hosted redirect with signed payment notifications (EUR).
  • Add confirmed appointments to Google Calendar or Outlook, or download an .ics file for Apple Calendar.
  • Configurable appointment address, directions link and {location} email placeholder.
  • Built-in documentation in expandable cards, with copyable shortcodes grouped at the end.
  • Complete Spanish (Spain) translation for the admin, public form and default emails.
  • Optional professionals per service: use shared general-agenda capacity or each professional’s own schedule.
  • Tabbed settings with contextual saving, retained input on errors and unsaved-change warnings.
  • Appearance controls for heading, welcome message, colors, corner radius and form width, with a live preview and contrast validation.
  • A visible month picker, keyboard navigation, booking summary and contact details preserved when going back.
  • Automatically skip the professional choice when there is only one, or let the customer confirm it.
  • Services, professionals and departments, duration, price, capacity and buffers.
  • General and professional schedules, holidays, date exceptions and manual time blocks.
  • Multi-step booking with editable custom fields, a shortcode and a Gutenberg block. Elementor supports the shortcode widget.
  • Stripe Checkout and PayPal Orders, full payment or fixed/percentage deposits. Free appointments are supported.
  • Confirmation, reminder and cancellation emails with editable plain-text templates and scheduled retries.
  • Administrative list, filters, day/week/month calendar, drag-and-drop rescheduling and keyboard-accessible editing.
  • CSV and iCalendar exports, read-only availability REST API and extension hooks.
  • WordPress privacy export/erasure tools and WPML/Polylang integration.

Appearance and email personalization

Style form headings, secondary text, fields, borders and selected dates; choose typography, spacing and corners. Preview example booking steps at desktop or mobile widths, restore defaults or add safe CSS scoped to the booking form. Custom fields use collapsible cards with consistent move actions and dependency warnings.

In Emails, expand Reminder to enable reminders and set the lead time in hours or days. Customize subjects and messages using the supported variables. Optional HTML design adds a logo, colors and footer, with example previews and a test sent only to your administrator account. Existing sites retain plain-text email until HTML is enabled.

Included without a plugin subscription

All features listed here are included. MF Appointment Booking does not require a MF Appointment Booking account or subscription. Stripe, PayPal and Redsys have their own fees and account requirements.

Languages and page builders

English and Spanish (Spain) are included. The frontend follows the site language; the admin follows your profile language. WordPress.org language packs remain supported. Default email templates follow the booking language; custom business text is preserved. Use the native booking block, the [mfab] shortcode, or Elementor’s Shortcode widget. WPML and Polylang integration shares availability between translations of a service or professional.

Privacy and control

Booking records stay in your WordPress database. Customers access their booking with a private link, without creating an account. MF Appointment Booking integrates with WordPress personal data export and erasure tools. Active appointments and records requiring a refund are retained during erasure so the business can resolve them. Site owners remain responsible for their privacy policy and retention practices.

Documentation

The plugin includes a setup and operations guide in docs/USER-GUIDE.md, extension documentation in docs/HOOKS.md, and dependency information in docs/THIRD-PARTY.md. Readable JavaScript sources and the FullCalendar license are included in the package.

External services

Payments are optional and require your own provider account. No requests are sent to a payment provider until an enabled payment method is used or its payment is reconciled. Card details are entered on hosted checkout pages and never stored by MF Appointment Booking.

Stripe receives the booking reference, email, service name, amount and currency when checkout begins. API: https://api.stripe.com ; checkout: https://checkout.stripe.com . Terms: https://stripe.com/legal/ssa . Privacy: https://stripe.com/privacy . Configure the checkout.session.completed webhook shown in MF Appointment Booking settings.

PayPal receives the booking reference, amount, currency and return URL. API: https://api-m.paypal.com or https://api-m.sandbox.paypal.com . Terms: https://www.paypal.com/legalhub/paypal/useragreement-full . Privacy: https://www.paypal.com/legalhub/paypal/privacy-full . MF Appointment Booking captures approved orders on server verification and reconciles payments via cron.

Redsys receives the merchant order, amount, currency, merchant/terminal identifiers and notification/return URLs when the customer continues to its hosted bank page. This integration uses HMAC_SHA512_V2 and EUR. Test endpoint: https://sis-t.redsys.es:25443 ; live endpoint: https://sis.redsys.es . Terms: https://redsys.es/aviso-legal . Privacy: https://redsys.es/politica-de-privacidad . A signed server notification confirms payment; the browser return never does.

Business Google Calendar synchronization is optional and starts only after an administrator connects their business account using their own OAuth client. Google receives the service title, appointment address and times; customer names, emails, answers and private booking links are excluded. The plugin reads calendar names, IDs and access roles to offer a writable-calendar picker, and event IDs, times and availability from assigned calendars. It stores the calendar list temporarily and busy intervals and event mappings locally. Tokens are stored privately in WordPress. OAuth: https://accounts.google.com and https://oauth2.googleapis.com ; API: https://www.googleapis.com/calendar/v3 . Disconnecting stops future requests and keeps existing events; access can also be revoked from the Google account.

Calendar scripts are bundled locally. Optional Google Calendar and Outlook links open only when a customer chooses them and include the service title, appointment times, business name and address. No email, custom fields or private management token is included. The directions link sends the address to Google Maps only when clicked. An .ics file is generated locally. These are calendar copies, not synchronized subscriptions: customers must update or remove them after changes or cancellations.

Google Calendar and Maps: https://calendar.google.com and https://www.google.com/maps . Terms: https://policies.google.com/terms . Privacy: https://policies.google.com/privacy . Outlook: https://outlook.live.com . Terms: https://www.microsoft.com/servicesagreement . Privacy: https://privacy.microsoft.com/privacystatement .

Screenshots

Blocks

This plugin provides 1 block.

  • MF Appointment Booking booking

መጫን

  1. Copy the mf-appointment-booking directory into wp-content/plugins.
  2. Activate MF Appointment Booking in Plugins.
  3. Create and publish a page containing [mfab] or the MF Appointment Booking booking block. Select it in MF Appointment Booking > Settings.
  4. Publish a service. Choose General agenda to accept bookings without professionals, or Assigned professionals for a team service.
  5. Configure opening hours and general capacity, then customize Appearance, Form fields, Payments and Emails in Settings. Use [mfab] for all services or combine service, professional and location filters on dedicated pages.
  6. For paid services, add Stripe, PayPal or Redsys credentials. Test your own provider configuration in sandbox before accepting real payments.
  7. Configure WordPress mail delivery and a system cron invoking wp-cron.php (recommended every five minutes).

Composer and vendor are not required to run the plugin.

የተለመዱ ጥያቄዎች

Can I offer adult, child and senior prices for one activity?

Yes. Enable activity sessions in that service and configure rates, session start times and shared seat capacity. Customers choose quantities; free participants also consume seats. Reservations retain their original rate breakdown. Ordinary services keep their single-price booking flow.

Do I need to create professionals?

No. Choose General agenda in the service editor. These services share capacity within their location. The main location uses Booking settings; additional locations have their own hours and capacity. Team services retain their own professional schedules and capacity. General-agenda appointments and team appointments use separate capacity pools.

Can I customize the design without code?

Yes. Settings > Appearance provides colors, heading, welcome text, rounded corners and maximum width with a live preview. Text/background contrast is validated and button text adapts to the accent. The form adapts to smaller screens.

What changes when upgrading from 1.0.2?

Existing bookings, private links, payments, templates and professional assignments are retained. Existing assigned services remain team services; unassigned services become bookable using the general agenda when their duration and price are configured. Review those services before upgrading. Changing a service between agendas is blocked while it has upcoming active bookings. See docs/MIGRATION.md.

Are refunds automatic?

No. Issue refunds in your payment provider dashboard. Cancelled paid bookings and late payments are marked as requiring a refund. The remaining balance on deposit bookings is collected separately by the business.

Which timezone is used?

Opening hours, the admin calendar, appointment lists, editors and public times use the WordPress site timezone. Bookings are stored in UTC. Choose a city timezone in WordPress Settings > General for automatic daylight-saving changes. Fixed UTC offsets remain fixed.

What happens on uninstall?

Data is retained to prevent accidental loss. Use the native privacy tools for individual requests and the documented cleanup procedure for complete removal. Activate individually on multisite; network activation is not supported.

Which currencies are supported?

EUR, USD, GBP, CAD, AUD, CHF, SGD and NZD (two decimal places). Redsys is limited to EUR. Provider minimum amounts and account/country restrictions still apply.

Is Google Calendar synchronized?

Business calendars can be connected with your own Google OAuth client. Confirmed appointments sync in both directions; other busy Google events block availability. Synchronization runs through cron every five minutes, and stale calendars temporarily stop offering times. Customer Google/Outlook links and .ics downloads remain independent copies. Customer accounts are not included.

Can I offer services at several locations?

Yes. New services are shared across all published locations by default, or can be restricted to one location. Customers choose where to book without duplicating service entries. General agendas have independent capacity, while professionals share capacity across locations. Existing assignments and booking addresses are preserved. Travel time is not calculated; configure service buffers.

How do conditional fields work?

Each field can depend on the service, professional or an earlier answer, using equals, does not equal, has a value or is empty. Choose services and professionals by name, dropdown options or checkbox states. Hidden fields are neither required nor saved. Number fields support optional minimum and maximum values.

Can I filter the booking form by service, professional or location?

Yes. Use [mfab service=”123″], [mfab professional=”456″] or [mfab location=”789″], or combine them: [mfab service=”123″ professional=”456″ location=”789″]. Replace each value with its editor ID. All filters must match. Omitted filters allow all choices; location=”0″ is the main location and professional=”0″ the general agenda. Invalid or incompatible combinations show no services. A fixed professional skips the professional selection step. Use the same shortcodes in Elementor and keep an unrestricted [mfab] page for booking management.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“MF Appointment Booking” is open source software. The following people have contributed to this plugin.

Contributors

Changelog

3.6.2

  • Preserve the selected calendar time and protect unsaved booking drafts during closing and independent actions.
  • Configure conditions with named choices, refresh date exceptions immediately and confirm template replacement or deletion.
  • Show server validation errors beside their controls, opening folded sections and moving focus to the first error.

3.6.1

  • Keep participant-rate checkboxes square and prevent compact controls from stretching in admin forms.
  • Choose advanced appearance colors visually and restore automatic inheritance from the main colors.
  • Verify catalogue and settings layouts on desktop and mobile, including color preview and saved values.

3.6.0

  • Fold custom fields into readable cards with aligned actions, dependency warnings and inline validation.
  • Configure reminder timing and enablement inside the reminder template, using hours or days.
  • Personalize HTML emails with a logo, colors and footer; insert variables, preview examples and send a test to your own account.
  • Extend form appearance with typography, spacing, heading and field colors, scoped custom CSS and desktop/mobile step previews.
  • Unify interactive states, catalogue spacing and responsive form layouts; share appearance rendering between preview and booking form.
  • Preserve existing plain-text emails, booking records and payment behavior. Include complete Spanish (Spain) translations.

3.5.1

  • Apply the configured text color to all booking form headings and the live preview.
  • Refine booking validation and availability messages, preserve participant selections and calendar navigation, clarify payments and Google troubleshooting, and organize reminder settings and documentation.

3.5.0

  • Reception payments, optional customer rescheduling, service opening hours and private diagnostics. Documentation uses expandable cards and a final full-width shortcode guide.

3.4.2

  • Fix empty booking panels and explain how to publish a bookable service.
  • Show main-location and general-agenda defaults, availability states and a clear booking total.
  • Restore native WordPress title fields in service, location and professional editors.

3.4.1

  • Move Google Calendar into Settings and keep Settings last in the menu.
  • Refine customer spacing, schedule checkboxes, activity fields and native catalog headings.
  • Refresh the existing eight desktop screenshots and Spanish translations.

3.4.0

  • Add administrative booking creation, detailed booking panels, private notes and customer history.
  • Add optional shared-capacity activity sessions and participant rates with immutable price snapshots.
  • Add reusable weekly templates, copying of daily hours and date-range exceptions.
  • Update documentation and Spanish translations; retain the existing eight screenshots.

3.3.0

  • Share new services across locations, preserving existing assignments and reservation addresses.
  • Unify the calendar with the business timezone and modernize catalog editors, labels, menus and location schedules.
  • Replace rich-text editors with a plain service description and restore the previous eight screenshots.

3.2.0

  • Guide Google Calendar setup with three steps, direct Google Cloud links and a copyable redirect URI.
  • Select writable calendars from a dropdown, with safe preservation of existing connections and assignments.
  • Refresh the eight desktop screenshots and Spanish translations.

3.1.1

  • Number all thirteen documentation cards consistently, including the shortcode examples.
  • Refresh the documentation screenshot and Spanish translations.

3.1.0

  • Add combinable service, professional and location shortcode filters, with safe empty results for invalid or incompatible selections.
  • Clarify all seven custom field types and conditional visibility; update embedded documentation and complete Spanish translations.

3.0.1

  • Refresh the directory gallery with exactly eight English desktop screenshots, ordered from customer booking to administration.
  • Update screenshot descriptions and the Spanish listing translation. No booking behavior changes.

3.0.0

  • Add two-way business Google Calendar synchronization with OAuth, conflict checks and external busy times.
  • Add locations, independent general agendas, shared professional capacity and booking address snapshots.
  • Add Redsys HMAC_SHA512_V2 hosted payments in EUR and separate gateway settings cards.
  • Add numeric custom fields with optional bounds and server-validated conditional visibility.
  • Align the calendar filter button with its fields.
  • Update embedded documentation, setup guides and complete Spanish translations.

2.1.1

  • Clarified language settings and community translation support in the built-in guide.
  • Refreshed all nine directory screenshots in English at a consistent desktop resolution.

2.1.0

  • Add customer calendar links and ICS downloads for confirmed bookings.
  • Add appointment address, directions and the {location} email placeholder.
  • Add a categorized Documentation tab with copyable shortcodes.
  • Include complete es_ES PHP/JavaScript translations and localized default emails, with mandatory translation checks in CI.
  • Use the page language for dates and the profile language in the administrative calendar.

2.0.0

  • Book services without professionals using a shared general agenda with race-safe capacity, buffers, cancellations and manual blocks.
  • Replace the long settings page with six accessible tabs, cards, contextual saves and retained input on validation errors.
  • Add configurable appearance with live preview and accessible color validation.
  • Add a visual month picker, booking summaries, automatic single-professional selection and preserved contact details.
  • Support service-specific shortcode forms and retain existing bookings, team assignments and private links on upgrade.

1.0.2

  • Rename the plugin and all runtime identifiers to MF Appointment Booking.
  • Use WordPress.org language packs instead of bundled translations or manual textdomain loading.
  • Audit request authorization and document the migration from the private prerelease.

1.0.1

  • Fix: restore the Calendar submenu and open the appointment calendar when clicking MF Appointment Booking.
  • Add a regression check for navigation through the WordPress admin menu and clarify the calendar access in the user guide.

1.0.0

  • Complete booking, scheduling, payments, email, calendar, form builder and export workflows.
  • Race-safe capacity checks, payment verification/idempotency, DST handling and privacy tools.

0.1.0

  • Initial private catalog with validated metadata and administrator permissions.