Skip to content

[BUG] Message sent via sendMessage marked as sent but not delivered on WhatsApp #1684

Description

@Isac999

Describe the bug
When sending a message using the sendMessage method, the message is correctly sent and acknowledged with status: 2 (sent). However, the message remains with only one check mark on the WhatsApp interface — indicating that it was not delivered to the recipient, even though it should be.

This does not happen all the time, but in some specific cases, messages are consistently stuck at ack: 2 and never reach the recipient. No ack: 3 is received.

This occurs even with simple text messages, such as:

*Ana Beatriz  diz:*

106,90

To Reproduce
Steps to reproduce the behavior:

  1. Create a Baileys connection using version 6.7.18 (also tested with pre release 6.7.19-alfa.0).
  2. Use sock.sendMessage(jid, { text }) to send a formatted message.
  3. Receive message back in onAck, as expected.
  4. Open WhatsApp — the message only shows one check mark (sent, not delivered).
  5. ack: 3 is never triggered, even if the contact is online and responsive.

Expected behavior
The message should reach the recipient and show two checkmarks (delivered). We should also receive an ack: 3 from the onAck event.

Environment (please complete the following information):

  • Baileys version: github:WhiskeySockets/Baileys#v6.7.18 (or 6.7.19-alfa.0)
  • Runtime: Docker (based on node:lts)
  • Node.js version: v18.x (from official node:lts)
  • OS inside container: Debian-based (via Node.js Docker image)
  • Message format: extendedTextMessage with some formatting
  • Using PM2 as process manager
  • Running in cloud server environment
  • connectOptions:
{
  mobile: false,
  logger,
  qrTimeout: 180000,
  maxMsgRetryCount: 5,
  version: [2, 2413, 1], // overwritten dynamically by fetchLatestBaileysVersion
  syncFullHistory: false,
  connectTimeoutMs: 20000,
  retryRequestDelayMs: 250,
  keepAliveIntervalMs: 5000,
  defaultQueryTimeoutMs: 60000,
  receivedPendingNotifications: false,
  generateHighQualityLinkPreview: false,
  browser: Browsers.ubuntu("Google Chrome"),
  auth: { ... },
  options: {
    httpsAgent: new https.Agent({
      rejectUnauthorized: false,
      retries: 5,
      ctr: <custom cert content>,
    }),
  },
  getMessage: async (key) => {
    if (!key?.id) return undefined;
    const wmi = await storeManager.getMessageById(key.remoteJid, key.id);
    return wmi?.message;
  },
  shouldIgnoreJid: jid => this.shouldIgnoreOnSync(jid),
}
  • Multiple clients on same IP: No
  • Proxy in use: No
  • TLS interception: Yes (custom .crt injected via https.Agent)

Additional context

  • This does not happen in all cases, but when it does, it is reproducible for that specific message or user.
  • The message generates an ID on WhatsApp, which suggests that it was processed correctly.
  • The recipient confirms they never received the message.
  • No error is returned by Baileys, and status remains stuck.
Image

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    Status
    Todo

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions