WhatsApp

No posting API exists. What WhatsApp actually offers, why Channels can't be automated, and the one thing you must not do.

WhatsApp

No organic posting API exists. This is not a gate you can pass. It is a capability that is not offered.

The reality

WhatsApp has no "post to your feed" concept in the way every other channel here does, and no API that broadcasts to followers.

What actually exists:

ThingWhat it isAutomatable
Cloud API (Business Platform)1:1 conversational and template messaging with people who contacted you or opted in✅ but it is messaging, not posting
WhatsApp ChannelsThe one-to-many broadcast feature that looks like what you wantno official API at all
Broadcast lists / GroupsManual, in-app, capped
Status24-hour stories

The thing people mean when they say "automate WhatsApp posting" is Channels, and Meta has published no API for it.

How the pipeline treats it

WhatsApp is a real distribution channel — primary by audience value, manual by transport. The two are different axes, and naming both dissolves the apparent contradiction between this page ("no API") and the brand pages that rank WhatsApp Primary.

In the registry (src/components/root/social/config.ts) it is kind: "distribution", transport: "manual", wired: false. That is a deliberate state, not an oversight:

  • Draft, media, and approval treat it like any channel. /draft writes a WhatsApp-shaped variant, /higgs renders its media, /approve gates it. It rides the whole pipeline.
  • Only publishing differs. /publish renders a copy-out block — the exact UTM-tagged text, the media path, the destination — for a human to forward. deliverPost refuses a manual channel outright, so it can never be marked "published" having reached no one.
  • It never enters the Hermes queue or the drain. The drain's allow-list and the queue's transport filter both exclude it structurally. It was previously registered transport: "hermes" — a lane that could never deliver it — which this corrects.

So the pipeline gives WhatsApp everything except the final automated send, because that one step is the thing Meta does not offer.

The one thing you must not do

There are npm packages and services that reverse-engineer WhatsApp Web to automate Channels, groups, and Status. Do not use them.

  • They violate WhatsApp's Terms of Service
  • They get numbers banned, frequently and permanently
  • A banned number takes your customer support line with it — and for a business whose customers reach you on WhatsApp, that is a far worse outcome than not posting

This is not a compliance-theatre warning. Number bans are common and are not reversible on any useful timeline.

What to do instead

WhatsApp is genuinely important in many markets — in Sudan and much of MENA it is where business actually happens. The right model is conversation, not broadcast:

  1. Cloud API for real messaging. Order updates, appointment reminders, support. This is well supported, officially sanctioned, and worth building — it just isn't marketing posts. Note it is priced per conversation.
  2. Channels, posted by a human. If you want a WhatsApp Channel presence, someone posts to it manually. Generate the content with your pipeline; a person does the last step.
  3. Click-to-WhatsApp as the destination, not the source. Put wa.me links in your other channels' posts so WhatsApp is where the conversation lands, rather than another feed to fill. This plays to the platform's actual strength.

Groups — the rooms that matter, and the checklist that serves them

In Sudan and much of MENA the WhatsApp groups other people run — landlords, school administrators, neighbourhood trade — are among the most valuable audiences we have. They are also the ones we can never automate, for every reason above: the tooling that would post into them is the tooling that gets numbers banned.

The planned destination model does not change that. What it adds is a per-group copy-out checklist instead of one undifferentiated block: /publish renders the approved copy once per selected group, each with its own context line and its own UTM-tagged link, and records which ones a human confirmed sending. Manual delivery becomes trackable and measurable — which room actually produced enquiries — without going anywhere near an unofficial API.

It is planned, not built, and sits behind Facebook in priority.

For a school, clinic, or shop

The highest-value WhatsApp automation is almost never marketing. It is:

  • Attendance or appointment notifications to parents and patients
  • Invoice and payment reminders
  • Support conversations

All of that is Cloud API territory and is a genuinely good build. It just belongs in your product roadmap, not your social calendar.

Environment variables

None for posting. If you build Cloud API messaging, that is a separate integration with its own credentials (WHATSAPP_PHONE_NUMBER_ID, WHATSAPP_ACCESS_TOKEN) and its own per-conversation pricing.

Limits

  • Organic posting: not available at any price
  • Cloud API: per-conversation pricing, requires opt-in or a user-initiated conversation, template messages need pre-approval