Integration Recipe

GoHighLevel WhatsApp integration, on your own number

Direct via GHL workflow webhooks + Spun REST APILast verified August 2026

GoHighLevel's own WhatsApp offering rides the Business API (a paid add-on per subaccount, with Meta's per-message fees underneath). If you, or the clients your agency manages, live on a normal WhatsApp number, the alternative is Spun on that number plus GHL's workflow webhooks, which happen to make this the easiest integration on this site: GHL workflows can both receive webhooks and send custom HTTP requests with headers, so no Zapier sits in the middle.

Two flows cover most agency setups: GHL-triggered WhatsApp sends (appointment reminders, follow-up sequences), and WhatsApp events feeding GHL contact timelines and pipelines.

1. Send WhatsApp from GHL workflows

  1. 1

    Create a Spun API key

    In Spun: Settings, then Webhooks, then Manage API Keys, then New Key, scoped to send messages (add contacts scopes if you sync fields too). Copy the wap_ key once.

  2. 2

    Add a Custom Webhook action

    In your GHL workflow (appointment booked, pipeline stage changed, form submitted), add the Custom Webhook action: method POST, Spun's send-message URL, an Authorization header with the Bearer key, and a JSON body using GHL merge fields.

  3. 3

    Use merge fields for the number and text

    Map the contact's phone into "to" and write the message with GHL's personalization tags. The message arrives from your real WhatsApp number, not a template sender.

GHL Custom Webhook action body
POST https://api.spun.com/api/integrations/send-message
Authorization: Bearer wap_YOUR_KEY
Content-Type: application/json

{
  "to": "{{contact.phone}}",
  "text": "Hi {{contact.first_name}}, confirming your appointment on {{appointment.start_time}}. Reply here if you need to reschedule."
}

Strip the plus sign and spaces from the phone format if your GHL numbers carry them; Spun expects digits with country code.

2. Feed WhatsApp events into GHL workflows

  1. 1

    Create an inbound webhook trigger in GHL

    Start a workflow with the Inbound Webhook trigger and copy its URL.

  2. 2

    Point Spun at it

    In Spun: Settings, then Webhooks, then Add Webhook, paste the GHL URL and pick events: incoming message, contact created, label assigned, or lead qualified.

  3. 3

    Map and act in GHL

    Use the webhook payload (phone, message text, label) to find or create the contact, add a note to the timeline, move a pipeline stage, or kick off a follow-up sequence.

Label-gate the flows that create pipeline records: let agents apply "Qualified" in Spun, and only that event advances the GHL opportunity. Every conversation should not become a deal.

What to know before you build (agencies especially)

  • Each Spun workspace is one organisation with its own API keys. An agency running WhatsApp for multiple clients gives each client their own Spun workspace and keys; one flat plan covers that client's whole team.
  • This is not a listed GHL marketplace app: the key is pasted into workflow actions, and Spun webhook subscriptions are created in Spun's Settings UI.
  • Rate limit: 60 API requests per minute per key. For blast-style sequences, prefer Spun's own broadcast tools with their built-in pacing over machine-gunning the API.
  • GHL's native WhatsApp add-on remains the right choice when the client must have official API sending inside the GHL conversation view; this recipe is for clients on their existing numbers.

Related: WhatsApp + Zapier & Make (payload shapes and the full API) · WhatsApp for virtual assistants and agencies

Frequently asked questions

Does GoHighLevel support WhatsApp natively?

Yes, as a paid Business API add-on per subaccount with Meta's per-message fees. This recipe is the no-API lane: the client's existing WhatsApp number in Spun, wired to GHL workflows through webhooks in both directions, with no per-message costs.

Do I need Zapier between GHL and Spun?

No. GHL workflows can send custom HTTP requests with headers (calling Spun's API directly) and receive inbound webhooks (which Spun's events call directly). Zapier or Make only add value if you want their extra logic steps.

Can GHL appointment reminders go out on WhatsApp?

Yes: an appointment-booked workflow with a Custom Webhook action calling Spun's send-message endpoint, using GHL merge fields for the number, name and time.

Can WhatsApp replies move a GHL pipeline?

Yes: subscribe Spun's label-assigned or lead-qualified events to a GHL inbound-webhook workflow, and advance the opportunity there. Gating on a label keeps the pipeline honest.

The WhatsApp side, handled

Spun runs the client's WhatsApp on their existing number: shared inbox, AI replies, broadcasts with pacing, and the API this recipe uses. Flat pricing from $49/month per workspace, free trial.

Start Free Trial

See all integrations

More integration recipes

Google Sheets · HubSpot CRM · Zapier & Make · n8n · Salesforce · Zendesk · Slack · Odoo