Overview
Webhooks allow external systems to receive real-time notifications when events occur in Auction Excellence. Instead of polling the API for changes, configure webhook endpoints to receive HTTP POST requests with event data.Real-time
Instant notifications when events occur
Secure
HMAC signature verification for authenticity
Reliable
Automatic retries with exponential backoff
Flexible
Filter events by type and auction
How Webhooks Work
1
Event Occurs
An action happens in Auction Excellence (e.g., submission created)
2
Webhook Triggered
A database trigger fires and queues the webhook delivery
3
HTTP POST Sent
Your endpoint receives a POST request with event data
4
Acknowledgment
Return a 2xx status code to confirm receipt
Available Events
Submission Events
| Event | Trigger | Description |
|---|---|---|
submission.created | New lot submission | Fired when a team member submits a lot count |
submission.updated | Submission modified | Fired when a submission is edited (rare) |
Inspection Events
| Event | Trigger | Description |
|---|---|---|
inspection.created | New inspection | Fired when a quality inspection is submitted |
inspection.defect_added | Defect recorded | Fired when a defect is added to an inspection |
Problem Report Events
| Event | Trigger | Description |
|---|---|---|
problem.created | New problem report | Fired when a problem report is submitted |
problem.status_changed | Status updated | Fired when status changes (open → in_progress → closed) |
problem.assigned | Assignment changed | Fired when problem is assigned/reassigned |
problem.action_completed | Action marked complete | Fired when an action item is completed |
Chat Events
| Event | Trigger | Description |
|---|---|---|
message.created | New message sent | Fired when a message is sent in any channel |
message.edited | Message edited | Fired when a message content is modified |
message.deleted | Message deleted | Fired when a message is soft-deleted |
channel.created | New channel | Fired when a channel is created |
channel.archived | Channel archived | Fired when a channel is archived |
Member Events
| Event | Trigger | Description |
|---|---|---|
member.invited | Invitation sent | Fired when a user is invited to an auction |
member.joined | Member joined | Fired when an invitation is accepted |
member.role_changed | Role updated | Fired when a member’s role changes |
member.removed | Member removed | Fired when a member is removed |
Webhook Payload Structure
All webhook payloads follow a consistent structure:Common Fields
| Field | Type | Description |
|---|---|---|
event | string | Event type identifier |
timestamp | ISO 8601 | When the event occurred |
webhook_id | UUID | Unique ID for this delivery (for deduplication) |
auction_id | UUID | The auction where the event occurred |
data | object | Event-specific payload |
Configuring Webhooks
Webhook configuration is available to auction administrators through the admin dashboard or via API.
Via Admin Dashboard
1
Navigate to Settings
Go to Settings → Integrations → Webhooks
2
Add Endpoint
Click Add Webhook and enter your endpoint URL
3
Select Events
Choose which events should trigger this webhook
4
Save and Test
Save the configuration and use the Test button to verify
Via API
Security
Signature Verification
All webhook requests include an HMAC-SHA256 signature in theX-Webhook-Signature header. Always verify this signature before processing the payload.
Header Format:
Verification Code
- Node.js
- Python
- Go
Additional Headers
| Header | Description |
|---|---|
X-Webhook-ID | Unique ID for this delivery |
X-Webhook-Timestamp | Unix timestamp when sent |
X-Webhook-Event | Event type (e.g., submission.created) |
Content-Type | Always application/json |
User-Agent | AuctionExcellence-Webhook/1.0 |
Handling Webhooks
Response Requirements
- Return a 2xx status code (200-299) to acknowledge receipt
- Response must be returned within 30 seconds
- Response body is ignored
Retry Policy
If your endpoint doesn’t respond with a 2xx status:| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 1 minute |
| 3 | 5 minutes |
| 4 | 30 minutes |
| 5 | 2 hours |
| 6 | 12 hours |
Idempotency
Webhooks may be delivered more than once due to retries. Use thewebhook_id field to detect and handle duplicates:
Testing Webhooks
Test Endpoint
Send a test webhook to verify your endpoint configuration:Local Development
Use a tunneling service like ngrok for local testing:Webhook Logs
View recent webhook deliveries in the admin dashboard: Settings → Integrations → Webhooks → Delivery History Each log entry shows:- Event type
- Delivery status (success/failed)
- Response status code
- Response time
- Error message (if failed)
Best Practices
Always verify signatures
Always verify signatures
Never process a webhook without verifying the HMAC signature. This prevents forged requests.
Respond quickly
Respond quickly
Return a 200 response immediately, then process the event asynchronously. This prevents timeouts.
Handle duplicates
Handle duplicates
Store the
webhook_id and check for duplicates before processing.Use a queue
Use a queue
For high-volume scenarios, push webhooks to a queue (Redis, SQS, etc.) and process separately.
Monitor failures
Monitor failures
Set up alerts for webhook delivery failures to catch integration issues early.
Keep secrets secure
Keep secrets secure
Store webhook secrets in environment variables, not in code.
Troubleshooting
Webhooks not being received
Webhooks not being received
- Verify your endpoint URL is correct and publicly accessible
- Check that the endpoint is enabled in webhook settings
- Ensure the event types you need are selected
- Review the delivery history for error messages
Signature verification failing
Signature verification failing
- Ensure you’re using the raw request body, not parsed JSON
- Verify you’re using the correct webhook secret
- Check that the signature header name is correct (
X-Webhook-Signature)
Receiving duplicate events
Receiving duplicate events
- Implement idempotency using the
webhook_id - Check if your endpoint is responding slowly (causing retries)
- Ensure you’re returning 2xx status codes
Endpoint disabled automatically
Endpoint disabled automatically
Endpoints are disabled after repeated failures. Fix the issue, then:
- Go to Settings → Webhooks
- Find the disabled endpoint
- Click Enable and save
- Send a test webhook to verify