Skip to content

[BUG] All outgoing messages use instance UUID as WhatsApp message ID — causes silent deduplication after first send #61

@Abel-Odorico

Description

@Abel-Odorico

Summary

Every message sent via /send/text (and likely all /send/* endpoints) uses the instance UUID as the WhatsApp message ID instead of generating a unique ID per message. This causes WhatsApp to silently deduplicate all messages after the first one sent to each recipient.

What did you do?

Sent multiple text messages to the same recipient via /send/text.

What did you expect?

Each message delivered with a unique WA message ID.

What did you observe?

Only the first message is delivered. Subsequent messages appear to send (HTTP 200, SendText successful) but are never delivered to the recipient's device (ServerID: 0, no delivery receipt).

Evidence from logs

Sending message to 553198982288@s.whatsapp.net with ID c2e925ee-25c1-46ff-bdbf-9bc689421358
...
Message sent successfully! ServerID: 0

Every single send — regardless of recipient or content — logs the same ID: the instance UUID c2e925ee-25c1-46ff-bdbf-9bc689421358.

The whatsmeow ACK waiter confirms this is the actual WA protocol message ID:

receiveResponse: found waiter for id=c2e925ee-25c1-46ff-bdbf-9bc689421358, tag=ack

Passing messageId in the request body has no effect — the response Info.ID is still the instance UUID.

Root cause

In the send handler, the id field from the request body (the instanceId) is being passed as the WhatsApp message ID to whatsmeow's SendMessage instead of calling client.GenerateMessageID().

Expected fix

Generate a unique random message ID for each outgoing message using client.GenerateMessageID() (or whatsmeow.GenerateMessageID()).

Version

  • Evolution GO: 0.7.1
  • Docker: evoapicloud/evolution-go:0.7.1
  • Environment: Docker on Linux

Additional context

messageId field in request body is silently ignored. The API should either use a caller-supplied ID or auto-generate one per message — never reuse the instance UUID.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions