Meta WhatsApp Business API for Salons — The Only Guide You Need

The technical and business side of the Meta WhatsApp Business API, explained for salon owners. What it is, what it costs, what paperwork you need, and what can go wrong.

The Meta WhatsApp Business API is what powers every serious WhatsApp booking bot — including SalonBooking's. It's also the single biggest point of confusion for salon owners setting up automated booking. This guide flattens that out.

If you just want to book clients and not read a 1,500-word backgrounder, skip to our WhatsApp setup guide. If you want to understand why some pieces ask for business documents and others don't, read on.

Three WhatsApp products, only one of which matters for bookings

Meta actually ships three different WhatsApp products for businesses:

  1. WhatsApp personal — what you have on your phone. You can't automate on top of this. Don't try.
  2. WhatsApp Business App — a free app that lets you add a business profile and quick replies. Still manual, no automation, single device.
  3. WhatsApp Business API / Cloud API — the one that powers bots. No phone app — it runs on Meta's servers and is accessed via HTTPS.

Everything in this guide is about #3. Salons that want automated booking need the Cloud API.

Cloud API vs On-Premises API

Meta originally shipped only the On-Premises API — you had to host and manage your own WhatsApp server. Painful. In 2022 they launched the Cloud API, which Meta hosts for you. The Cloud API is free to set up and is the default for all new integrations. Use it. Ignore anything online written before 2022 that tells you to "self-host WhatsApp."

What Meta requires from you

Four things, in rough order:

  1. Facebook/Meta Business account — free, 15 minutes. Business details, address, and a verified contact.
  2. A WhatsApp phone number — dedicated, not tied to personal WhatsApp.
  3. Display name approval — Meta reviews the business name shown in chat. Approval is fast (hours to a day) unless your name trips trademark or category flags.
  4. Business verification (for higher limits) — proof of business ownership. A utility bill or business registration document. You can skip this initially; you'll hit it when you exceed the unverified tier limits.

For a single salon, tiers usually look like: start unverified → ~1,000 business-initiated conversations/day → fine forever unless you're a chain.

Pricing, in plain English

Meta charges per conversation, not per message. A conversation is a 24-hour window opened either by a user message to you (user-initiated) or by a template you send first (business-initiated).

  • User-initiated conversations: free. If your client messages "Hi, I want to book," the whole back-and-forth for the next 24 hours is free.
  • Business-initiated conversations: a few cents each, varying by country. Reminders and follow-ups fall here.
  • Free tier: Meta includes 1,000 free conversations/month across all types.

For most single-location salons, monthly WhatsApp cost is zero. For busy chains doing heavy reminder volume, budget $10–50/month.

Message templates and why they exist

You cannot send business-initiated messages freely — only pre-approved templates. This is Meta's spam defense. You submit the template ("Hi {{1}}, reminder: your appointment is at {{2}} tomorrow"), Meta approves it within hours, and you can then fire it with filled-in variables.

SalonBooking ships with a default reminder template you can submit from your admin panel. You'll need to submit it once per tenant phone number. Until it's approved, reminders silently fail — not great, but also not a hard error.

Common gotchas

"My number is already used with personal WhatsApp"

You need to either fully delete the personal account tied to that number (takes 90 days to fully recycle at Meta) or use a different number. Most salons just get a second SIM.

Webhook verification keeps failing

Meta's webhook verification calls your server with a hub.mode=subscribe query and expects the hub.challenge echoed back. If your server is behind basic auth, Cloudflare Under Attack mode, or any middleware that blocks unauthenticated GET requests, verification fails. Whitelist the webhook path.

"App Secret" confusion

Two tokens: the Access Token (used to send messages) and the App Secret (used to verify incoming webhook signatures). You need both. They live in different sections of the Meta dashboard, which is confusing.

Rate limits

Cloud API has a tier system: unverified accounts can message 250 unique users/day. Verified accounts start at 1K/day and scale. You almost never hit this for bookings — it's designed to stop marketers.

What SalonBooking does for you

  • Stores your Access Token and App Secret encrypted in the database (Laravel Crypt on top of your app key).
  • Verifies inbound webhook signatures on every request (HMAC-SHA256 against your App Secret).
  • Handles conversation state machines — clients picking services, times, workers, and confirming — without you writing a line of code.
  • Provides a default reminder template ready to submit.

TL;DR

  • Use the Cloud API, not On-Premises.
  • Get a dedicated number.
  • Most salons stay within the free 1,000-conversation tier.
  • The setup is paperwork, not engineering.

Ready? Create your SalonBooking account and plug in your Meta credentials.

Want bookings that run themselves? Try SalonBooking free.

Free during early access. No credit card. No setup fee. Your salon is running in 10 minutes.