Webhooks

DevStride POSTs a signed JSON event to your HTTPS endpoint the moment an item, comment or SLA timer changes, so your systems react in seconds instead of polling the API.

Webhooks push changes out of DevStride as they happen. You register an HTTPS endpoint and choose the events it cares about; whenever one of those changes happens anywhere in your organization, DevStride sends your endpoint a small JSON document describing it, signed so you can prove it came from DevStride.

Instead of asking the API "has anything changed?" every few minutes, your system is told, usually within seconds, and only when there is something to tell.

Why webhooks instead of polling

Polling the APIWebhooks
How fast you hear about a changeYour polling interval, at bestUsually seconds
Requests when nothing changesOne per interval, foreverNone
Counts against your API rate limitEvery pollNever: DevStride calls you
Knowing what changedDiff the results yourselfEach event says what happened, who did it and how
Missed changes while your system is downDepends on your diff logicQueued and retried for about a day, then replayable for at least 30 days

Webhooks and the API work well together: an event tells you that something changed and carries the essentials, and when you need the full record (a description, custom fields) you read it from the API by the ids in the event.

The events

EventSent when
item.createdA work item or Service Desk ticket is created, from any channel.
item.status_changedAn item moves to a different status.
comment.createdA comment is added to an item or ticket: public replies and internal notes alike.
sla.at_riskA ticket is about to miss one of its SLA targets.
sla.breachedA ticket has missed one of its SLA targets.

The first three cover every work item in the organization; the two SLA events concern Service Desk tickets only. Every field of every event is listed in Events & Payloads.

What you can build

  • Sync tickets with a CRM or a partner's system. Mirror new tickets (item.created), their progress (item.status_changed) and the conversation (comment.created) into Salesforce, HubSpot or an outsourced support desk, without a nightly export.
  • Chat bots for Slack, Microsoft Teams or Discord. Post to a channel when an urgent ticket arrives or an item reaches a Done status, with your own formatting and routing rules.
  • Analytics and data pipelines. Stream every change into a warehouse (BigQuery, Snowflake, Redshift) or an event bus (Kafka, Amazon EventBridge) and measure cycle time to the second.
  • Automation platforms. Start a Zapier, Make or n8n workflow from their "catch webhook" trigger. Verify the signature in a code step where the platform offers one, or put a small verifying relay in front.
  • Audit trails. Keep an append-only record of who created and moved what, and when, in a system you control.
  • SLA escalation and paging. Turn sla.at_risk into a Slack warning and sla.breached into a PagerDuty or Opsgenie incident, so a missed promise wakes the right person.

How it works

  1. Something changes in DevStride: an item is created, a status changes, someone comments, an SLA timer crosses a threshold.
  2. DevStride builds one event for that change and queues one delivery for every enabled endpoint subscribed to that event type.
  3. Each delivery is POSTed to its endpoint as JSON, signed with that endpoint's own secret. Deliveries to one endpoint go out one at a time, in order.
  4. Your endpoint checks the signature, answers with any 2xx status, and processes the event.
  5. If it does not answer 2xx in time, DevStride retries with growing waits for about a day. Everything is visible in the delivery log on the Webhooks settings page, where you can replay what failed.

The details are in Delivery, Retries & Ordering.

Webhooks or the "Call Webhook" automation action?

DevStride also has a Call Webhook action in Automations. They solve different problems:

Webhooks (this section)Call Webhook automation action
What triggers itEvery change of the subscribed types, organization-wideOne automation rule's trigger and conditions
PayloadA fixed, documented JSON contractText you compose from item fields
SignedYes, HMAC-SHA256 with a per-endpoint secretNo
Retries, ordering, delivery log, replayYesNo
Set up inConfigure Settings → Integrations → WebhooksThe automation builder

Use webhooks to keep another system in sync. Use Call Webhook for a one-off notification shaped by a single rule.

Who can manage webhooks

Everything on the Webhooks page, and every webhook API route, needs the Manage Webhooks permission (MANAGE_WEBHOOKS). The Owner and Admin roles hold it by default; you can grant it to a custom role in Roles & Permissions. It requires the Settings module. Members without it never see the page.

Limits at a glance

LimitValue
Endpoints per organization20
Endpoint URLhttps:// only, at most 2,048 characters; private, loopback, link-local and cloud-metadata addresses are refused
Time to answer10 seconds per request, 15 seconds in total including DNS lookups and redirects
Response body DevStride reads64 KB (a larger response counts as a failure)
Delivery attempts10, spread over about 24 hours
Signature timestamp tolerance5 minutes (300 seconds)
Previous secret still valid after a rotation24 hours
Comment HTML carried in comment.created256 KB (larger comments arrive with truncated: true)
Delivery log retentionAt least 30 days after a delivery was queued

Where to go next