← All webhook events

Subscribe to csr.project.status_changed

A CSR project transitions to a new status - e.g. approved, active, on-hold, closed.

When does csr.project.status_changed fire?

A project status transition is recorded, whether triggered manually or by an approval workflow.

What developers build with it

  • Keep an external CSR portfolio tracker in sync
  • Trigger board-pack updates on major transitions
  • Alert programme owners when a project goes on-hold
  • Archive closed projects in downstream systems

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 csr.project.status_changed:

{
    "project_id": 12,
    "title": "Clean Water for Coastal Villages",
    "from": "planned",
    "to": "active",
    "changed_at": "2026-06-01T10:00:00+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 csr.project.status_changed 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 = 'sha256=' . 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'] !== 'csr.project.status_changed') {
    http_response_code(202); exit; // not for this handler
}

// $payload['data'] is the block documented above.
handleCsrProjectStatusChanged($payload['data'], $payload['id']);
http_response_code(200);

Build your first integration in 10 minutes.

Webhooks ship on Pro and above. Full API reference, signature verification and idempotency on the hub.

Read the full reference See pricing
Chat with us