Organization Webhooks
Organization webhooks are HTTP calls that Riseact sends to your endpoint when certain events occur within a single organization (creation of a supporter, payment of a checkout, etc.).
They are tied to a single organization: they are registered with the token of a private application and receive only the events of that organization. If you are developing a partner app that needs to receive events from all organizations that installed it, use the application webhooks instead.
Setting up a webhook
Organization webhooks are managed from the administration panel, on the detail page of a private application. No permission other than access to application management is required.
- Go to Settings → Apps → Private applications.
- Open (or create) the private application.
- Scroll to the Webhook section, Organization webhooks card.
- Click Add webhook.
- Select the events you want to receive (see Available events) and enter the HTTPS URL of your endpoint, the one that will receive the
POSTcalls. - Click Save.
Each registered webhook appears in the card with the subscribed events and the URL. From there you can edit or delete it at any time.
Webhooks are tied to the organization, not to the single private application: the ones you see in the card apply to the entire organization, regardless of the app used to create them.
Available events
| Event | Description |
|---|---|
supporter.created | A new supporter has been created |
supporter.updated | A supporter has been updated |
supporter.deleted | A supporter has been deleted |
checkout.created | A new checkout has been opened |
checkout.updated | A checkout has been updated |
checkout.paid | A checkout has been completed with payment |
checkout.closed | A checkout has been closed |
donation.created | A new donation has been created |
donation.updated | A donation has been updated |
donation.deleted | A donation has been deleted |
payment.created | A new payment has been recorded |
payment.updated | A payment has been updated |
campaign.created | A new campaign has been created |
campaign.updated | A campaign has been updated |
campaign.deleted | A campaign has been deleted |
Delivery of the calls
Riseact sends a POST request with Content-Type: application/json to the registered URL. Each payload contains:
organization— the domain of the organization that generated the event.event— the topic of the event (e.g.donation.created).object— the object affected by the event.idempotency_key— a unique identifier of the call. Use it to deduplicate: the same key can arrive multiple times, your endpoint must handle it idempotently.
Operational notes:
- The request timeout is 10 seconds. Respond immediately with
2xxand process the payload asynchronously if the work is heavy. - There is no signature mechanism (HMAC/secret). If you need to verify the origin, use a URL with a secret path or a token in the query string, and validate
idempotency_key.
Request details
Below are some examples of a request sent by Riseact to your webhook.
Supporter webhooks
{
"organization": "your-org-domain",
"object": {
"id": 75835,
"create_date": "2023-08-17T16:10:45.354192+00:00",
"update_date": "2023-08-17T16:10:45.367332+00:00",
"image": "",
"business_name": null,
"first_name": "first name",
"last_name": "last name",
"supporter_type": "INDIVIDUAL",
"email": "test@email.com",
"phone": "phone",
"mobile": "mobile",
"sex": "MALE",
"date_of_birth": "1970-01-01",
"place_of_birth": "Place of birth",
"ssn": "ssn",
"vat": "vat",
"address": "address",
"address2": "secondary address",
"city": "city",
"locality": "locality",
"country": "IT",
"postal_code": "code",
"certification_url": null,
"privacy": false,
"email_marketing": false,
"phone_marketing": false,
"sms_marketing": false,
"postal_marketing": false,
"profilation_marketing": false,
"note": "notes",
"tags": [],
"external_ref": null,
"source_campaign": null,
"organization": 33,
"application": 1,
"stripe_customer_id": null
},
"event": "supporter.created",
"idempotency_key": "b1e0c9a2-4f3d-4e2a-9c1b-6a7f8d0e2c34"
}
Checkout webhooks
{
"organization": "your-org-domain",
"object": {
"id": 901,
"create_date": "2023-08-17T16:15:52.746141+00:00",
"update_date": "2023-08-17T16:15:52.746165+00:00",
"state": "OPEN",
"amount": 10,
"completed_date": null,
"donation": null,
"supporter": 75835,
"frequency": null,
"peer_campaign": null
},
"event": "checkout.created",
"idempotency_key": "b1e0c9a2-4f3d-4e2a-9c1b-6a7f8d0e2c34"
}
Payment webhooks
{
"organization": "your-org-domain",
"object": {
"id": 230,
"create_date": "2023-08-17T16:27:04.647182+00:00",
"update_date": "2023-08-17T16:27:04.647204+00:00",
"state": "PAID",
"amount": 10,
"payment_date": "2023-08-17T16:26:59.889000+00:00",
"payment_method": "MANUAL",
"donation": 229,
"supporter": 75835,
"frequency": 0,
"peer_campaign": null
},
"event": "payment.created",
"idempotency_key": "b1e0c9a2-4f3d-4e2a-9c1b-6a7f8d0e2c34"
}
Donation webhooks
{
"organization": "your-org-domain",
"object": {
"id": 229,
"create_date": "2023-08-17T16:27:04.542168+00:00",
"update_date": "2023-08-17T16:27:04.542168+00:00",
"code": "#1000",
"state": "pending",
"amount": 10,
"frequency": 0,
"completed_date": null,
"campaign": 29,
"peer_campaign": null,
"supporter": 75835,
"tags": [],
"payment_method": "MANUAL"
},
"event": "donation.created",
"idempotency_key": "b1e0c9a2-4f3d-4e2a-9c1b-6a7f8d0e2c34"
}