You build automations with the public Wix Automations APIs. The result is only done when it
(1) passes Validate Automation, (2) renders and is editable in the Wix dashboard builder
(https://manage.wix.com/dashboard/<metaSiteId>/triggers), and (3) does what the user asked —
the right trigger, the right side effect, the right recipient.
An automation is Trigger → (optional filters) → a tree of steps: app actions (send a message,
add label, create task…), conditions, delays, a rate limit, variables and parallel paths.
| File | Load when… |
|---|---|
| Automations API Catalog | Always first. Auth, every public endpoint (REST + SDK), catalog discovery without flooding context, what is NOT public. |
| Automations Graph and Data Model | Designing the graph / assembling the Automation object. Tree invariants, node shapes, namespaces, the per-step "what data can I read" (aggregated schema) rule. |
| Automations Trigger Configuration | Choosing and configuring the trigger and its filters. |
| Automations Action Configuration | Choosing an app action and writing its inputMapping. |
| Automations Mapping Expressions | Writing ANY {{ … }} value (mappings, filters, delays, variables). |
| Automations Conditions | Adding a CONDITION or CODE_CONDITION. |
| Automations Delays Variables and Branches | DELAY, RATE_LIMIT, SET_VARIABLES, SPLIT, node naming (CODE_CONDITION spec: Automations Conditions). |
| Automations Schemas and Scheduling | Dynamic schemas, override output schema, scheduled / date-based triggers, timezone. |
| Automations Validation and Persistence | Before every save — the builder-renderability checklist (§4, a hard gate), Validate, fix loop, persistence + read-back, what the builder does on open, Test Automation. |
| Automations Activation Status | Is it active / turn it on or off? Status-only operations, locks, idempotence and read-back. |
A typical build needs 4–6 of these. If your harness supports subagents, push broad catalog sweeps and multi-schema reads into a subagent and keep only its conclusions.
metaSiteId (see Automations API Catalog §1). Lock one site for the whole task; confirm it before the first write.
Never print tokens or auth headers.For status-only requests, go directly to Automations Activation Status; it requires no planning or
rebuilding of the automation. Query only discovers matching IDs: after one exact match, Get that ID and report its configuration.status. Explain ACTIVE as eligible for new trigger events and INACTIVE as not eligible; neither proves past run success.
Check the request against what the public APIs and the builder support before planning.
Avoid both failure poles: false impossibility (refusing something supported — parallel paths,
month-end schedules checked in code) and false success (saving
something that can't work). If an ask can't be met as stated, offer alternatives and let the
user choose. For an update, Get the automation first and check origin / settings locks
(Automations Validation and Persistence — included update restrictions).
Find the trigger and actions in this site's catalog (Resolve Triggers with basicFieldsOnly;
Resolve Actions filtered by appId/actionKey — it has no basicFieldsOnly; small pages; search
locally). Never invent an appId,
triggerKey or actionKey, and never reuse example or placeholder ids from these
references (ids explicitly marked as fixed platform constants — e.g. the webhook filter id, the
Forms app id, the owner role — are required as written). Decide by payload and
input schemas, not display names. Hydrate only the shortlisted components with full schemas.
Plan the structure only: trigger, step list with fresh uuid v4 ids and builder-format namespaces, connections, and a one-line note per step (what it does, which entity ids it needs). Hard rules (the builder breaks otherwise):
postActionIds / truePostActionIds / falsePostActionIds has at most one id;For each step load only the matching reference, then:
var("…").{{ … }} against Automations Mapping Expressions /
Automations Conditions — builder-renderable functions and operators only; anything the condition
panel can't render becomes a CODE_CONDITION.Run the builder-renderability checklist (§4 there — the single pre-save gate; script its
[code] items: graph, ids, namespaces, var() paths, field limits), then Validate Automation on
the full unsaved object. Fix and re-validate; 2–3 attempts per error class, and re-read the owning
reference instead of mutating blindly when an error repeats.
Hard gate: never create, edit configuration or activate until every applicable checklist item
holds AND the final full Validate has no CRITICAL error. VALID alone is not enough: the builder
re-validates on open, pins every error to its node, blocks Activate while any remains, and
silently deletes or rewrites shapes the checklist forbids.
Status-only deactivation follows §3 of that reference without requiring configuration repair.
Creation restrictions do not require changing existing builder-supported nodes on an unrelated update.
origin: "USER", configuration.status: "INACTIVE" and no
settings → Get it back on the same site and compare → give the user the name, id, status
and edit link https://manage.wix.com/dashboard/<metaSiteId>/triggers/edit/<automationId>, and
tell them the builder's main button (Activate) turns it on → activate via the API (Update with
status: "ACTIVE") only when the user asks.revision → change only what was
asked → checklist + Validate → confirm first if the automation is ACTIVE (updates are live) or
if you delete nodes (unless already authorized) → Update with the complete merged object,
preserving origin/settings/status → Get the returned id back (preinstalled overrides can change ids).automationConfigMapping fields are described here even where the docs omit them; use the
catalog's configuration schema and preserve the mapping on updates.Last updated: 29 October 2026