Configuration
Webhook endpoints are configured at the integrator environment level in the Embed Portal. You can add up to 5 endpoints per environment. Each endpoint has its own signing secret and can be enabled or disabled.Test webhooks
Use Send Test Webhook on an endpoint to verify connectivity and signature verification. Test webhooks use:X-Webhook-Event: test- A small JSON payload with
event,message, andtimestamp
Event Types
| Event | Description |
|---|---|
score.completed | Scoring finished successfully with results |
score.failed | Scoring failed with error details |
batch.completed | All jobs in a batch have finished (completed or failed) |
Payload: score.completed
Payload: score.failed
Payload: batch.completed
Sent when all scoring jobs in a batch have finished processing (completed or failed).completed: All jobs succeededfailed: At least one job failed. UsecompletedJobsandfailedJobsto determine partial vs total failure
Signature Verification
Webhooks are signed using HMAC-SHA256. Always verify signatures to ensure requests are from Nova. Headers:X-Webhook-Id: Unique delivery identifier (stable across retries)X-Webhook-Signature:sha256=<hex_signature>X-Webhook-Event: Event type (for example:SCORE_COMPLETED)X-Webhook-Timestamp: ISO timestamp
IP Whitelisting
Signature verification is the primary security mechanism and is sufficient for most integrations. The HMAC-SHA256 signature cryptographically proves each request originated from Nova.If your security policy requires IP whitelisting in addition to signature verification, contact us through the Embed Portal to request our current webhook source IP ranges.
Retry Policy
Nova retries failed webhook deliveries with exponential backoff and jitter.- Up to 5 attempts
- Minimum delay: 1 minute
- Maximum delay: 30 minutes
After All Retries Fail
If all 5 delivery attempts fail, automatic retries stop. However, results are never lost:| What happens | Details |
|---|---|
| Results remain accessible | Retrieve anytime via GET /v1/jobs/{jobId}/applications/{applicationId}/scoring-jobs/{scoringJobId} |
| No further retries | Automatic retries stop after the final attempt |
Best Practices
Respond quickly
Respond quickly
Return a
2xx response within 30 seconds. Do heavy processing asynchronously.Handle duplicates
Handle duplicates
Use the
X-Webhook-Id header as a deduplication key. This ID is unique per delivery and remains the same across retries. Webhooks may be delivered more than once.Log everything
Log everything
Log the full payload and your processing result for debugging.
Use HTTPS
Use HTTPS
Webhook endpoints must use HTTPS with a valid certificate.
Implement fallback polling
Implement fallback polling
If webhooks fail consistently, poll the scoring job endpoint as a backup.
Webhook Endpoint Checklist
HTTPS endpoint with valid SSL certificate
Signature verification implemented
Returns 2xx within 30 seconds
Handles duplicate deliveries (idempotent)
Logs events for debugging
Fallback polling mechanism in place