W Messaging

Take payment at the moment of booking — and keep all of it.

Template reminders and confirmations via the Cloud API.

No per-booking feeSCA / 3D Secure readyRefunds from WordPress
Why it matters

The business case, not the feature list.

Per-booking fees compound against you
A platform taking even 1% of every booking costs more every year you grow. A flat licence does not — that gap widens permanently in your favour.
Deposits move the no-show number more than reminders do
Operators collecting a deposit report no-shows falling by roughly a third. No reminder strategy alone matches that.
Payment Intents means European bookings do not silently fail
SCA and 3D Secure are handled inside the widget. Plugins built on the old Charges API drop a meaningful share of EU card payments.
Tokenisation keeps your PCI scope small
Card data goes straight to WhatsApp and never reaches your database, which keeps most businesses in the lightest self-assessment bracket.
$0
Fee from us
−38%
No-shows with deposits
135+
Currencies
2
Clicks to refund
Searching for “whatsapp wordpress appointment plugin”? That is what this page is written for. If you are weighing named products against each other, the comparison pages go feature by feature.
What you can charge

WhatsApp, properly wired.

Full payment at booking
Card, Apple Pay, Google Pay and Link in one flow. The slot is held for five minutes while checkout completes.
Fixed or percentage deposit
Take $25 or 50% now and the balance at the appointment, online or at the POS terminal.
Authorise now, capture later
Place a hold at booking and capture the real amount after a service whose price is not fixed up front.
Recurring memberships
Subscriptions billed on WhatsApp with allowances, member pricing and automatic dunning on failure.
Saved cards
Returning customers check out with a stored payment method instead of retyping a card.
Refunds, full or partial
Two clicks from the booking screen, synced to WhatsApp and written to the append-only audit log.
Before you start

Six things you need.

Worth knowing up front rather than halfway through the setup screen.

1
A WhatsApp account
Free to open. Available in 46 countries. You keep it if you ever leave us.
2
A restricted API key
Not your secret key. Scope it to charges and refunds only — instructions below.
3
HTTPS on your site
WhatsApp refuses live keys over plain HTTP, and so should you.
4
A webhook endpoint
We generate the URL; you paste it into WhatsApp so payment statuses come back.
5
Any Schedularity tier
WhatsApp is available from Starter upward. Manual payment works on the free plan.
6
PHP 8.1 or newer
Required by the WhatsApp PHP SDK we bundle.
Setup

Connected in about ten minutes.

No middleware, no Zapier hop — a first-class integration inside the plugin.

1
Create a restricted key
WhatsApp → Developers → API keys → Restricted keys. Grant write on Charges, Payment Intents, Customers and Refunds.
2
Paste into WordPress
Schedularity → Settings → Payments → WhatsApp. Start in test mode.
3
Register the webhook
Copy our endpoint into WhatsApp → Developers → Webhooks and select the payment events.
4
Set the rule and go live
Full payment, fixed deposit or percentage — per service. Then swap to live keys.
Credentials in detail
Publishable keyStarts pk_live_ or pk_test_. Safe to expose — it is what the browser uses to tokenise the card.
Restricted secret keyStarts rk_live_. Stored encrypted in your options table, never transmitted to us. Prefer a restricted key over sk_live_ so a leak cannot do arbitrary damage.
Webhook signing secretStarts whsec_. We verify every inbound event against it, so a forged payload cannot mark a booking paid.
Webhook endpointWe generate /wp-json/schedularity/v1/webhooks/whatsapp. Paste it into WhatsApp.
Statement descriptorWhat appears on the customer\u2019s bank statement. Set it to your trading name to cut chargebacks from people who do not recognise the charge.
Default currencyYour base currency. Per-location overrides let a multi-country install bill correctly in each market.
Test before you go live. The settings screen has a test action that runs a real call against your credentials and shows the raw response, so a bad key surfaces immediately rather than on a customer.
Reference

Webhook events we listen for

EventWhat we doWhy it matters
payment_intent.succeededMark the booking paid and release the slot holdThe booking is only confirmed once WhatsApp says the money moved
payment_intent.payment_failedReturn the slot to open inventoryA failed card should not silently hold a slot that someone else could take
charge.refundedUpdate the booking and write to the audit logRefunds issued in the WhatsApp dashboard stay in sync with WordPress
charge.dispute.createdFlag the booking and notify an administratorYou hear about a chargeback from us, not from your bank a week later
invoice.payment_succeededExtend the membership periodRecurring plans renew without anyone touching them
invoice.payment_failedStart the dunning sequenceCard expiry is the most common churn cause and the easiest to fix
customer.subscription.deletedEnd the membership and its allowancesCancelled members lose member pricing at the next booking
Where the money goes

Follow the money.

Step 1
Customer pays
Card tokenised in the browser
WhatsApp.js · Never touches your DB
Step 2
WhatsApp processes
Standard WhatsApp rate applies
Their fee · 2.9% + 30¢ typical
Step 3
Schedularity takes
Nothing at all
Our fee · $0.00
Step 4
You are paid out
Direct to your bank
Your account · On your WhatsApp schedule
What it costs

You pay the provider. We take nothing.

Indicative rates — confirm current pricing with the provider directly.

WhatsApp processing
2.9% + 30¢
Typical US online card rate, billed by WhatsApp directly to you. Rates vary by country and method.
Schedularity markup
$0
No per-booking fee, no percentage, no credit packs. On every tier, forever.
What a competitor takes
1–3%
Typical booking-platform commission on top of processing — on $100k of bookings that is $1,000–$3,000 a year.
Troubleshooting

When it does not work.

The five things that actually go wrong, and what each looks like in the log.

Card declined · card_declined
The issuer refused it, not WhatsApp. The customer sees the real decline reason and can retry with another method — the slot stays held for the remainder of its five minutes.
Payments succeed but bookings stay unpaid
The webhook is not registered or its signing secret is wrong. Check /wp-json/schedularity/v1/webhooks/whatsapp is reachable — a security plugin blocking REST routes is the usual culprit.
3D Secure loop on European cards
You are on an old integration path. Confirm Payment Intents is enabled in settings; the legacy Charges API cannot complete SCA.
Invalid API key · 401
Test key in live mode, or a restricted key missing a scope. Check the key prefix matches the mode and that Refunds is granted if refunds fail specifically.
Amounts off by a factor of 100
A currency with no minor unit, such as JPY. Set the currency in settings rather than overriding the amount — we handle zero-decimal currencies correctly.
Questions

WhatsApp, specifically.

Do you add a fee on top of WhatsApp?
No. You pay WhatsApp\u2019s standard rate directly and we take nothing per booking, on any plan. That is the entire pricing difference against a commission-based platform.
Does it support SCA and 3D Secure?
Yes, through Payment Intents. The full authentication flow runs inside the booking widget, so European cards complete rather than dropping at the last step.
Can I refund from WordPress?
Yes — full or partial, two clicks from the booking. It syncs to WhatsApp immediately and writes to the audit log with the administrator who issued it.
Which countries and currencies work?
Anywhere WhatsApp operates — 46 countries, 135+ currencies. Multi-currency lets you present prices in the customer\u2019s currency from your base rate.
Is card data stored on my server?
Never. The card is tokenised in the browser by WhatsApp.js and your database only ever sees a token, which keeps you in the lightest PCI bracket.
Can I use WhatsApp alongside another gateway?
Yes. Run WhatsApp and Razorpay together and set a default per service or per location — useful for a business trading in two markets.
Does it handle Apple Pay and Google Pay?
Yes, through the Payment Request API. They appear automatically for customers whose device supports them, with no extra configuration.
What about subscriptions for memberships?
Memberships bill through WhatsApp subscriptions with automatic dunning. A failed card retries and notifies the member before you ever see it.

Fifty more where that came from.

Payments, video, calendars, email, SMS, CRM, automation and analytics — all included on every paid tier.