Overview
Ropes can send webhook notifications to your server when key events occur during the assessment lifecycle. This allows you to build automated workflows, sync data with your systems, and react to candidate progress in real-time.Configuration
To enable webhooks, navigate to Settings → Integrations and configure:- Webhook URL - The HTTPS endpoint where Ropes will send POST requests
- Webhook Secret - A secret key used to sign webhook payloads for verification
- Subscribed Events - Select which events you want to receive
Events
You can subscribe to any combination of the following events:| Event | Description |
|---|---|
interview.sent | An assessment has been sent to a candidate |
interview.started | A candidate has started their assessment |
interview.completed | A candidate has completed their assessment |
interview.expired | An assessment has expired (with or without being started) |
Payload Structure
All webhook payloads include these base fields:Event-Specific Payloads
interview.sent
| Field | Type | Description |
|---|---|---|
assessmentLink | string | The URL sent to the candidate |
expiresAt | string (optional) | ISO 8601 expiration date, if set |
interview.started
| Field | Type | Description |
|---|---|---|
startedAt | string | ISO 8601 timestamp when the candidate started |
interview.completed
| Field | Type | Description |
|---|---|---|
completionDate | string | ISO 8601 timestamp when the assessment was completed |
finalScore | number | The candidate’s final score (0-100) |
plagiarism | boolean | Whether integrity risk was flagged as high or very high |
reportLink | string | URL to view the detailed results |
timeTaken | number | Time taken in seconds |
interview.expired
| Field | Type | Description |
|---|---|---|
expiredAt | string | ISO 8601 timestamp when the assessment expired |
wasStarted | boolean | Whether the candidate had started the assessment before it expired |
Security
Signature Verification
Every webhook request includes anx-ropes-webhook-signature header containing an HMAC-SHA256 signature of the request body, signed with your webhook secret.
Use the following code as an example of how to conduct signature verification.
Best Practices
- Always verify the webhook signature before processing
- Use HTTPS endpoints only
- Respond with a 2xx status code within 10 seconds
- Process webhooks asynchronously if they trigger long-running operations
- Store your webhook secret securely (e.g., environment variables)
Delivery & Retries
Ropes will attempt to deliver each webhook up to 3 times:- Initial delivery - Immediately when the event occurs
- First retry - 1 minute after the initial failure
- Second retry - 5 minutes after the first retry