Registering the webhook
Use the Create webhook endpoint with"topic": "report":
| Field | Description |
|---|---|
topic | Must be "report" to receive report completion events. |
address | Your publicly accessible HTTPS endpoint. |
type | Set to "custom" for a generic HTTP webhook. |
Webhook payload
When a report run completes, Connectly POSTs the following payload to your endpoint:| Field | Description |
|---|---|
topic | Always "report" for this webhook type. |
timestamp | ISO 8601 timestamp of when the webhook was sent. |
report.id | Unique ID of the report configuration. |
report.name | Human-readable report name. |
report.type | Report type identifier. |
report.last_run.id | ID of the completed run. |
report.last_run.status | Always "completed" when the webhook fires. |
report.last_run.result.url | Signed URL to download the report CSV. Expires at expires_at. |
report.last_run.result.expires_at | When the signed URL expires β download immediately. |
report.last_run.result.created_at | When the report file was generated. |
Recommended handling
Acknowledge receipt immediately
Return a
2xx response as soon as you receive the webhook β before doing any processing. Connectly may retry if it doesnβt receive a timely acknowledgement.Extract and validate the URL
Read
report.last_run.result.url and check expires_at to confirm the URL is still valid.Download the CSV immediately
Perform a GET request to the signed URL right away β it expires within minutes.
Handle expiry gracefully
If your handler is delayed and the URL has expired, call the Reports API to retrieve a fresh signed URL for the same report.
