Module · Foundations
Triggers: the five ways a workflow starts
Lesson 2 of 8 · 7 min
Every workflow has exactly one trigger. It looks like a small choice — the first box on the canvas — and it is actually the biggest one you make, because the trigger decides two things at once: when your workflow runs, and what data it starts with. Get it right and the rest of the workflow is two nodes. Get it wrong and it's six.
The five you'll actually use
Expedify ships twenty trigger types. You can ignore most of them for now, because they answer only six questions between them — and five of those six are below.
| Trigger | Fires when | A real one |
|---|---|---|
| Database Change Trigger | a record in your CRM is created, updated, or deleted | A deal is marked Won → notify the partner portal |
| User Message Trigger | someone messages your web chat — WhatsApp and voice have their own trigger nodes for the same idea | Website Support Chatbot answers a visitor's question |
| Webhook Trigger | another system sends you an HTTP request | A Google Sheet row lands in the CRM as a contact |
| Scheduler | a clock says so — not an event | Import last night's leads, every night at 21:00 |
| Click Trigger | a person presses a button in the CRM | “Summarise this contact” on a contact record |
Database Change Trigger
- Fires when
- a record in your CRM is created, updated, or deleted
- A real one
- A deal is marked Won → notify the partner portal
User Message Trigger
- Fires when
- someone messages your web chat — WhatsApp and voice have their own trigger nodes for the same idea
- A real one
- Website Support Chatbot answers a visitor's question
Webhook Trigger
- Fires when
- another system sends you an HTTP request
- A real one
- A Google Sheet row lands in the CRM as a contact
Scheduler
- Fires when
- a clock says so — not an event
- A real one
- Import last night's leads, every night at 21:00
Click Trigger
- Fires when
- a person presses a button in the CRM
- A real one
- “Summarise this contact” on a contact record
Two of those are events you didn't cause (a message, a webhook), two are events inside your own system (a record changed, a button pressed), and one is not an event at all — the Scheduler just runs. That distinction is what the rest of this lesson is about.
The other fifteen are these same shapes in different clothes. Segment and Knowledge Base triggers are a record changing. WhatsApp, voice and Flow-response triggers are someone contacting you. Google Sheets, Zoho, Calendly and the two calendar triggers are another system with news. Due Time is a clock, measured from a date on a record instead of the wall. Only one is genuinely its own shape — Campaign Activity, which fires when a contact opens or clicks something you sent. You will meet each of them in the lesson that builds with it, not in a list.
If you would rather see all twenty at once — because you are looking for one rather than learning them — Every Expedify trigger, and when to reach for it names each one and points at the lesson that builds with it.
The same job, two triggers
Here is one job — send every new lead the welcome email — built twice. Nothing about the goal changes. Only the trigger does. Click the nodes and compare what each one hands you.
Version A — a Database Change Trigger
Fires the moment the contact row is created. Two nodes.
Look at Contact Input Variable on the second node. It reads {{new_contact.new_data.id}} — and new_data is the whole row that just changed. The trigger did not merely say “something happened”; it handed the workflow the record, so the send node needs nothing else to know who it is writing to.
Version B — a Scheduler
Runs at 21:00 whether or not anything happened. Four nodes.
Scroll for all 4 steps →
The Scheduler hands the workflow {{clock.triggered_at}} — the time it ran, and nothing at all about any contact. So the Database Query has to go and ask which contacts arrived today, the Loop has to walk them one at a time, and only then can the same send node run — reading {{each.current_item.id}} instead of the trigger.
Version B is twice the workflow for the same outcome, and the lead waits up to a day. That is not because the Scheduler is a worse node — it is because the Scheduler answers a different question. It knows when to run. It does not know who changed. So you spend two extra nodes buying back the information the Database Change Trigger would have handed you for free.
The rule under all of this: a trigger doesn't just start the workflow, it supplies the first data. Before you pick one, ask what you'll need in the very next node — and prefer the trigger that already knows it.
The one that bites people
A Database Change Trigger watches a table. If a node later in the same workflow writes back to that table, the write is a change, the change fires the trigger, and the workflow starts itself again — forever.
Every Database Change Trigger has an “Ignored Fields” box, and this is what it's for. List the fields this workflow writes — lead_status, summary — and an update that only touches those will not re-fire it. Set it while you're building, not after you've sent the same welcome message four hundred times.
How to pick
You don't need to memorise the list. Ask one question — what makes this job need to happen? — and follow it down:
Notice that the Scheduler sits at the bottom. That ordering is deliberate: a schedule is the right answer when the job genuinely belongs to a clock — a nightly report, a weekly digest — and the wrong answer when you reached for it because you couldn't think of the event. If you can name the event, there is a trigger for it.
Key takeaways
- One workflow, one trigger — and changing it changes the whole design, not just the first box.
- Five cover almost everything: Database Change Trigger, User Message, Webhook, Scheduler, Click Trigger.
- The trigger supplies the first data. A Database Change Trigger hands you the changed row; a Scheduler hands you a timestamp and nothing else.
- If the workflow writes back to the table its Database Change Trigger watches, list those fields under Ignored Fields or it will re-trigger itself.
- Ask what makes this job need to happen. The answer names the trigger.
Try it yourself
Take something you'd genuinely automate this month — a welcome, a handoff, a reminder — and write one sentence: “this should happen when ___.” Whatever fills that blank is your trigger. If the blank wants to say “every morning”, push once more: is it really the clock, or is it an event you haven't named yet?
Next: Anatomy of a node — every node you meet is the same shape, and once you can read one form you can read all of them.

