Configure a Webhook
Create an Activity Feed with Webhook
Navigate to Settings > Activity Feeds
Click Create to create a new activity feed
Enter a name for your feed
Select which resource types to follow
Toggle the Webhook switch
Enter the Webhook URI
https://example.com/webhooks/confidenceEnter a Webhook Secret for signature verification
Select the minimum Priority level for notifications
Click Create
Edit a Feed
Navigate to Settings > Activity Feeds
Click the Edit button on the feed you want to modify
Toggle the Webhook switch to enable webhook notifications
Configure the webhook URI and secret
Click Save
Webhook Payload
Confidence sends activity notifications as JSON in theListActivitiesResponse format. Each webhook request contains an array of activities.
Example Payload
Activity Fields
name: Unique identifier for the activityprimaryResource: The main resource this activity relates torelatedResources: Other resources involved in the activitypriority: Activity priority level (LOW, MEDIUM, HIGH)actor: The identity that performed the activitytitle: Human-readable activity titlebody: Detailed description in Markdown formatactivityTime: When the activity occurredcreateTime: When Confidence created the activityupdateTime: When the activity was last updatedcreator: Identity that created the activity recordupdater: Identity that last updated the activity record
Security
Webhooks use HMAC-SHA256 signatures to ensure authenticity and integrity of messages. Every webhook request includes three custom headers for verification.Request Headers
Signature Generation
Confidence computes the signature as:secret: The webhook secret you provided during configurationtimestamp: The value from theConfidence-Webhook-Timestampheaderpayload: The raw JSON request body
Verify Signatures
To verify a webhook request is authentic:Extract headers from the incoming request
Confidence-Webhook-SignatureConfidence-Webhook-Timestamp
Validate timestamp to prevent replay attacks
- Check that the timestamp is recent (within ±5 minutes of current time)
- Reject requests with timestamps too far in the past or future
Compute expected signature
- Concatenate timestamp and payload:
"{timestamp}.{payload}" - Compute HMAC-SHA256 using your webhook secret
- Convert result to hexadecimal string
Compare signatures
- Use constant-time comparison to prevent timing attacks
- If signatures match, the request is authentic
Example Verification
Best Practices
- Secret Management
- Endpoint Implementation
- Error Handling
- Security Considerations
- Generate strong secrets: Use cryptographically random strings (at least 32 characters)
- Rotate secrets regularly: Update webhook secrets periodically
- Store securely: Never commit secrets to version control or expose in logs
- Use environment variables: Store secrets in environment variables or secret management systems
Troubleshoot Common Issues
- Webhook not receiving notifications
- Signature verification failing
- Activities missing from webhook
- Verify the webhook is enabled (toggle switched on)
- Check that the priority filter allows the activity level
- Ensure your endpoint is publicly accessible via HTTPS
- Verify your endpoint returns HTTP 200 status

