When a user removes DynamicCRM from a connected platform such as Facebook, that platform calls this endpoint to request deletion of the user’s data. This page documents the contract and lets users check a request’s status.
The data deletion callback is a single HTTPS endpoint that accepts a signed POST request from the calling platform and returns a JSON confirmation.
It is also reachable over GET with a ?code= query parameter so users can look up the status of a deletion request — the lookup tool further down this page demonstrates that.
The platform sends a single field, signed_request, as form-encoded POST data. Once decoded and verified, the payload contains:
| Field | Type | Description |
|---|---|---|
signed_request | string | Base64url-encoded signature.payload sent by the platform. |
algorithm | string | Signature algorithm — always HMAC-SHA256. |
issued_at | integer | Unix timestamp indicating when the request was signed. |
user_id | string | The app-scoped identifier of the user requesting deletion. |
Before acting on a request, split the signed_request on the . separator and validate the signature against your app secret using a constant-time comparison.
// POST /data-deletion/callback
const [sig, payload] = signedRequest.split('.');
const data = JSON.parse(base64urlDecode(payload));
// Recompute the signature with your app secret
const expected = hmacSha256(payload, APP_SECRET);
if (!timingSafeEqual(expected, base64urlDecode(sig))) {
return res.status(400).send('Invalid signature');
}
const userId = data.user_id;
await enqueueDeletion(userId);
After queuing the deletion, respond with HTTP 200 and a JSON body containing exactly two fields:
| Field | Type | Description |
|---|---|---|
url | string | A status URL where the user can confirm their deletion request. |
confirmation_code | string | A unique code identifying this deletion request. |
{
"url": "https://melwide.dynamiccrm.com.au/data-deletion-callback?code=DC-7Q2K9X",
"confirmation_code": "DC-7Q2K9X"
}
Users can confirm the status of a deletion request using the confirmation code they received. Enter a code below to see a sample status response.
Enter the confirmation code from your deletion email (for example, DC-7Q2K9X).
This lookup is a front-end demonstration. In production it queries the deletion record created by the callback endpoint.
This page documents the contract, not a live handler. The callback endpoint must be implemented on your server: verify the signed request, perform the deletion asynchronously, persist the confirmation code, and serve a real status page. The form above simulates the user-facing response only.
For the user-facing process and request form, see the Data Deletion instructions. For how we handle personal data generally, see our Privacy Policy.