When updating a lead's attributes through the Customerly Public API, the response may sometimes look like this:
{"error":{"message":"Update not completed","code":0}}This is a generic error returned when the contact update couldn't be completed on the database. The message is intentionally short, but in the vast majority of cases the cause falls into a few well-defined scenarios. Below are the most common ones, in order of frequency.
1. Uniqueness conflict on a reserved attribute
Some contact attributes are subject to uniqueness constraints within the same workspace. This means that, within a given project, no two contacts can share the same value for that attribute.
The attributes typically subject to this constraint are:
Email
WhatsApp number
If you try to assign the contact a value that already belongs to another contact in the same workspace, the update is rejected and you get "Update not completed".
How to check: search your workspace to see if another contact already has the same value (same email or same WhatsApp number).
How to fix:
merge or delete the existing duplicate contact, or
correct the value if it's wrong, or
first update the duplicate contact to remove the conflicting value.
2. Invalid value for the attribute type
Every attribute has an associated type (text, number, boolean, date). If you send a value that isn't compatible with the type defined for that attribute in the workspace, the update may fail.
Typical examples:
sending a string where a number or timestamp is expected
sending a boolean where text is expected
sending a timestamp in the wrong format
How to fix: check the attribute type in your project settings and send a value that matches.
3. Attempting to overwrite a field that can't be modified via API
Some system fields on a contact cannot be modified through public calls because they are managed internally by the platform or by the contact themselves (e.g. automatic tracking fields, internal identifiers, certain session metadata).
How to fix: remove system fields from the request; only update the actual business attributes that are meant to be modifiable.
4. Values that are too long or contain unsupported characters
Each attribute has a maximum length and accepts a character set compatible with the database encoding. Extremely long strings, or unusual characters that aren't handled (some emojis or control characters), can cause the write to fail.
How to fix: shorten the value and clean up any non-standard characters before sending.
5. Contact does not exist or is no longer accessible
If the contact identifier in the URL refers to a record that no longer exists (deleted, merged into another, or belonging to a different workspace), the call may not go through.
How to fix: double-check that the contact ID is correct and still active in the workspace you're operating on.
6. API token incorrect or not matching the workspace
While an invalid token usually produces an explicit authentication error, in some edge cases (a valid token but associated with a different workspace than the contact's) the call can silently fail at the update stage.
How to fix: make sure the API token you're using belongs to the same workspace as the contact you're trying to modify.
Quick checklist
Before opening a support ticket, it's worth checking the following, in order:
Is there another contact with the same email or WhatsApp number? This is by far the most frequent cause.
Do the value types you're sending match the ones defined for the attributes?
Are you trying to write to system or reserved fields?
Are the strings you're sending of reasonable length and using standard characters?
Is the contact ID correct and does it belong to the same workspace as the token?
In nearly all real-world cases, "Update not completed" is resolved by identifying a duplicate on the email or WhatsApp value. If the issue persists after these checks, contact support with: contact ID, request payload, and the timestamp of the error, so the session can be traced on the server side.
