Describe the bug
After upgrading to WAHA 2026.3+ with NOWEB engine, message.reaction webhooks no longer include remoteJidAlt in the payload. This prevents resolving the phone number from the LID, causing duplicate external user records and database constraint violations in integrations.
Scenario:
- Reaction webhook arrives with only
from: "132375270973606@lid" (no phone number)
- Integration creates a user record with LID only
- Text message webhook arrives with same LID and
remoteJidAlt: "551999999999@s.whatsapp.net"
- Integration finds existing record by phone number, tries to update LID → unique constraint violation because another record already has that LID
Result: Unhandled rejection: duplicate key value violates unique constraint (PostgreSQL 23505)
Version
{
"version": "2026.3.1",
"engine": "NOWEB",
"tier": "PLUS"
}
Steps To Reproduce
- Send a text message to the WhatsApp number (generates record with phoneNumber as externalId)
- Send a reaction to a previous message (webhook arrives with only
@lid, no remoteJidAlt)
- Send another text message (webhook arrives with both
@lid and remoteJidAlt)
- Integration attempts to update external_id → constraint violation
Expected behavior
Reaction webhooks should consistently include remoteJidAlt (or another field with the phone number) when available, matching the behavior of message.any events. This allows integrations to reliably identify users without requiring NOWEB Store to be enabled.
Requests - Responses
Reaction webhook (missing phone number):
{
"event": "message.reaction",
"payload": {
"from": "132375270973606@lid",
"fromMe": false,
"reaction": {
"messageId": "true_132375270973606@lid_3EB0DBFF7CB7F0AB252BEE",
"text": "❤️"
}
},
"_data": {
"key": {
"remoteJid": "132375270973606@lid",
"fromMe": false,
"id": "ACC4C4E47ABA8D4EFC4B8A6DCD55CE7C"
}
}
}
Message webhook (includes phone number via remoteJidAlt):
{
"event": "message.any",
"payload": {
"from": "132375270973606@lid",
"body": "Perfeito!! Obrigada 🤍"
},
"_data": {
"key": {
"remoteJid": "132375270973606@lid",
"remoteJidAlt": "551999999999@s.whatsapp.net",
"fromMe": false,
"id": "ACF32B686EDEE2C818C2BEEDED27A0B3"
}
}
}
Docker Logs
Not applicable — issue is in webhook payload structure.
Additional context
- Workaround considered: Using
/api/{session}/lids/{lid} endpoint to resolve phone number. However, this requires enabling NOWEB Store which adds +10-50MB storage per session and I/O overhead.
- Previous behavior: Earlier versions included
remoteJidAlt in reaction webhooks.
- Impact: This affects all integrations tracking users by phone number when receiving reaction events.

Describe the bug
After upgrading to WAHA 2026.3+ with NOWEB engine,
message.reactionwebhooks no longer includeremoteJidAltin the payload. This prevents resolving the phone number from the LID, causing duplicate external user records and database constraint violations in integrations.Scenario:
from: "132375270973606@lid"(no phone number)remoteJidAlt: "551999999999@s.whatsapp.net"Result: Unhandled rejection: duplicate key value violates unique constraint (PostgreSQL 23505)
Version
{ "version": "2026.3.1", "engine": "NOWEB", "tier": "PLUS" }Steps To Reproduce
@lid, noremoteJidAlt)@lidandremoteJidAlt)Expected behavior
Reaction webhooks should consistently include
remoteJidAlt(or another field with the phone number) when available, matching the behavior ofmessage.anyevents. This allows integrations to reliably identify users without requiring NOWEB Store to be enabled.Requests - Responses
Reaction webhook (missing phone number):
{ "event": "message.reaction", "payload": { "from": "132375270973606@lid", "fromMe": false, "reaction": { "messageId": "true_132375270973606@lid_3EB0DBFF7CB7F0AB252BEE", "text": "❤️" } }, "_data": { "key": { "remoteJid": "132375270973606@lid", "fromMe": false, "id": "ACC4C4E47ABA8D4EFC4B8A6DCD55CE7C" } } }Message webhook (includes phone number via remoteJidAlt):
{ "event": "message.any", "payload": { "from": "132375270973606@lid", "body": "Perfeito!! Obrigada 🤍" }, "_data": { "key": { "remoteJid": "132375270973606@lid", "remoteJidAlt": "551999999999@s.whatsapp.net", "fromMe": false, "id": "ACF32B686EDEE2C818C2BEEDED27A0B3" } } }Docker Logs
Not applicable — issue is in webhook payload structure.
Additional context
/api/{session}/lids/{lid}endpoint to resolve phone number. However, this requires enabling NOWEB Store which adds +10-50MB storage per session and I/O overhead.remoteJidAltin reaction webhooks.