Setting Up an Endpoint
- Go to Developers → Webhooks in your Crovver dashboard
- Click + Add Endpoint
- Enter your HTTPS URL — e.g.
https://api.your-app.com/webhooks/crovver - Copy the signing secret shown — it is displayed only once and cannot be retrieved again
2xx status within 5 seconds. Any other response or a timeout is recorded as a failed delivery.
Event Envelope
Every event shares the same top-level structure:data.external_tenant_id is the ID you provided when creating the tenant — use this to identify the user or workspace in your own system. data.tenant_name is the human-readable name for quick identification.Events Reference
When a free trial ends and the first charge succeeds, both
subscription.updated (status: trialing → active) and subscription.renewed (payment received) fire in sequence. These represent distinct state changes — handle them independently and use the top-level id to deduplicate if needed.Verifying Signatures
Every request includes anX-Crovver-Signature header. Always verify it before processing the event.
HMAC-SHA256 of the raw request body using your endpoint’s signing secret.
Delivery & Retries
Crovver delivers each event once. If your endpoint is down or returns a non-2xx status, the delivery is recorded as failed. In Developers → Webhooks, click View Deliveries on any endpoint to see:- The full JSON payload that was sent
- The HTTP status and response body your server returned
- Attempt count and timestamp
id — so your server can safely deduplicate.
Testing Locally
Use the Send Test button in your dashboard to fire awebhook.test event to any registered endpoint. The delivery and its payload will appear in the View Deliveries log immediately.
To receive events on your local machine, expose it with a tunneling tool like ngrok:
https://abc123.ngrok-free.app/webhooks/crovver — then use Send Test to verify your handler end-to-end before deploying.