When does donor.updated fire?
Any field on the donor record is updated - email, phone, PAN, address, communication preferences. The payload's changes[] array names which fields; before/after capture the diff.
What developers build with it
- Bidirectional CRM sync - keep MailChimp / Salesforce / HubSpot in step
- PAN validation lifecycle tracking
- Compliance audit trail for donor-data changes
- Communication-preference broadcast across channels
Sample payload
The full envelope (with HMAC-SHA256 signature, delivery UUID and headers) is documented on the webhooks hub page. Below is the per-event data block for donor.updated:
{
"donor_id": 482,
"ngo_id": 7,
"changes": [
"email",
"phone"
],
"before": {
"email": "old@example.com",
"phone": "+919999988888"
},
"after": {
"email": "vandana@example.com",
"phone": "+919876543210"
},
"updated_at": "2026-05-16T11:02:18+05:30"
}
Subscribe to this event
From your NGO dashboard, head to System · Webhooks · Add new. Paste your HTTPS endpoint, copy the signing secret, tick donor.updated in the events list, save. The first matching event fires within seconds. Verify the X-Donateazy-Signature header on every request.
// PHP example - drop into your webhook receiver
$raw = file_get_contents('php://input');
$expected = hash_hmac('sha256', $raw, $WEBHOOK_SECRET);
if (! hash_equals($expected, $_SERVER['HTTP_X_DONATEAZY_SIGNATURE'] ?? '')) {
http_response_code(401); exit;
}
$payload = json_decode($raw, true);
if ($payload['event'] !== 'donor.updated') {
http_response_code(202); exit; // not for this handler
}
// $payload['data'] is the block documented above.
handleDonorUpdated($payload['data'], $payload['id']);
http_response_code(200);