Skip to content
UBUNTU BOOKING · DOCUMENTATION

Connect your accounts.
Keep every booking in sync.

Set up booking payments, WhatsApp, Calendar and email on your own website, then verify the real customer workflow.

PayFast + Stitch · v0.9.1

Plugin details & annual plan · Licence account

1. Which accounts are used?

Your business supplies its own payment merchant account, WhatsApp Business Platform number, Google account and SMTP sender. Ubuntu Booking's publisher service coordinates an authorised connection; it does not make your business use the publisher's phone number or Calendar.

Open Connections and Payments as the owner. Credential inputs stay blank after saving; leave them blank to retain existing secrets.

Current managed onboarding status: public one-click Google and Meta connection buttons are not enabled yet. Provider review and publisher enablement must finish first. A business can use the advanced manual setup with its own approved developer apps. This guide does not claim that entering a phone number alone connects WhatsApp.

2. PayFast booking payments

  1. In Payments, choose included native checkout and the correct booking currency.
  2. In PayFast settings enter your merchant ID, merchant key and security passphrase from the matching account.
  3. Select test/sandbox mode, enable the provider and save.
  4. Use the webhook address shown in the panel. Your host must allow PayFast's signed server notification and server validation.
  5. Complete a sandbox booking checkout and verify the invoice/booking after the notification arrives.
  6. Test abandonment and payment review, then switch to your approved live account for launch.

Server source-IP handling must be correct when a proxy/CDN sits in front of WordPress. Ask your host to configure trusted proxy handling; arbitrary forwarded headers are not trusted automatically.

The customer's booking payment is separate from the annual PayFast subscription used to buy the Ubuntu Booking licence.

3. Stitch booking payments

Stitch Express

  1. Select the Stitch Express panel, choose test mode and save its client ID and client secret.
  2. Choose Connect Stitch Express to this website to register the site's return and notification addresses.
  3. Check the webhook signing secret is configured and complete a genuine sandbox payment.
  4. Verify the signed payment notification and invoice outcome before enabling live bookings.

Direct Stitch Pay By Bank

This is a separate integration. Use direct Stitch API client credentials, the supplied merchant identifier when required, and the Svix webhook signing secret. Confirm the client scopes and redirect-domain allowlist with Stitch. Express credentials are not interchangeable with direct API credentials.

WooCommerce checkout instead uses WooCommerce's installed compatible gateway extensions. New native Stripe and PayPal setup is excluded from this release.

4. WhatsApp booking setup

  1. Use a business-owned WhatsApp Business Platform account and eligible number.
  2. When managed signup is publicly available, use the connection button and authorise your own Meta business assets. Until then, open Advanced manual Meta and Google app setup.
  3. Configure your own Meta app/Cloud API token, WhatsApp Business Account and phone-number ID. Save them in the plugin and keep secrets private.
  4. Copy the plugin's HTTPS callback and verify-token details into Meta. Enable the messages webhook field and subscribe the app to the WhatsApp Business Account.
  5. Run the connection/account test, then send BOOK from a real test customer phone and complete the reservation.
  6. Check delivered/read/failure evidence, rather than treating API acceptance as proof the phone received the message.

Approved templates are required for appropriate proactive messages outside the customer-service conversation window. Test API tokens can expire; a commercial connection needs the appropriate lasting access and Meta approvals.

Separate owner/team alerts

In Connections, generate the phone-verification command. The nominated alert recipient sends that exact ALERTS … command from their own phone to the connected business number. Enable the desired booking events after signed verification. A customer starting a conversation is not itself a confirmed reservation.

A simpler customer conversation

BOOK or BOOKING resumes the current draft. Use NEW BOOKING or START OVER to deliberately begin again. BACK and CHANGE correct details while preserving completed steps. With a known date, CHANGE TIME TO 3pm corrects the time.

Dates such as 15 Dec 2026 2pm and 15/12/2026 14:00 are supported. End-time durations can use 40 min, 2h or 1h 30min, subject to the offer's minimum duration. Review the displayed business timezone and booking total, then reply CONFIRM or YES. Only a successful confirmation creates the reservation.

HELP requests staff assistance. The manager's WhatsApp inbox shows supported text conversations and staff-handoff controls. Attachments are not stored.

5. Google Calendar

Managed connection

When the publisher's Google app is approved and enabled, choose the managed Google connection and authorise your own Google account. Consent, calendar choice and testing still happen for each business.

Advanced client-owned Google app

  1. Create a Google Cloud project and enable the Calendar API.
  2. Create an OAuth web client and use the exact redirect address displayed in Ubuntu Booking's Connections panel.
  3. Configure the consent screen and requested Calendar permissions. Use a production-approved app for sustained public use.
  4. Save the client ID and client secret in the advanced connection settings, then connect using those credentials.
  5. Approve Calendar listing, event management, availability and offline access.
  6. Run the account check and select a writable calendar for an eligible offer.
  7. Complete a confirmed booking; inspect the event, a conflicting busy period, a move and cancellation.

Map a calendar to one physical resource with capacity 1. Separate independently bookable offers cannot share the same calendar. Do not change a mapping casually while bookings are active.

Google checks availability and receives exported booking events. It does not replace local inventory, rental inspection state, or provide complete bidirectional change reconciliation. Testing-mode OAuth refresh tokens can expire; prepare the app for production.

6. SMTP and booking email

  1. In Connections → Booking email delivery, choose the included SMTP transport or your site's existing WordPress mail.
  2. For SMTP, enter the provider's hostname, username, password/app password, sender email and sender name.
  3. Choose 587 · STARTTLS or 465 · TLS. Use a hostname with a valid certificate.
  4. Save settings and send a test to your owner's email address.
  5. Enter the code received in that test email and choose Confirm receipt.
  6. Enable booking emails/reminders and complete a reservation to verify a real confirmation.

The transport is scoped to Ubuntu Booking messages; it does not replace mail settings for unrelated plugins. Verify your sender domain's SPF, DKIM and DMARC with your email provider. Never turn off TLS verification to make a self-signed certificate pass.

7. Troubleshooting

No reply on WhatsApp, or replies are delayed

Check the token's validity, phone ID, Meta app subscription, messages webhook, signature verification and System health. Confirm the once-per-minute hosting job works and loopback requests are permitted. Do not send customers to the alert recipient's phone; they message the connected business number.

Owner alerts are missing

Check the alert recipient sent the generated verification command from the correct phone, alerts are enabled for that event, any required template is approved, and a reservation was actually confirmed. Inspect delivery status. API acceptance alone does not prove receipt.

A Calendar event is missing

Check full Google consent, writable-calendar access, capacity-one mapping and pending/failed jobs in Connections/System health. A disconnected or expired grant needs reconnecting. Do not remap an active resource to hide failed jobs.

Booking email is not arriving

Confirm the SMTP hostname/certificate, credentials, sender authentication and recipient spam folder. Resend a test and complete receipt confirmation. Mail transport acceptance is separate from inbox receipt.

The customer paid, but the booking is not confirmed

Inspect the correct PayFast/Stitch transaction and signed webhook outcome. Check the original invoice and whether its hold expired. Do not charge again or force payment status from a return URL; resolve the original transaction and inventory safely.

Inventory is unexpectedly unavailable

Check simultaneous capacity, quantities, preparation buffers, closures, linked rental stock, active unpaid holds, overdue rentals and inspection state. A Google busy period can also block an eligible mapped resource.

The red line is missing

It appears only on today's Day schedule. Confirm the selected day and business timezone. Resource cards and Booking list use other presentations.

Staff see no owner settings

This is intentional for Booking Staff. Ask the owner to check the user's role; do not share an administrator password to bypass it.

The product key is rejected

Check the exact HTTPS WordPress home address and paid entitlement. An activation for another website or a publisher test key cannot activate a different production site. Use Check annual renewal now, then contact support without sharing the full key.

8. Prepare a support request

Send the plugin/WordPress versions, your checkout mode, relevant booking/invoice reference, error text and reproduction steps to info@heygeorge.co.za. Redact customer details in screenshots. Never send passwords, full product keys, merchant secrets or card details.

Hosting scheduler · Daily user guide · Product page

Hey George · Ubuntu Booking · Documentation for v0.9.1 · Updated 14 October 2026