Member webhook by API
Set the member-join webhook of an event, get the signing secret once, rotate it, send a test and read the last deliveries.
The member webhook tells your server each time someone joins a community of an event. The payload, the signature and the retries are described in the guide page and in Outbound webhooks. This page covers the API calls. Reference: Webhooks.
Read
GET /v1/events/{event_id}/member-webhook{
"url": "https://hooks.example.com/groupilot",
"secret_configured": true,
"recent_deliveries": [
{ "id": "…", "type": "member.joined", "status": "delivered", "attempt_count": 1, "last_http_status": 200, "last_error_code": null, "created_at": "…", "completed_at": "…" }
]
}read scope. The last 10 deliveries are included; phone numbers and payloads never are.
Set or remove the URL
PUT /v1/events/{event_id}/member-webhook
{ "url": "https://hooks.example.com/groupilot" }write scope. HTTPS only, public host, no credentials in the URL. The first time, the response carries signing_secret: store it, it is never shown again. { "url": null } disables the webhook. 409 on a stopped event.
Rotate the secret
POST /v1/events/{event_id}/member-webhook/rotate-secretReturns { "signing_secret": "whsec_…", "rotated_at": "…" }. The old secret stops validating immediately: deploy the new one first on your side, then rotate.
Send a test
POST /v1/events/{event_id}/member-webhook/testQueues a webhook.test delivery and attempts it right away. The response is { "delivery_id": "…", "status": "delivered", "http_status": 200 }; status is pending when Groupilot will retry, failed when your side refused it.
Verify what you receive
X-Groupilot-Signature: t=<unix seconds>,v1=<hex> where v1 is HMAC-SHA256(secret, t + "." + rawBody). Reject a t older than 5 minutes, deduplicate on the envelope id. Code sample in the guide.