Who this is for. Anyone wiring a job's trigger who needs one event's exact behaviour: what fires it, what it carries, and its loop risk. Afterwards you can pick the right event and read its data without guessing.

Every event that can start a job, one entry each. The event names are read from the platform's source: the three record methods every entity has, and the extra methods below. How to choose between them is on Events, what starts a job; this page is for looking one up.

In every job template the event is the variable event ($event in Smarty). For an entity event it offers getRecord(), getRecordId(), getMethod() and getPreEventData(); the other kinds are listed with their own entries.

Record events, on every entity

CreateRecord

FiresWhen a record of the entity is saved for the first time, from the admin, the API or a front-end form
ReceivesThe new record, read when the batch runs
Loop riskA synchronous job that creates a record of the same entity starts itself again. Records created by an asynchronous job fire no events
ExamplePages, CreateRecord → email the content team a link to the new page

UpdateRecord

FiresWhen a saved record changes, once per save; also when a scheduled publish or unpublish date arrives
ReceivesThe record as it is when the batch runs, and getPreEventData() with the fields listed under the trigger's Pre-Event properties, as they were before the change
Loop riskHigh for a synchronous job that writes the record it watches. Guard on the changed field: see Guarding against recursion
ExampleBlog posts, UpdateRecord, Pre-Event {published} → post to social channels when published goes from empty to a date

DeleteRecord

FiresWhen a record is deleted
ReceivesThe record id and name; the record itself no longer exists when the batch runs, so capture its fields with Pre-Event properties
Loop riskNone from the record itself
ExampleProducts, DeleteRecord, Pre-Event {externalId} → tell the ERP the product is gone

StartEditingRecord

FiresWhen someone opens a record for editing in the admin, only on sites where that logging is switched on (Globals.admin.logRecordEditingStartEvent), and only if it was last saved more than Globals.admin.logRecordEditingStartEventDelay ago (10 seconds by default)
ReceivesThe record
Loop riskNone
ExamplePages, StartEditingRecord → notify the page's owner that someone else is editing it

Events particular to one entity

Completed (form submissions)

FiresWhen a submission is completed: once, the first time, including the last step of a multi-step form. Not on later edits
ReceivesThe submission. Narrow the trigger to one form with its parent record id
Loop riskNone: editing the submission does not fire it again
ExampleForm submissions, Completed, parent = the contact form → push to the CRM

Abandoned (carts)

FiresWhen a background check finds a cart that has items and a shopper's email and has not changed for the abandoned threshold, an hour by default (Carts.abandonedThreshold, in seconds). Once per cart
ReceivesThe cart
Loop riskNone; it is raised by the check, not by a save
ExampleCarts, Abandoned → send a reminder email with a link back to the cart

SendReceipt (invoices)

FiresWhen an administrator uses Send receipt on an invoice in the admin
ReceivesThe invoice
Loop riskNone
ExampleInvoices, SendReceipt → render the receipt template and email it to the customer

BackInStock (products, variants)

FiresWhen a product's or a product variant's available stock, summed across all warehouses, rises above Products.interest.stockThreshold (0 by default). Once per crossing
ReceivesThe product or variant
Loop riskNone; it is raised by a stock change, not by a save
ExampleProduct variants, BackInStock → notify the people waiting for it and mark their interests completed

Login (users)

FiresWhen a user signs in with a username and password through the platform's login, and only on sites where Globals.admin.logLoginEvent is switched on (off by default)
ReceivesThe user. A userId is queued with the event but is not kept on the run, so a job template cannot read it
Loop riskAn update to the user from a synchronous job starts the user's UpdateRecord jobs
ExampleUsers, Login → record the last sign-in on the member's person record

ExportPDF (books)

FiresWhen a PDF export of a book is requested
ReceivesThe book
Loop riskNone
ExampleBooks, ExportPDF → notify the requester when the export is ready

Other ways a job starts

Web event

FiresWhen an HTTP request with an allowed method reaches /cdna-api/webhook/<slug> and the job is published
ReceivesgetMethod(), getQueryParameter(name), getQueryParameters(), getPathParameters(), getHeader(name), getBody(), getBodyData()
Loop riskA job that calls its own URL with an HTTP request action
ExampleA payment provider's webhook, asynchronous → update the order. Full treatment: Custom endpoints

Scheduled

FiresAt each time of the job's recurring schedule (a cron expression in the client's timezone) or on each of its one-off dates. Needs a job limited to one site
ReceivesThe scheduler task that fired; no record
Loop riskOverlap rather than a loop: the next run is queued whether or not the last one finished
Example0 2 * * * → export the day's orders as CSV

Triggered by another job

FiresWhen another job's Trigger job action runs: inside that batch if this job is synchronous, queued if not
ReceivesgetData() (the JSON the trigger action rendered), getSourceBatch(), getSourceHook()
Loop riskTwo jobs that trigger each other. Pass a depth or a marker in the data and stop on it
Example"Order: completed → find warehouse" triggers "Job: after order → email warehouse"