Webhooks
Webhooks provide a powerful way to receive real-time notifications about events in your Swipe account. Instead of continuously polling our API, webhooks push data to your application immediately when events occur.
Overview
When enabled, Swipe will send HTTP POST requests to your configured webhook URL whenever specific events occur in your account. Each webhook request includes:
- Event data: Details about what happened
- Signature: For request verification using HMAC
- Event type: The specific type of event
- Event id: The unique event id
Event Types
Document Events
Receive notifications for all document-related activities:
Event Type | Description |
---|---|
document | Triggered when documents are created, updated, or modified |
Document Event Data Fields:
document_type
: Type of document (e.g., “purchase”, “invoice”)serial_number
: Document serial numberhash_id
: Unique document identifiermessage
: Event description (e.g., “Document Created”)timestamp
: When the event occurred
Inventory Events
Get real-time updates about inventory changes:
Event Type | Description |
---|---|
inventory | Triggered when inventory levels change (stock in/out) |
Inventory Event Data Fields:
swipe_product_id
: Internal Swipe product IDpartner_product_id
: Your system’s product ID (-1 if not mapped)product_name
: Name of the productqty
: Quantity changedmovement
: Direction of movement (“in” or “out”)timestamp
: When the inventory change occurred
Security & Verification
HMAC Signature Verification
Every webhook request includes an X-Signature
header containing an HMAC signature. This ensures the request is authentic and comes from Swipe.
Verification Process
- Extract the signature from the
X-Signature
header - Create an HMAC using your webhook secret and the raw request body
- Compare the computed signature with the received signature
Code Examples
Python
Webhook Payloads
Document Event Payload
Inventory Event Payload
Sample Webhook Request
Here’s how a webhook request would look when sent to your endpoint:
This example shows:
- POST Request: All webhooks are sent via HTTP POST
- Content-Type: Always
application/json
- X-Signature: HMAC signature for request verification
- Payload: The actual event data in JSON format
Configuration
Setting Up Webhooks
- Access Settings: Go to Swipe dashboard
- Add Webhook URL: Enter your webhook endpoint URL
- Select Events: Choose which event types you want to receive
- Set Secret: Generate or provide a webhook secret for signature verification
Webhook URL Requirements
- Must be a valid HTTPS URL (HTTP not supported in production)
- Should respond with a 200 status code within 10 seconds
- Must be publicly accessible (no localhost or private IPs)
Troubleshooting
Common Issues
-
Signature Verification Failures
- Ensure you’re using the raw request body
- Verify the webhook secret is correct
- Check that the signature header name is
X-Signature
-
Webhook Not Receiving Events
- Confirm the webhook URL is correct and accessible
- Check that the event types are properly configured
- Verify your endpoint returns a 200 status code
-
Timeout Issues
- Ensure your webhook endpoint responds within 30 seconds
- Process webhooks asynchronously for heavy operations
- Implement proper error handling
For additional support with webhooks, contact our support team.