Logotipo Hedhog

Get Hedhog updates in your inbox

New releases, fresh recipes, and breaking changes — no spam.

WhatsApp

Hedhog can send WhatsApp messages through a self-hosted Evolution API instance, via a Webhook Integration action — fired automatically whenever an external system calls one of your Hedhog webhooks (e.g. a third-party form submission triggers a WhatsApp notification).

whatsapp-official (the official WhatsApp Business Cloud API) is seeded as a catalog provider for future use, but has no implemented consumer yet in this version — only Evolution API actually sends messages today.

Status: ⚠️ Partial — Evolution API works through the Webhook Integration action; whatsapp-official is catalog-only with no consumer.

A Webhook Integration action sending a WhatsApp text message through a self-hosted Evolution API instance

Quick Setup

  1. Self-host Evolution API and create a WhatsApp instance (commands below)
  2. Go to Settings → Integrations and Webhooks, open (or create) a Webhook Integration, and add a WhatsApp (Evolution API) action
  3. Fill in the whatsapp_* fields directly on the action — no Integration Profile needed
  4. Send a test message and confirm it's actually delivered to the linked phone, not just an HTTP 200

Self-Hosting Evolution API

docker run -d \
  --name evolution-api \
  -p 8080:8080 \
  -e AUTHENTICATION_API_KEY=your-api-key \
  atendai/evolution-api:latest

Replace your-api-key with a secure random string — this becomes the apikey header Hedhog sends on every request. The management dashboard is available at http://localhost:8080.

Create a WhatsApp session ("instance") before sending anything:

curl -X POST http://localhost:8080/instance/create \
  -H "apikey: your-api-key" \
  -H "Content-Type: application/json" \
  -d '{"instanceName": "my-instance", "qrcode": true}'

Scan the returned QR code from a phone with WhatsApp → Linked Devices → Link a Device. The session stays active as long as that phone has internet access — losing the phone's connection drops the session and messages will start failing until you re-link.


Webhook Integration Action

  1. Go to Settings → Integrations and Webhooks, open (or create) a Webhook Integration
  2. Add an action of type WhatsApp (Evolution API) and fill in, directly on the action:
Action fieldDescription
whatsapp_base_urlEvolution API base URL
whatsapp_tokenEvolution API key (sent as the apikey header)
whatsapp_instanceThe instance name created above — Hedhog builds the request URL as {base_url}/message/sendText/{instance}
whatsapp_target_typephone or group
whatsapp_targetPhone number or group ID — supports template placeholders resolved from the incoming webhook payload
whatsapp_templateMessage text — also supports template placeholders

This action only sends plain text via sendText — it doesn't support media, buttons, or lists.


Limitations

  • WhatsApp Business Policy restricts bulk/unsolicited messaging to opted-in contacts — sending to people who never consented risks the number being banned by WhatsApp, not just by Evolution API
  • Sessions tied to a personal phone number are inherently fragile: a dead battery, app logout, or lost connectivity on that phone breaks every integration relying on it
  • whatsapp-official (Meta's Cloud API) is cataloged but not wired up — if you need official, rate-stable support, you'll need to build that integration yourself for now
  • For serious production volume, evaluate the official WhatsApp Business Cloud API via a Meta Business Solution Provider instead of a phone-tethered Evolution API session

Verify It Worked

  • Trigger the webhook action once and confirm the message actually lands on the linked phone — not just that the HTTP call returned 200
  • Check Evolution API's own dashboard to confirm the instance still shows as connected

Troubleshooting

SymptomLikely cause
Webhook action error "WhatsApp action is missing required configuration"One of whatsapp_target, whatsapp_template, whatsapp_instance, whatsapp_base_url, whatsapp_token is blank on the action
Messages silently stop sendingThe phone running Evolution API's session lost connection — re-link the device
401/403 from Evolution APIwhatsapp_token doesn't match Evolution API's AUTHENTICATION_API_KEY