Application Webhooks
Application webhooks are HTTP calls that Riseact sends to your endpoint when certain events occur across all the organizations that have installed your application.
Unlike organization webhooks, they are registered only once on your partner app: you don't have to configure them for each organization. Every call includes the domain of the organization that generated the event, so you can tell who it refers to.
Setting up a webhook
Application webhooks are managed from the Riseact partner portal, on the app's detail page.
- Open the partner portal and go to Apps.
- Select your application.
- Open the Webhooks tab.
- 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. - Save.
Every registered webhook appears in the tab with its subscribed events and URL. From there you can edit or delete it at any time.
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 |
Call delivery
Riseact sends a POST request with Content-Type: application/json to the registered URL. The payload is identical to that of the organization webhooks and contains:
organization— the domain of the organization that generated the event. It's the key field for routing the event: your app receives events from all installed organizations, so use it to tell which one it is.event— the topic of the event (e.g.donation.created).object— the object affected by the event.idempotency_key— unique identifier of the call. The same key may arrive multiple times: handle it idempotently to deduplicate.
Example (donation.created):
{
"organization": "org-che-ha-installato-app",
"object": {
"id": 229,
"code": "#1000",
"state": "pending",
"amount": 10,
"frequency": 0,
"campaign": 29,
"supporter": 75835,
"payment_method": "MANUAL"
},
"event": "donation.created",
"idempotency_key": "b1e0c9a2-4f3d-4e2a-9c1b-6a7f8d0e2c34"
}
For the other object types (supporter, checkout, payment) see the complete examples on the organization webhooks page.
Operational notes:
- The request timeout is 10 seconds. Respond immediately with
2xxand process the payload asynchronously if the work is heavy. - There is no signing 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 the
idempotency_key.
Event log
The partner portal records every delivery attempt. In the Events tab of your app you'll find the list of calls sent, with the following for each one:
- the organization it refers to;
- the event and the payload sent;
- the HTTP status of the response (or any connection error);
- the response body from your endpoint.
If a delivery fails (unreachable endpoint, error response) you can retry it manually from the event detail. Use this screen to diagnose integration issues.
Difference from organization webhooks
| Application webhooks | Organization webhooks | |
|---|---|---|
| Scope | All the orgs that install the app | A single organization |
| Where they are registered | Partner portal, Webhooks tab | Organization admin, private app |
| Who uses them | Third-party partner apps | Internal automations and integrations |
| Payload | Same (includes organization) | Same (includes organization) |