Webhooks
Webhooks let you receive real-time event notifications from Maneuvr in your own systems -- a CRM, a data warehouse, a Slack bot, or anything with an HTTP endpoint.
Webhooks are available on the Business plan.
Setting up a webhook
Go to Settings > Webhooks and click Add webhook:
- Paste your endpoint URL
- Select the event types you want to receive
- Save
Maneuvr immediately sends a test delivery to confirm the endpoint is reachable.
Event types
| Event | When it fires |
|---|---|
entity.created | New competitor added |
entity.updated | Competitor profile changed |
entity.deleted | Competitor removed |
event.created | New competitive event detected |
run.started | Collection run begins |
run.completed | Collection run finishes successfully |
run.failed | Collection run fails |
battlecard.updated | Battlecard regenerated or autofilled |
digest.published | New digest generated |
deal_outcome.created | New deal outcome logged |
deal_outcome.updated | Deal outcome edited |
Subscribe to only the events you need -- no need to filter on your end.
Payload verification
Every webhook delivery is signed with HMAC-SHA256. Verify the signature before processing the payload to confirm it came from Maneuvr.
The signature is in the x-webhook-signature header:
x-webhook-signature: sha256=<hex-digest>
To verify in Node.js:
const crypto = require('crypto');
function verifySignature(payload, signature, secret) {
const expected = 'sha256=' + crypto
.createHmac('sha256', secret)
.update(payload)
.digest('hex');
return crypto.timingSafeEqual(
Buffer.from(signature),
Buffer.from(expected)
);
}
Rotate your signing secret at any time from Settings > Webhooks -- the new secret takes effect immediately for future deliveries.
Delivery and retries
Maneuvr considers a delivery successful if your endpoint returns a 2xx status code within 10 seconds.
If a delivery fails, Maneuvr retries with exponential backoff. After repeated failures, the delivery is moved to a dead letter queue and marked as failed.
Delivery history
Each webhook endpoint in Settings > Webhooks shows recent deliveries with:
- Timestamp
- HTTP status code
- Attempt count
Replaying a delivery
Click Replay on any delivery in the history to re-send it. Useful for:
- Recovering from a temporary outage on your endpoint
- Debugging your integration against real payloads
- Re-processing an event you accidentally ignored
Frequently asked questions
What if my endpoint is down? Maneuvr retries failed deliveries automatically. If your endpoint is down for an extended period, check the delivery history and replay any missed events once you're back up.
Can I subscribe the same URL to multiple event types? Yes. One webhook endpoint can subscribe to any combination of event types.
Is there a payload size limit? Payloads are typically small (a few KB). There is no enforced size limit, but extremely large digest payloads may be truncated.