Added

Tell whether a contact has been deleted

Every contact payload now carries deleted_at. Deleting a contact is a soft delete: it leaves the list endpoints and every filter, but GET /api/v2/contacts/{id} still returns the complete record, so until now nothing in a response told you the contact had been deleted. A non-null deleted_at is that signal, and it appears wherever a contact does, including the contact nested in an order, an invoice, or an opportunity.

Do not read is_active as a deletion flag. It also goes false for an unsubscribe, an email suppression, or a missing email address, so it cannot tell you which of those happened. Check deleted_at. Relatedly, DELETE /api/v2/contacts/{id} now answers 422 with the reason when the contact cannot be deleted, which happens when it is the workspace's default contact, has an active subscription order, or has course enrollments. It previously returned 204 in those cases while leaving the contact untouched, so a delete could silently do nothing.

Agent examples: an agent can confirm an erasure request actually removed the record instead of trusting a 204, and it can tell a customer which subscription to cancel before a delete will go through.

Resources: Contact · Remove Contact

Building with an AI agent? Point it at the Contacts skill.