Skip to main content
DELETE
Delete Contact PII

Overview

This endpoint permanently scrubs the personally identifiable information (PII) stored for a contact, while preserving the contact record itself and its event history for reporting continuity. You can target the contact either of two ways:
  • By path ID: DELETE /contacts/{id}/pii
  • By email: DELETE /contacts/pii?email={email}
Exactly one of id or email must be provided — supplying both, or neither, returns a 422. This is an asynchronous operation. The request validates and resolves the target contact synchronously, then queues the actual scrub and returns immediately with 202 Accepted. The PII removal itself typically completes within a few minutes; call Get Contact afterward to confirm the fields have been cleared.

What gets deleted

  • All emails, phones, names, locations, devices, IPs, tracking IDs, and comet tokens ever associated with the contact — including data inherited from profiles that were merged into this contact.
  • All raw browsing-session hits for the contact (IPs, fingerprints, tokens, and URL query strings). After this completes, include_browsing_session_data on Get Contact returns empty, and the contact’s page-view hits no longer contribute to analytics counts.
  • On the contact record itself: name, email, phone, location, city, state, country, device_type, os, browser, language, and all 30 custom fields (profile_field_1profile_field_30) are set to null.

What is kept

  • The contact record itself — its id and created_at are preserved.
  • Its events and journey — touchpoints and conversions, including their metadata, remain intact.
  • Its merge history.
Event metadata can still contain PII that arrived inside a webhook payload or a touchpoint’s URL query string — deleting a contact’s PII does not scrub individual events. To remove PII from a specific event, delete it directly via Delete Event.

Path Parameters

integer
The unique identifier of the contact whose PII should be deleted. Required when not using email. Merged profile aliases are automatically resolved to the current canonical contact. Minimum: 1.

Query Parameters

string
The email address of the contact whose PII should be deleted. Required when not using id. Matches against both the contact’s full email history (including emails inherited from merged profiles) and its current primary email. If more than one distinct contact matches the email, the request is rejected with a 409 — delete by id instead to disambiguate.

Response

Success Response

Returns 202 Accepted. The scrub is queued, not yet complete.
integer
The canonical contact id (after resolving merged-profile aliases) whose PII was queued for deletion.
string
Always queued.
string
Human-readable confirmation that the deletion has been queued.

Error Response

string
Error description explaining what went wrong.
integer[]
Only present on a 409 response. The sorted list of canonical contact ids that matched the given email. Nothing is deleted when this error is returned — retry the request once per id to disambiguate.

Example Requests

Delete by Contact ID

Delete by Email

Status Codes

Notes

  • Rate Limit: This endpoint has a limit of 60 requests per minute per Space. See Rate Limiting for details.
  • Not idempotent on missing targets: unlike Delete Event, which returns 200 for an ID that no longer exists, this endpoint returns 404 when the id or email doesn’t resolve to a contact in your space.
  • Asynchronous: a 202 response means the deletion has been queued, not completed. Poll Get Contact to confirm the PII fields have been cleared.
  • Ambiguous email matches nothing: if email matches more than one distinct contact, the request is rejected with 409 and no data is deleted. Look up the individual contact ids (via contact_ids in the response, or List Contacts) and call this endpoint once per id.
  • Merged profiles: if you pass an id that was merged into another profile, the deletion applies to the canonical (current) profile.
This operation is permanent and cannot be undone. The contact record, its events, and its merge history are preserved — only identifying data is scrubbed.