Headers
| Header | Description |
|---|---|
X-GnosisRamp-Signature | HMAC-SHA256 signature (hex-encoded) |
X-GnosisRamp-Timestamp | ISO 8601 timestamp used in signature |
X-GnosisRamp-Event-Type | Event type (e.g., INTENT_STATUS_CHANGED) |
X-GnosisRamp-Client-Id | Your project’s client ID |
Signature Algorithm
The signature is computed as:Verification Steps
- Extract the timestamp and signature from headers
- Construct the signed payload:
timestamp + "." + rawBody - Compute HMAC-SHA256 using your client secret
- Compare signatures using timing-safe comparison
- Validate timestamp is within plus or minus 5 minutes
Node.js Example
Express.js Middleware
Python Example
Flask Example
Common Issues
Raw Body Not Preserved
Many frameworks parse JSON before your handler runs. You must preserve the raw body string for signature verification. See the middleware examples above.Timestamp Validation Failing
- Ensure your server clock is synchronized (use NTP)
- Allow for some clock skew (5 minutes is recommended)
- Check that you’re parsing the ISO 8601 timestamp correctly
Next Steps
Event Reference
See all event types and payloads.
Webhooks Overview
Webhook setup and delivery details.