Who this is for. Anyone starting a new job. Find your case in the left column; the right column names the trigger and the setting that makes it work.

The decision table

You want to run something when…Use
a form is submittedEntity event, Form Submissions, Completed, narrowed to the form. Not Created: a multi-step form creates the submission before it is complete
a record is created, edited or deleted in the admin or through the APIEntity event, Created, Updated or Deleted. For a delete, list what the job needs as Pre-Event properties
a field changes, or changes to a particular valueEntity event, Updated, with that field as a Pre-Event property and a condition that compares before and after
a page or post goes live, at once or on its scheduled dateEntity event, Updated, with {published} as the Pre-Event property and the condition on Detecting that a record went live
an order is paidEntity event, Orders, Created and Updated, with {financialStatus} as the Pre-Event property and the became-paid condition
a shopper leaves a cartEntity event, Carts, Abandoned
a product a shopper is waiting for is back in stockEntity event, Products or Product Variants, Back in stock
another system tells you something happenedWeb event, asynchronous: the caller gets an immediate acknowledgement
your front end or a partner needs an answerWeb event, synchronous, ending in an HTTP Response (Custom endpoints)
it is time: nightly, hourly, on a dateRecurring or scheduled execution, with the job's site set
another job reaches a certain point, or creates a recordA Trigger job action in that job. A record created by an asynchronous job starts no Created trigger
a record has not changed for a while, or a date in it passes (a renewal, an expiry, a reminder)Use a schedule that selects the records whose date has passed, in a template with query and a real date (why a template)
thousands of records must be processed: an import, an export, a resyncA schedule that handles a chunk per run, not an entity event: see Event job or scheduled job

More than one trigger

A job can have several triggers of different kinds: the warehouse job in the worked integration could be started by a payment event and by a retry schedule. Each run's event is then of a different kind, so a template that reads it must check which: a scheduled run has no record, a web event has no getRecord(). Where the work after the start is the same, a separate small job per trigger that hands over to one shared job with Trigger job is easier to read.