Incorrect phone number mapping for Argentinian number (549) creating corrupt contact in Chatwoot
Welcome!
- [x] Yes, I have searched for similar issues on GitHub and found none.
What did you do?
There appears to be a critical phone number mapping issue within the Evolution API. For a specific user, the API is incorrectly mapping their valid Argentinian WhatsApp number (e.g., +5492494346508) to a completely different and corrupt E.164 format (+149799986847862).
This corrupt number is then passed via webhook to Chatwoot, which in turn creates a corrupt contact. Any attempt to reply to this user via automation (e.g., n8n) fails, because the phone_number field from the webhook is invalid.
When we attempt to send a reply to the (cleaned) corrupt number, the Evolution API returns a 400 Bad Request with an "exists":false error.
The issue is persistent. Even if the contact is manually deleted from Chatwoot, the moment the user sends a new message, the Evolution API re-sends the same corrupt data, and Chatwoot regenerates the corrupt contact.
This bug seems to be user-specific, as other Argentinian numbers on the same instance are processed correctly.
What did you expect?
The Evolution API should correctly identify the inbound number +5492494346508 and pass this correct number to all integrated webhooks (Chatwoot, n8n, etc.).
What did you observe instead of what you expected?
The API is passing a completely different and invalid number (+149799986847862) to the webhooks, making it impossible to reply to this user.
Screenshots/Videos
Which version of the API are you using?
Version: 2.3.4
What is your environment?
Windows
Other environment specifications
No response
If applicable, paste the log output
No response
Additional Notes
A specific user with a real Argentinian number (e.g., +5492494346508) sends an inbound message.
The Evolution API receives the message.
The Evolution API incorrectly maps this number to a corrupt format (e.g., +149799986847862).
The Evolution API sends a webhook to Chatwoot containing the corrupt phone_number.
Chatwoot creates or updates the contact with the corrupt number and identifier (e.g., 149799986847862@lid).
An automated system (like n8n) receives the webhook from Chatwoot and attempts to send a reply to the phone_number.
The automation sends a request to the Evolution API message/sendText endpoint using the (cleaned) corrupt number.
The Evolution API returns a 400 Bad Request error with the payload: {"response":{"message":[{"jid":"...","exists":false,"number":"..."}]}}.