WhatsApp

Choose between Meta Cloud API, WhatsApp Web QR code, and MailPulse resources.

Available modes

MailPulse supports two organization-level modes:

  • Meta Cloud API, recommended for production.
  • WhatsApp Web through Evolution API and Baileys, useful for setup or troubleshooting.

Meta Cloud API

Meta is the official channel. It requires a WhatsApp Business Account, a phone number, a token, a phone_number_id, and approved templates for messages outside the 24-hour window.

Baileys and Evolution API

The QR code mode connects a WhatsApp Web session. It is simple, but unofficial. The session can disconnect, and high-volume usage can expose the number to restrictions or suspension.

MailPulse resource

When MAILPULSE_MANAGED_WHATSAPP_ENABLED=true, MailPulse can provide a platform resource. It helps users without a number, but it is less personalized and subject to platform limits.

Sending

The WhatsApp page lets users activate a mode, scan a QR code, save Meta configuration, send a single message, send bulk messages, and disconnect the session.

An external application can require the recipient's explicit agreement before writing to them: MailPulse first sends the request written by the application, keeps the content encrypted, then sends it after a YES or cancels it after a NO or STOP. A recipient who said NO or STOP receives nothing more from that application through this number, until a new YES. The command and event details are in the API reference.

On WhatsApp Web, these sends go through a queue specific to each number, to limit the risk of the number being blocked:

  • a random pause of 15 to 45 seconds separates two messages;
  • at most 40 first consent requests per day and per number;
  • nothing is sent between 9 pm and 7 am, in the number's time zone (Africa/Abidjan by default).

These three settings can be changed per number with the provisioning script (--daily-consent-limit, --quiet-hours, --time-zone). Recipients who already agreed go before new requests. Meta applies its own limits and is not subject to this queue.

To receive delivery and read receipts, the Evolution session must send the MESSAGES_UPDATE events in addition to MESSAGES_UPSERT.

Sending precautions on WhatsApp Web

Every message leaves after simulated typing, as a person would type it:

  • 2 to 10 seconds depending on the text length for a message from the API or from an external application;
  • at most 4 seconds for a verification code, which the recipient is waiting for;
  • 0.5 to 1.5 seconds for campaigns, recovery sequences and dashboard sends, which leave one after another.

Links are sent without a preview: the server no longer fetches the pages they point to.

No precaution makes WhatsApp Web safe for bulk sends to recipients who do not know you. For that, use Meta Cloud API.

Session and QR code

The WhatsApp page only recreates the session when the WhatsApp server confirms it no longer exists. A server briefly out of reach shows an error and leaves the session untouched: try again a few moments later.

A number also used by an external application can be neither disconnected nor reset from this page, so the application is never cut off.

On this page