evolution-api icon indicating copy to clipboard operation
evolution-api copied to clipboard

Incorrect phone number mapping for Argentinian number (549) creating corrupt contact in Chatwoot

Open nachotdl opened this issue 1 month ago • 4 comments

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

Image

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":"..."}]}}.

nachotdl avatar Oct 30 '25 02:10 nachotdl