This chapter is the trigger reference for the Automation Builder.
The Automation Builder, opened from an Automation detail, is the central and only place where an automation defines:
In other words, this is where you define both what starts the automation and what the automation does.
Jetstack does not use one flat list of trigger names. A trigger is always a combination of:
That structure matters because the same event name can mean different things on different resources, and because selectors let one resource family specialize itself for a concrete context such as:
The trigger builder is driven by three contracts exposed by trigger resources:
getResourceIdentification()getKnownSelectors()getPublicEvents()At runtime, trigger parameters are available inside the automation through the trigger("code") function.
An automation trigger is stored with three main keys:
automationTriggerResourceautomationTriggerSelectorsautomationTriggerEventThe resource class is always the primary identifier.
This is important:
User, you listen directly on the User resource or the Users managerSoopioObject[user]client, you do use SoopioObject[client] or SoopioObjects[client]The selector only specializes the resource. It does not replace it.
Selectors are additive and subset-based.
If an automation is configured with selectors, the emitted event must contain all of them. The emitted event may contain more selectors than the automation requires.
This means:
Not all trigger definitions are executed the same way.
These are discovered from active automations and registered into the global hook map. They run automatically when the platform emits the matching system event.
This is the main model for:
These are not resolved by the global hook map. Instead, another platform element points directly to the automation and passes the trigger parameters explicitly.
This is the main model for:
In these cases, the trigger definition is still important because it defines the contract of the incoming trigger parameters and keeps the automation understandable in the builder.
Selectors are only pre-filled when the selected resource can enumerate them.
That means:
ModulePresenter can enumerate module selectors in addition to action selectorsSome selectors are contextual or free-form and are therefore not fully enumerable in advance. The most important examples are:
The following table groups resources by the event set they expose.
| Builder category | Trigger resource identifications | Selectors | Event group | Execution mode | Notes |
|---|---|---|---|---|---|
Resources |
App\Model\Automation, App\Model\Canvas, App\Model\EmailTemplate, App\Model\Folder, App\Model\Group, App\Model\LegalGround, App\Model\MediaFile, App\Model\Module, App\Model\Purpose, App\Model\Query, App\Model\Role, App\Model\Root, App\Model\Type, App\Model\User, App\Model\View |
none | ActiveResource events | mixed | onUpdateFields, onBeforeActionsBuild, onAfterActionsBuild, and onMentioned are emitted automatically. onButtonClick and onPerformAction are caller-driven patterns. |
Resources |
App\Model\SoopioObject |
optional custom type selector such as client, project, invoice |
ActiveResource events | mixed | This is the resource family for custom implemented object types. It follows the same active-resource event split as the system resources. |
Managers |
App\Model\Automations, App\Model\Canvases, App\Model\EmailTemplates, App\Model\Folders, App\Model\Groups, App\Model\LegalGrounds, App\Model\MediaFiles, App\Model\Modules, App\Model\Properties, App\Model\Purposes, App\Model\Queries, App\Model\Roles, App\Model\Roots, App\Model\Types, App\Model\Views |
none | Manager events | auto-driven | These resources cover create, list, get, update, delete, and duplication-form lifecycle on system object managers. |
Managers |
App\Model\Users |
none | Manager events and User-manager extra events | auto-driven | User management adds registration and password-reset related events. |
Managers |
App\Model\SoopioObjects |
optional custom type selector such as client, project, invoice |
Manager events | auto-driven | This is the manager family for custom object types. |
App pages |
App\Presenters\PresenterCommons |
optional action selector such as actionDefault, actionCreate, actionEdit |
Presenter events | auto-driven | This is the generic presenter-wide resource for “any presenter” hooks. |
App pages |
Concrete presenters: ActiveResourcePresenter, AiAgentsPresenter, ApiAiPresenter, ApiV1Presenter, ApplicationPresenter, AsyncAutomationPresenter, AutomationsPresenter, BatchPresenter, CanvasesPresenter, CloudConsolePresenter, CodeInspectorPresenter, CustomizationPresenter, DataPresenter, EmailTemplatesPresenter, Error4xxPresenter, ErrorPresenter, FilterListsPresenter, FoldersPresenter, GroupsPresenter, HomepagePresenter, IdentityPresenter, ImplementationSyncPresenter, InstallPresenter, LegalGroundsPresenter, LinkPresenter, LinksPresenter, LocalStoragePresenter, MappingPresenter, MediaFilesPresenter, ModulesPresenter, ObjectPresenter, PermissionsPresenter, PropertiesPresenter, PublicPresenter, PurposesPresenter, QueriesPresenter, RolesPresenter, RootsPresenter, SchedulerPresenter, SearchPresenter, SecretsPresenter, StatusPresenter, TagsPresenter, TranslationsPresenter, TypesPresenter, UploadPresenter, UserPresenter, UsersPresenter, VersionsPresenter, ViewsPresenter |
optional action selector from that presenter’s action* methods |
Presenter events | auto-driven | Use a concrete presenter when the hook should be limited to one page controller instead of all presenters. |
App pages |
App\Presenters\ModulePresenter |
optional action selector plus optional module selector such as module_15 |
Presenter events | auto-driven | This is the main presenter resource that supports both action specialization and module specialization. |
App pages |
App\Presenters\WebhookPresenter |
optional webhook selector equal to the request path segment after /webhook/ |
Webhook events | auto-driven | The selector is the webhook ID, not an action name. This is the main exception inside presenter-like resources. |
Forms |
App\Canvas\BaseForm |
none | Form events | caller-driven | Both canvas Form and CustomForm items use this trigger contract. |
Scheduler |
App\Model\Scheduler |
none | Scheduler events | caller-driven | Triggered by scheduled task execution. |
Extras |
App\Automations\CommonEvents |
none | Common caller events | caller-driven | Used when another element explicitly calls the automation as a button, canvas, or automation invocation. |
Extras |
App\Model\Activities |
none | Activity events | auto-driven | Currently focused on type schema lifecycle. |
Extras |
App\Model\ViewControl, App\Model\QueryResultControl |
no pre-known selectors, but runtime emits selectors such as view=<id> and type=<typeId> |
Data-display events | mixed | onDataLoaded is auto-driven when the control loads data. onViewActionAutomationRun is caller-driven from view-action execution. |
These events are provided by the base manager contract and therefore apply to all manager resources unless a more specific manager adds extra events.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onInitialize |
app, callerObject |
onDuplicateFormInit |
app, originalObject, data |
onBeforeCreate |
app, data, isDuplication |
onAfterCreate |
app, data, object, isDuplication |
onBeforeList |
app, query |
onAfterList |
app, query, items, groups |
onBeforeGet |
app, id, internalEventData |
onAfterGet |
app, id, data, internalEventData |
onBeforeGetMany |
app, ids, internalEventData |
onAfterGetMany |
app, items, internalEventData |
onBeforeUpdate |
app, object, data, changes |
onAfterUpdate |
app, object, data, dataFinal, changes |
onBeforeDelete |
app, id |
onBeforeDeleteACLPassed |
app, id |
onAfterDelete |
app, id |
These events exist only on the Users manager.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onRegistrationInitiated |
app, object |
onRegistrationComplete |
app, object |
onPasswordResetInit |
app, object |
These events are exposed by concrete resources such as User, Module, View, Type, and also by SoopioObject.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onBeforeActionsBuild |
app, callerObject, showAll |
onAfterActionsBuild |
app, callerObject, showAll |
onUpdateFields |
app, callerObject, data, initiator |
onButtonClick |
app, callerObject |
onPerformAction |
app, callerObject, args |
onMentioned |
app, target, referrer, referringProperty, referringCommentId |
These events are exposed by presenter resources.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onBeforeStartup |
app, presenter, action |
onAfterStartup |
app, presenter, action |
onBeforeRender |
app, presenter, action |
These events are exposed specifically by WebhookPresenter.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onWebhookReceived |
app, method, headers, content, payload |
onWebhookCompleted |
app, method, headers, content, payload |
These events are exposed by the shared form trigger resource App\Canvas\BaseForm.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onAnchor |
app, form, context |
onReload |
app, form, values, reloadInitiator, context |
onValidate |
app, form, values, context |
onSubmit |
app, form, context |
onSuccess |
app, form, values, httpData, context |
afterSuccess |
app, form, object, context |
onError |
app, form, context |
These events are exposed by App\Model\Scheduler.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onScheduledTaskRun |
app, args |
These events are exposed by App\Automations\CommonEvents.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onCalledByButton |
app, callerObject, parameters |
onCalledFromAutomation |
app, callerObject, parameters |
onCalledFromCanvas |
app, callerObject, parameters |
These events are exposed by App\Model\Activities.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onTypeCreated |
app, callerObject, data |
onTypeUpdated |
app, callerObject, data, dataFinal |
These events are exposed by App\Model\ViewControl and App\Model\QueryResultControl.
| Event | Trigger parameters available through trigger("...") |
|---|---|
onDataLoaded |
app, callerObject |
onViewActionAutomationRun |
app, dataQuery |
SoopioObject and SoopioObjects use selectors for the custom type system name.
Example:
App\Model\SoopioObjectclientonUpdateFieldsThis means “listen to the custom object resource, but only for the client type.”
Presenter resources use selectors based on action method names such as actionDefault, actionCreate, or actionEdit.
This lets you scope presenter lifecycle hooks to one action instead of the whole presenter.
ModulePresenter adds module selectors such as module_15.
This means you can narrow hooks both by:
WebhookPresenter emits the webhook identifier from the request URL, meaning the selector is the path segment that follows /webhook/.
Example:
/webhook/invoice-statusinvoice-statusThis is how one automation can listen only to one webhook entry point while another listens to a different one.
ViewControl and QueryResultControl emit runtime selectors such as:
view=<view id>type=<type id>These selectors are emitted by the runtime even though the builder does not pre-fill them as known selectors.
onDataLoadedThese are discovered from active automations and registered into the request-level automation hook map.
These need to be configured from the caller side as well. The trigger definition on the automation side describes the intended contract, but the caller must still point to that automation.
User or Users.SoopioObject and SoopioObjects only for custom tenant object types.trigger() parameters match reality.