Best for

Solo operators wiring a form, ticket, file, or record change to their agent for the first time

Time to try

25-minute trigger design

Start here

Name one event and the single job it should start

An event is simply a change

Before anything technical, get the vocabulary out of the way. An event is just a change in the outside world your agent can notice: a customer submits your contact form, a deal moves to “Won,” a file lands in a shared folder, a new support ticket appears. An event-triggered workflow starts the moment that change happens, instead of waiting for a scheduled time to check.

This matters because it removes the gap between “something happened” and “work began.” A reply drafts itself while the customer is still at their desk; a new file gets tagged before you forget it exists. To judge whether you have a real event, try to name it in one sentence and point to where it shows up in your dashboard. If you cannot, the trigger is too vague.

The trade-off is that events arrive on the world’s schedule, not yours—including at 2 a.m., and sometimes in bursts. A vague trigger like “when anything changes in the CRM” fires constantly and buries the runs that mattered. Start with one specific change you can describe out loud.

Map one event to one bounded job

Connect a single named event to a single bounded job with fixed inputs and a fixed output. A clear example: “When a new support ticket arrives, classify its topic, draft a reply from my approved answers, and leave the draft for review.” The event is the starting gun, not the coach—it should not expand what the agent is allowed to do, reach for new tools, or grant itself new access.

Bounded jobs are easy to check, because you can hold the result against the sentence you wrote. The test: if describing the job forces you to add “and then it figures out what to do,” it is not bounded yet. A common failure is a trigger like “when a lead arrives, handle it.” “Handle” is undefined, so the agent improvises—emailing some leads, silently skipping others, updating records inconsistently—and you cannot tell a good run from a bad one.

The trade-off is honest: a narrow job covers fewer situations, so unusual cases fall through to you instead of being absorbed. That is the point, not a flaw. You keep the exceptions and let the agent take the repeatable middle.

Use case: Priya’s support tickets become one draft

Priya sells a paid newsletter and handles support alone. She wired her help inbox to the agent: when a new ticket arrives, classify it and draft a reply from her saved answers. The first week, two things went wrong. A customer with spotty wifi replied three times to the same thread within a minute, and the agent produced three near-identical drafts. Separately, on a refund question, the draft was polite but wrong about her policy—saved only because it was still a draft.

She had three options. Turn the whole thing off and go back to manual. Let it auto-send to move faster. Or keep the trigger and add two controls: recognize repeats by the ticket ID so they update one draft, and require approval before anything is sent.

She chose the third. Now three arrivals of the same ticket collapse into a single draft. Reading and drafting run automatically; sending waits for her yes; refunds and account changes sit behind their own separate gate. The lesson: the trigger was never the problem. She needed the workflow to run once, and to pause before a reply left her name.

Priya’s ticket workflow, one event traced through

Illustrative figures from Priya’s first pilot week—an example of one bounded event with duplicate and approval controls, not a customer result.

3 → 1Duplicate arrivals collapsed

The same ticket ID updates the existing draft instead of making three.

0Replies sent without a yes

Drafting is automatic; sending pauses at one approval gate.

1Event types live in the pilot

Prove one path end to end before adding a second event.

Protect against duplicates

Outside services routinely send the same event more than once. A customer double-taps submit; a provider retries after a timeout; a tool redelivers everything after its own outage. Delivery is “at least once,” not “exactly once”—both GitHub and Stripe document this and tell you to expect repeats. So the workflow needs a way to recognize the original record and update or ignore the repeat, instead of producing a second reply, task, or charge.

The practical move is to pick an identity the repeat will share: a ticket ID, an order number, an email address paired with a timestamp. When a matching event arrives, the workflow updates the existing draft rather than starting a new one. To judge it, send the same test event twice and confirm you end with one draft, not two.

Skip this and the results are the kind customers notice: two identical replies, a task list full of copies, or—worst—an action taken twice. The trade-off runs the other way too: match on an identity that is too loose and you may suppress a genuinely different second request from the same person. Choose a strong, specific key, not just “same sender.”

Choose an approval boundary

Not every step carries the same risk, so not every step deserves the same handling. Reading, classifying, tagging, and drafting can run automatically: they stay inside the dashboard and a mistake costs a glance to fix. Sending a message, publishing, moving money, changing access, or deleting a record should pause for your approval—unless you have tested a low-risk rule that clearly earns an exception.

The reason is not that the agent is untrustworthy; it is that some actions leave your control the instant they happen. Place the gate at the last reversible moment and nowhere else. A quick way to judge a step: after it runs, what changed outside the dashboard, and could a person undo it in under a minute with no outside consequence? If yes, it probably needs no gate.

The failure case is vivid. Let a support event auto-send and the agent can answer an already-frustrated customer with a confident, wrong reply under your name—before you ever see it. The opposite extreme has a cost too: gate every step and you become a slow approval button, tapping “yes” without reading. Spend approvals only where an undo does not exist.

Use a fallback

Live triggers are best-effort, not guaranteed. Messages get dropped during an outage, and providers eventually stop retrying after a few days. So add a quiet fallback: a daily—or hourly—sweep that looks for events which should have produced work but did not, such as tickets with no draft or forms with no follow-up, and fills the gaps.

The discipline that makes a sweep safe is the same one from the duplicates section: it must reprocess only what has no result yet, and never redo finished work. To judge it, disconnect the live trigger for a moment, create a test record, and confirm the next sweep quietly catches it. If it does, you have a safety net; if it re-drafts things you already sent, it needs the same identity check as your main path.

Without a fallback, one Saturday outage at your form tool can swallow three leads, and you learn about it only when one emails to ask why no one replied. The trade-off is a little extra setup and a second place that reads your records—worth it for work where a silently missed event costs you a customer.

Try this next

  1. Name one real event—a form submission, new ticket, or record change—and write the single bounded job it should start in one sentence.
  2. Add a duplicate rule: pick the identity that makes a repeat recognizable (ticket ID, order number, email plus time) so a resent event updates instead of multiplying.
  3. Put one approval gate before the first action that leaves the dashboard—send, publish, pay, or delete—and let reading and drafting run automatically.
  4. Add a daily sweep that catches missed events and reprocesses only records with no result yet, then run the whole path on test data before going live.

Sources and further reading

These primary references support the article’s approach to subscribing to a single event, expecting duplicate deliveries, keeping a person in control of consequential actions, and limiting what a trigger is allowed to do.

Ready to put one useful workflow to work?

Start with one clear job, a result you can review, and boundaries you understand.

See launch pricing