Skip to main content

What this error means

ALREADY_EXISTS is returned with HTTP status 409 when a create request collides with a record that already exists: a contact with the same phone or email, a template with the same channel and name, or any other uniqueness rule on the resource. The existing record is left untouched and no duplicate is created. Every response for this error carries this page’s address in meta.docs_url:

Cause

How to fix it

  1. Read the specific code. Variant codes such as CONTACT_PHONE_ALREADY_EXISTS name the exact field that collided; use it to find the existing record.
  2. Use PATCH to change an existing record. If your intent was an update, send PATCH against the existing resource’s id instead of repeating the POST.
  3. Or pick a unique value. If you genuinely need a second record, change the colliding field.
  4. Look up before you create in import flows. When syncing from a CRM or CSV, resolve existing contacts by phone or email first and update them, so a re-run of the import does not surface one 409 per row.
A 409 is deterministic: retrying the same create unchanged fails identically.
  • Error Code Reference — the ALREADY_EXISTS row plus the per-field variant codes (CONTACT_PHONE_ALREADY_EXISTS, CONTACT_EMAIL_ALREADY_EXISTS, and others).
  • Error Handling Examples — response-envelope handling patterns in code.