Almost every agent demo starts the same way: a person types a request. Almost no enterprise work starts that way. A claim is registered, an invoice posts to the ledger, a supplier document lands in a folder, a monitoring alert fires, a case changes status, a shipment misses a milestone. The work exists whether or not someone remembers to ask an assistant about it.
Connecting agents to those events is usually the step that turns a useful pilot into something the business depends on — and it is also where a well-behaved agent meets a set of distributed-systems problems that have nothing to do with AI. This guide covers how to wire enterprise events into governed agent runs in VDF AI, and the four failure modes that decide whether the result survives a month in production.
Three ways an event reaches the platform
- Push (webhooks). The source system calls you when something happens — a ticketing system, an ITSM platform, a document management system, a payments gateway. Lowest latency, least control over volume.
- Pull (queues and change feeds). The platform consumes a message bus topic, a database change feed or a polled API. More moving parts, but you own the pacing, and replay is straightforward.
- Schedule (sweeps). A periodic job that asks “what changed since the last run?” Slower, and the most reliable thing you will build — which is why it belongs alongside the other two rather than instead of them.
Most production workflows end up using two: push for responsiveness, and a scheduled sweep as the safety net that catches what push missed. That is not redundancy for its own sake. It follows from what push actually promises.
Webhook delivery is weaker than teams assume
Three properties of webhook delivery break naive designs, and they are documented rather than theoretical. Atlassian’s Jira platform documentation states directly that webhook delivery is not guaranteed, that failed deliveries are retried, and that ordering is not guaranteed — and Jira is a well-engineered sender. Assume every source behaves at least this loosely.
Delivery is best-effort. If your receiver is down, in maintenance, or unreachable for a few minutes, those events are gone. This is precisely what the scheduled reconciliation sweep is for: a query that asks the source system for everything modified in a window and starts runs for anything without one.
Delivery is at-least-once. Retries mean the same event can arrive several times. Deduplicate on the sender’s event identifier before starting a run, and make the downstream action idempotent as well — the idempotency and compensation patterns that protect agents from unsafe retries apply unchanged here.
Order is not guaranteed. A “status changed to closed” event can arrive before “assignee changed”. Never reconstruct state from the sequence of events; treat the event as a signal that something changed and read current state from the system of record at the start of the run.
Two operational details catch teams out later. Webhook registrations often expire — Jira’s dynamic webhooks, for example, need periodic refreshing — so a workflow can go quiet without anything appearing to fail. And silence is ambiguous: no runs today might mean a calm day or a broken subscription. Alert on the absence of expected events, not just on errors.
Wiring it up in VDF AI
1. Register the source as a governed integration
The event source is connected the same way any system is: as a scoped integration rather than an open endpoint, with signature or bearer verification on inbound calls and the connection registered in the platform. The same least-privilege tool design that governs what an agent may call outward governs what an event may trigger inward.
2. Filter before you spend a GPU
The cheapest agent run is the one that never starts. Put a deterministic predicate in front of the workflow — this queue only, this document type only, above this amount, excluding automated updates made by other integrations. On a busy source, filtering typically removes the large majority of events, and it does so without touching the inference tier your interactive users share.
3. Map the event to a workflow input, not to a prompt
The trigger should populate typed inputs — object identifier, type, tenant, the change that occurred — rather than pasting the raw payload into an instruction. This matters for correctness and for safety: event payloads contain free text written by customers, suppliers and external parties, and text that reaches a model as instruction is an injection surface. Treat every payload field as untrusted data, with the containment patterns applied as they would be to a retrieved document.
4. Bind an identity and its entitlements
An unattended run has no user to inherit permissions from, so the entitlement is a design decision. Create a service identity scoped to this workflow alone, grant it only the systems and operations the use case needs, and record the triggering event as the caller context so every run is traceable to its cause.
5. Gate the material actions
Unattended runs deserve tighter autonomy than chat runs, because nobody is reading the output as it appears. Read-only enrichment can complete on its own; anything that writes to a system of record, contacts a customer or moves money belongs behind an explicit approval step with the approver and version recorded.
6. Make the run observable end to end
Every run should carry the source event identifier through to its tool calls and outputs, so a support question — “why did this case get updated at 03:12?” — is answerable from the trace rather than from inference. That correlation is the substance of agent observability, and it is much harder to retrofit than to include.
Backpressure is the failure you will actually hit
Interactive agents are self-limiting: users only type so fast. Event-driven agents have no such ceiling. A data migration in the source system, a bulk re-categorisation, or an overnight batch can emit tens of thousands of events in minutes, and an unbounded trigger will faithfully turn every one into a run.
The controls are unglamorous and non-negotiable:
- Concurrency caps per source and per workflow, so one noisy system cannot starve every other tenant of the platform — the queue-side companion to GPU admission control.
- A real queue in front of the workers, so a spike becomes latency rather than failure.
- A dead-letter queue for events that fail repeatedly, reviewed by a person. Infinite retry is how a single malformed payload consumes a cluster for a weekend.
- Deadlines on every run, so a stuck workflow releases its resources instead of holding them, using the cancellation and deadline patterns that private infrastructure needs.
- Published targets for event-to-completion latency and dead-letter rate, so “it is slow today” becomes a measurable claim against your platform SLOs.
Start in shadow mode
Run the workflow for real on real events, and send its output to a review queue rather than to the system of record. For a few weeks, a person compares what the agent produced against what the team actually did. You get a measured error rate on live traffic, the source system stays untouched, and the volume profile of your triggers becomes visible before it can hurt anything.
When the review queue stops finding problems, promote the low-risk actions to automatic and keep the material ones gated. That progression — observe, then act under approval, then act autonomously within a narrow scope — is what makes event-driven agents something an operations team is willing to depend on rather than something they quietly switch off.
Sources and further reading
- Jira Cloud platform webhooks — delivery and retry behaviour (Atlassian)
- Best practices for working with webhooks in Jira Data Center (Atlassian)
- Transaction-Safe AI Agents: Idempotency, Compensation, and Safe Retries
- Connecting enterprise APIs to VDF AI agents as governed tools
- How to Build a No-Code Agentic Workflow with VDF AI
- SLOs for On-Premises AI Agent Platforms
Ready to let your systems, not your staff, start the workflow? See how VDF AI Networks runs event-triggered agents under your own governance, or book a demo.