Automations
Automation scenarios: a graph of triggers, conditions, waits and actions; validation, versions, activation, test and trace, run history, statistics, and the contact events API that feeds event triggers (custom events, carts, page visits).
Technická reference je anglicky (stejně jako strojově čitelný dokument OpenAPI). Celou skupinu pro AI agenta načtete z /api/openapi.json?tag=Automations.
Přihlášení: Authorization: Bearer pst_... nebo HTTP Basic (e-mail člena firmy a API klíč).
Operace
| Metoda | Cesta | Popis |
|---|---|---|
| GET | /api/v1/tenants/{tenant}/automations | List automations |
| POST | /api/v1/tenants/{tenant}/automations | Create an automation (draft) |
| POST | /api/v1/tenants/{tenant}/automations/resolve-time | Resolve a time spec to a moment (preview) |
| POST | /api/v1/tenants/{tenant}/automations/tags | Change labels of automations |
| POST | /api/v1/tenants/{tenant}/automations/validate | Validate a graph without saving |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id} | Get an automation with its graph and issues |
| PATCH | /api/v1/tenants/{tenant}/automations/{automation_id} | Update name, description or labels of an automation |
| DELETE | /api/v1/tenants/{tenant}/automations/{automation_id} | Delete an automation that never ran |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/activate | Activate (start) an automation |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/contacts | Add contacts by hand to a running automation |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/copy | Copy an automation as a new draft |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/counts | Live counts per node and output |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/editing | Report that the editor has a scenario open and see who else has it |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/editor | Everything the editor needs in one answer |
| PUT | /api/v1/tenants/{tenant}/automations/{automation_id}/graph | Save the graph of an automation (new version) |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/passes | Contacts that went through a node |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/release | Release the contacts waiting in a node |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/reschedule | Recompute the end of waiting in a node |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/pause | Pause an automation |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/report | Statistics of the e-mail nodes (JSON or CSV) |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/runs | Run history per contact |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/test | Test the scenario on today's data (nothing is sent) |
| POST | /api/v1/tenants/{tenant}/automations/{automation_id}/trace | Trace one contact through the scenario (nothing is sent) |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/versions | List saved versions of the graph |
| GET | /api/v1/tenants/{tenant}/automations/{automation_id}/versions/{version} | Get one saved version of the graph |
| POST | /api/v1/tenants/{tenant}/contact-events | Record an event of a contact (custom event, cart, page visit) |
List automations
GET /api/v1/tenants/{tenant}/automations
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: list_automations
Automations (draft, active, paused) with entered, active and sent counts.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
page | query | integer | ne | Page number, from 1. default 1, min 1 |
pageSize | query | integer | ne | Items per page, 1 to 100. default 25, min 1, max 100 |
q | query | string | ne | Search text. max 200 chars |
shop | query | string | ne | Shop id filter. |
sort | query | string | ne | Sort fields separated by commas, "-" = descending, at most 3 (e.g. name,-id). |
status | query | one of: draft, active, paused | ne | Status. |
tag | query | string | ne | Label filter; repeat for more labels. |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | q, sort, status, tag |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Create an automation (draft)
POST /api/v1/tenants/{tenant}/automations
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: create_automation
Creates an automation as a draft (it sends nothing until activate_automation). graph = {nodes, edges} (get_api_reference Automatizace).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
Tělo požadavku (application/json)
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
name | string | ano | |
shopId | string | ano | |
description | string | ne | |
tags | array of string | ne | |
graph | AutomationGraph | ne | |
transactional | boolean | ne | Transactional mode; switched only while the automation does not run and only for a graph that fits it. |
Odpovědi
- 201 Created:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | description, graph, node, shopId, tags, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Resolve a time spec to a moment (preview)
POST /api/v1/tenants/{tenant}/automations/resolve-time
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: resolve_automation_time
Previews a time spec of a wait or a condition (calendar, interval or event variant): the moment it means now, in UTC and in the account's local time.
The preview of the shared time choice (core/timespec.py): {spec, place?, base?} -> {at (UTC), local (YYYY-MM-DDTHH:MM of the tenant)}. 400 validation spec with params.issues for an invalid spec.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
Tělo požadavku (application/json): Required by the server: spec.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
spec | TimeSpec | ano | |
place | one of: condition, wait | ano |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | base, place, spec |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Change labels of automations
POST /api/v1/tenants/{tenant}/automations/tags
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
Tělo požadavku (application/json): Required by the server: ids.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
ids | array of string | ano | |
add | array of string | ne | |
remove | array of string | ne | |
tags | array of string | ne |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | ids |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Validate a graph without saving
POST /api/v1/tenants/{tenant}/automations/validate
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: validate_automation_graph
Checks a graph without saving: errors and incomplete settings.
{errors, incomplete} of a graph for a shop without saving it (the canvas checks before saving).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
Tělo požadavku (application/json): Required by the server: graph, shopId.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
shopId | string | ano | |
graph | AutomationGraph | ano |
Odpovědi
- 200 OK:
application/jsonAutomationValidation
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Get an automation with its graph and issues
GET /api/v1/tenants/{tenant}/automations/{automation_id}
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: get_automation
One automation with its graph (nodes, edges, version) and the issues that block activation.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Odpovědi
- 200 OK:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Update name, description or labels of an automation
PATCH /api/v1/tenants/{tenant}/automations/{automation_id}
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: update_automation
Changes name, description or tags.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
name | string | ne | |
tags | array of string | ne | |
description | string | ne | |
transactional | boolean | ne | Transactional mode; switched only while the automation does not run and only for a graph that fits it. |
Odpovědi
- 200 OK:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | description, graph, node, shopId, tags, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Delete an automation that never ran
DELETE /api/v1/tenants/{tenant}/automations/{automation_id}
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: delete_automation (přes MCP jen s náhledem a potvrzením)
Deletes an automation nobody entered.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Odpovědi
- 204 No content
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Activate (start) an automation
POST /api/v1/tenants/{tenant}/automations/{automation_id}/activate
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: activate_automation (přes MCP jen s náhledem a potvrzením)
Activates (starts) an automation: from now on it sends its e-mails to contacts who enter.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
object
Odpovědi
- 200 OK:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, test_only, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Add contacts by hand to a running automation
POST /api/v1/tenants/{tenant}/automations/{automation_id}/contacts
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: add_automation_contacts (přes MCP jen s náhledem a potvrzením)
Adds contacts by hand to a running automation whose trigger is manual (Ručně přidané kontakty); those that can be mailed enter at the next tick and get its e-mails. The preview shows how many can enter.
Adds contacts by hand ({contactIds}) to a running scenario whose trigger is "Ručně přidané kontakty" (event manual); they enter at the next tick when they may (mailable, customer exception). {added: n}.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json): Required by the server: contactIds.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
contactIds | array of string | ano |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | status, trigger |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Copy an automation as a new draft
POST /api/v1/tenants/{tenant}/automations/{automation_id}/copy
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: copy_automation
Creates a draft copy of an automation ("<name> - kopie", the same graph; webhook passwords are not copied).
A draft copy "<name> - kopie" (SmartEmailing's Vytvořit kopii); webhook passwords are not copied.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
object
Odpovědi
- 201 Created:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Live counts per node and output
GET /api/v1/tenants/{tenant}/automations/{automation_id}/counts
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: get_automation_counts
Live numbers per node: passed, yes / no, outputs per branch, skipped, failed, left, waiting (contacts waiting there now), holding, queued, sent, opened, clicked; runs per state.
Live numbers per node key: passed, yes, no, skipped, failed, left, outputs per branch, waiting (holding in a storage), queued, sent, opened, clicked; runs per state. Optional from / to (ISO) limit steps and e-mails to a period; waiting is always now.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
from | query | string | ne | ISO start of the period. |
to | query | string | ne | ISO end of the period. |
Odpovědi
- 200 OK:
application/jsonAutomationCounts
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Report that the editor has a scenario open and see who else has it
POST /api/v1/tenants/{tenant}/automations/{automation_id}/editing
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full
The editor reports itself every 30 s (AU-16); {"others": [names]} of the other people who have the scenario open. Body {"leave": true} when the editor closes. An API key or an app has no presence (empty list).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
object
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | leave |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Everything the editor needs in one answer
GET /api/v1/tenants/{tenant}/automations/{automation_id}/editor
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full
Everything the editor opens with in one answer: the detail (as GET .../automations/<id>) and the option catalogs (core/automation_editor.py). A catalog of a module the caller cannot read is empty, as its list endpoint would answer 403.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Odpovědi
- 200 OK:
application/jsonAutomationEditorData
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Save the graph of an automation (new version)
PUT /api/v1/tenants/{tenant}/automations/{automation_id}/graph
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: save_automation_graph (přes MCP jen s náhledem a potvrzením)
Saves the graph of an automation (several triggers allowed). baseVersion = the version you read. A running (active) automation is saved only after the confirm step (its contacts go on by the new graph); a node where contacts wait cannot be removed. Every save keeps a version (list_automation_versions).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json): Required by the server: baseVersion, graph.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
confirmRunning | boolean | ne | |
baseVersion | number | ano | |
graph | AutomationGraph | ano |
Odpovědi
- 200 OK:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | baseVersion, confirmRunning, graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Contacts that went through a node
GET /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/passes
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: list_node_passes
Contacts that went through a node, newest first, with the outcome and branch.
Contacts that went through a node (SmartEmailing's "Kontakty, které prošly uzlem"): ?branch, ?q (e-mail), ?from, ?to; newest first.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
key | path | string | ano | Node key (id of the node in the graph). |
branch | query | string | ne | Output (next, yes, no, v1 to v10). |
from | query | string | ne | ISO start. |
page | query | integer | ne | Page number, from 1. default 1, min 1 |
pageSize | query | integer | ne | Items per page, 1 to 100. default 25, min 1, max 100 |
q | query | string | ne | Search text. max 200 chars |
to | query | string | ne | ISO end. |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | branch, q |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Release the contacts waiting in a node
POST /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/release
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: release_waiting_contacts (přes MCP jen s náhledem a potvrzením)
Lets every contact waiting in a wait (or a condition waiting for its rules) go on now; they get the next e-mails of the scenario. The preview shows how many wait there.
SmartEmailing's "Uvolnit všechny čekající kontakty" of a wait or a waiting condition: {released: n}.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
key | path | string | ano | Node key (id of the node in the graph). |
Tělo požadavku (application/json)
object
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Recompute the end of waiting in a node
POST /api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/reschedule
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: reschedule_waiting_contacts (přes MCP jen s náhledem a potvrzením)
The contacts waiting in a wait get their end computed again from the node's current settings (after the wait was changed). The preview shows how many wait there.
SmartEmailing's "Aktualizovat dobu čekání": the waiting contacts get the node's current wait: {rescheduled}.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
key | path | string | ano | Node key (id of the node in the graph). |
Tělo požadavku (application/json)
object
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Pause an automation
POST /api/v1/tenants/{tenant}/automations/{automation_id}/pause
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: pause_automation
Pauses an active automation.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
object
Odpovědi
- 200 OK:
application/jsonAutomationDetail
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | graph, node, shopId, transactional |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 409 | conflict | confirm, name, runs, status, version, waiting |
| 429 | 429 rate_limited: wait Retry-After seconds. | |
| 503 | unavailable | data_key |
Statistics of the e-mail nodes (JSON or CSV)
GET /api/v1/tenants/{tenant}/automations/{automation_id}/report
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: get_automation_report
Statistics of the scenario for a period: per e-mail node (sent, opens, clicks, conversions), the chosen nodes summed, webhook calls.
Statistics of the scenario: ?from, ?to (local days YYYY-MM-DD, both included), ?nodes=a,b (selected nodes summed), ?format=csv for the table as a file.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
format | query | one of: json, csv | ne | csv = a CSV file (UTF-8 with BOM, semicolons). |
from | query | string | ne | First local day YYYY-MM-DD. |
nodes | query | string | ne | Node keys to sum, comma separated. |
to | query | string | ne | Last local day YYYY-MM-DD. |
Odpovědi
- 200 JSON, or CSV with format=csv:
application/jsonAutomationReport,text/csvstring
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Run history per contact
GET /api/v1/tenants/{tenant}/automations/{automation_id}/runs
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: list_automation_runs
Runs of contacts through the automation with their steps (active = still in it, with the node it waits in and until when).
Run history, newest first, each with its steps; contactId narrows it to one contact of the tenant.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
contactId | query | string | ne | Contact id. |
page | query | integer | ne | Page number, from 1. default 1, min 1 |
pageSize | query | integer | ne | Items per page, 1 to 100. default 25, min 1, max 100 |
status | query | one of: active, completed, exited | ne | Status. |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | contactId, status |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Test the scenario on today's data (nothing is sent)
POST /api/v1/tenants/{tenant}/automations/{automation_id}/test
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: test_automation
Dry run of the scenario over today's data: how many contacts would reach, wait in and leave each node. Nothing is saved or sent.
Test of the scenario (AU-05): expected contacts per node of one pass over the current data, nothing written or sent. Body (optional): graph = the editor's graph (default the stored one), days = the replayed window of event triggers (0 to 90, default 0: a Při události trigger lets nobody in, as SmartEmailing's test). A graph with errors or incomplete settings is 400 validation graph with params.issues (as SmartEmailing: "Scénář není možné ... testovat, dokud neopravíte chyby v nastavení").
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
graph | AutomationGraph | ne | The editor's graph; the stored graph when omitted. |
days | number | ne | 1 to AUTOMATION_TEST_MAX_DAYS, default AUTOMATION_TEST_MAX_DAYS. |
Odpovědi
- 200 OK:
application/jsonAutomationTest
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | days, graph |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Trace one contact through the scenario (nothing is sent)
POST /api/v1/tenants/{tenant}/automations/{automation_id}/trace
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: trace_automation
Simulation of one contact: the way it would take through the scenario step by step (conditions, waits, e-mails) with the reasons. Nothing is saved or sent.
The way of one contact through the scenario (core/automation_sim.py trace): body contactId or email, graph (default the stored one), triggerKey (default the first trigger), days (replayed window of an event trigger).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Tělo požadavku (application/json)
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
contactId | string | ne | |
email | string | ne | |
graph | AutomationGraph | ne | |
triggerKey | string | ne | |
days | number | ne |
Odpovědi
- 200 OK:
application/jsonAutomationTrace
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | contact, days, graph, triggerKey |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
List saved versions of the graph
GET /api/v1/tenants/{tenant}/automations/{automation_id}/versions
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: list_automation_versions
Saved versions of the graph, newest first (version, status, saved at and by, node count).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Get one saved version of the graph
GET /api/v1/tenants/{tenant}/automations/{automation_id}/versions/{version}
Oprávnění: modul campaigns, úroveň read; klíč s přístupem read nebo full · Nástroj MCP: get_automation_version
The graph of one saved version (to compare or to save it again with save_automation_graph).
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
automation_id | path | string | ano | Id of the automation (string of digits). |
version | path | integer | ano | Version number. |
Odpovědi
- 200 OK:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | |
| 429 | 429 rate_limited: wait Retry-After seconds. |
Record an event of a contact (custom event, cart, page visit)
POST /api/v1/tenants/{tenant}/contact-events
Oprávnění: modul campaigns, úroveň full; klíč s přístupem full · Nástroj MCP: record_contact_event (přes MCP jen s náhledem a potvrzením)
Records an event of an existing contact (never creates one) for the event triggers of automations: type custom {name, data}, cart {shopId, items, currency, total} or visit {shopId, url, visitType, attributes}. At most 60 events of one contact in 10 minutes.
An event of an existing contact (contactId or email) for the event triggers: type custom {name, data}, cart {shopId, items, currency, total} or visit {shopId, url, visitType, attributes}. Never creates a contact. 201 {id}; 429 rate_limited after contact_events.API_PER_CONTACT events of one contact in API_WINDOW_S.
Parametry
| Název | Kde | Typ | Povinné | Popis |
|---|---|---|---|---|
tenant | path | string (uuid) | ano | Public id of the company (tenant), a UUID: GET /api/v3/account-info answers it as data.guid; the app shows it on the API keys page. |
Tělo požadavku (application/json)
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | one of: custom, cart, visit | ano | Event type. |
contactId | string | ne | Contact id (or email). |
email | string | ne | Contact address. |
shopId | string | ne | Shop id (required for cart). |
name | string | ne | Custom event name: a-z, 0-9 and -, up to 50. |
data | object | ne | Custom event data. |
items | array of object | ne | Cart items. |
currency | string | ne | Cart currency. |
total | string | ne | Cart total. |
url | string | ne | Visited URL. |
visitType | one of: home, article, cart, product, category, search, order_done, other | ne | Visit type. |
attributes | object | ne | Visit attributes. |
Odpovědi
- 201 Created:
application/jsonobject
Chyby
| Stav | Kód | Hodnoty message |
|---|---|---|
| 400 | validation | type |
| 401 | 401 unauthorized: missing, unknown, revoked, expired or idle API key. | |
| 403 | 403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack. | |
| 404 | not_found | contact |
| 429 | rate_limited | contact |
Schémata
Automation
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | |
name | string | ano | |
shopId | string | ano | |
status | AutomationStatus | ano | |
version | number | ano | |
activeSince | string or null | ano | Since when it runs without a pause; null unless active. |
firstActivatedAt | string or null | ano | |
pausedReason | one of: manual, bounce_rate, complaint_rate, unsubscribe_rate, template_error, null | ano | |
transactional | boolean | ano | Transactional mode (contract communication such as invoice reminders, migration 0351): started only by custom events, e-mails also to contacts without newsletter consent, never to a blocked address, no unsubscribe link. |
tags | array of string | ano | |
createdAt | string | ano | |
updatedAt | string | ano | |
stats | AutomationStats | ano |
AutomationCounts
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
nodes | map of AutomationNodeCounts | ano | |
runs | object | ano |
AutomationDetail
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
description | string | ano | |
graph | AutomationGraph | ano | |
issues | array of AutomationIssue | ano | Everything that keeps it from running (incomplete settings, lint, unverified sender). |
triggers | map of object | ne | Per trigger node key: a one-off trigger that already took its contacts (done) and the next scheduled pass. |
nodeMeta | map of AutomationNodeMeta | ne | Per node key (AU-11): SE's Poslední editace and Poznámka aktualizována / Aktualizováno uživatelem. |
id | string | ano | |
name | string | ano | |
shopId | string | ano | |
status | AutomationStatus | ano | |
version | number | ano | |
activeSince | string or null | ano | Since when it runs without a pause; null unless active. |
firstActivatedAt | string or null | ano | |
pausedReason | one of: manual, bounce_rate, complaint_rate, unsubscribe_rate, template_error, null | ano | |
transactional | boolean | ano | Transactional mode (contract communication such as invoice reminders, migration 0351): started only by custom events, e-mails also to contacts without newsletter consent, never to a blocked address, no unsubscribe link. |
tags | array of string | ano | |
createdAt | string | ano | |
updatedAt | string | ano | |
stats | AutomationStats | ano |
AutomationEdge
A connection from an output (branch) of source to target. Every output has at most one edge; no edge into a trigger or goal; no cycles.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
source | string | ano | Node key. |
target | string | ano | Node key. |
branch | string | ne | next (one output), yes / no (condition), v1..v10 (ab_test). Default next. |
id | string | ne | Ignored (canvas only). |
AutomationEditorData
GET /tenants/{t}/automations/{id}/editor: everything the editor opens with, in one answer. A catalog of a module the user cannot read (its list endpoint would answer 403) is empty.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
automation | AutomationDetail | ano | |
lists | array of AutomationEditorList | ano | |
templates | array of AutomationEditorOption | ano | Active templates, newest change first, then archived ones this automation's e-mail nodes use (archived). |
senders | array of Sender | ano | |
purposes | array of AutomationEditorOption | ano | |
campaigns | array of AutomationEditorOption | ano | |
customFields | array of object | ano | |
segments | array of AutomationEditorOption | ano | Segments of the automation's shop only. |
automations | array of AutomationEditorOption | ano | Every automation of the tenant, this one included. |
emailNodes | array of AutomationEmailNode | ano | E-mail nodes of the other automations. |
couponStacks | array of AutomationEditorOption | ano | |
feeds | array of AutomationEditorOption | ano | |
forms | array of AutomationEditorOption | ano | |
unsubscribePages | array of AutomationEditorOption | ne | Active unsubscribe pages (Pokročilé of an e-mail node, AA-04). |
AutomationEditorList
A list as the editor's pickers and checks need it (no member counts).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
name | string | ano | |
shopId | string or null | ano | null = list of the whole tenant, not bound to one e-shop. |
tags | array of string | ano | Labels (štítky), at most 20. |
id | string | ano | |
manualMembers | boolean | ano | False for lists filled by an e-shop connection: members are not added or removed by hand (409). |
AutomationEditorOption
An option of an editor picker: id and name only.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | |
name | string | ano | |
archived | boolean | ne | Templates only: an archived template an e-mail node of this automation still uses (kept so the editor never reports it missing; pickers offer it only to the node that has it). |
subject | string | ne | Templates only: the subject the e-mail node shows until it has its own (AA-01). |
linkParams | array of object | ne | Templates only: the e-mail's own UTM parameters, shown read-only in the node's Tracking (AA-03). |
AutomationEmailNode
An e-mail node of another automation (events and conditions may name it: "e-mailový uzel / název scénáře").
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
automationId | string | ano | |
automationName | string | ano | |
nodeKey | string | ano | |
nodeName | string | ano |
AutomationGraph
The graph: at most 300 nodes and 600 edges, one or more triggers, acyclic. An output without an edge = the contact leaves.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
nodes | array of AutomationNode | ano | Nodes. max 300 items |
edges | array of AutomationEdge | ne | Edges. max 600 items |
AutomationInput
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
name | string | ano | |
shopId | string | ano | |
description | string | ne | |
tags | array of string | ne | |
graph | AutomationGraph | ne | |
transactional | boolean | ne | Transactional mode; switched only while the automation does not run and only for a graph that fits it. |
AutomationIssue
A problem of a graph. Errors refuse the save (400 validation graph, params.issues); incomplete settings are saved but block activation and tests (detail.issues).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
node | string or null | ano | Node key, null for the whole graph. |
field | string | ano | Config field path (e.g. definition.0.listId), "" for the node. |
code | one of: required, invalid, unavailable, not_found, locked, empty, lint, unverified, unreachable, too_short, too_long, duplicate, node, cycle, self_trigger, not_whitelisted, reserved, calendar, transactional_node, transactional_trigger, transactional_content | ano | required, invalid, unavailable, not_found, locked, empty, lint, unverified, unreachable, too_short, too_long, duplicate, node, cycle, self_trigger, not_whitelisted, reserved, calendar; transactional automations also transactional_node (a node type the mode does not allow), transactional_trigger (a trigger other than a custom event) and transactional_content (a template with an unsubscribe link, the newsletter footer or a coupon). |
AutomationNode
One node of an automation graph; type selects the settings in config. Unknown config keys are dropped when saving.
AutomationNode_trigger_now or AutomationNode_trigger_scheduled or AutomationNode_trigger_repeat or AutomationNode_trigger_event or AutomationNode_trigger_date or AutomationNode_trigger_reorder or AutomationNode_condition or AutomationNode_wait or AutomationNode_ab_test or AutomationNode_holding or AutomationNode_goal or AutomationNode_send_email or AutomationNode_send_sms or AutomationNode_list_change or AutomationNode_send_viber or AutomationNode_webhook or AutomationNode_set_field or AutomationNode_reset or AutomationNode_fb_audience or AutomationNode_sklik_retargeting or AutomationNode_motionlab_adina or AutomationNode_whatsapp or AutomationNode_fire_event or AutomationNode_notify or AutomationNode_goto or AutomationNode_end
AutomationNodeCounts
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
passed | number | ano | |
yes | number | ano | |
no | number | ano | |
skipped | number | ano | |
failed | number | ne | Actions that could not be carried out (Monitoring chybových akcí). |
waiting | number | ano | |
holding | number | ne | Contacts in a storage node now (Odkladiště). |
left | number | ne | Contacts that left the scenario at this node. |
outputs | object | ne | Contacts per output. |
queued | number | ano | |
sent | number | ano | |
opened | number | ano | |
clicked | number | ano |
AutomationNodeMeta
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
updatedAt | string or null | ano | |
updatedBy | string | ano | |
noteUpdatedAt | string or null | ano | |
noteUpdatedBy | string | ano |
AutomationNodeTest
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
reached | number | ano | Contacts that came to the node. |
waiting | number | ano | Contacts that stay waiting in it (a wait not over yet, a condition still waiting for its rules). |
left | number | ano | Contacts that leave the scenario here (the end node, an output without an edge). |
outputs | object | ano | Contacts per output of the node type: next, or yes and no. |
AutomationNodeType
one of: notify, trigger_now, trigger_scheduled, trigger_repeat, trigger_event, trigger_date, trigger_reorder, condition, wait, ab_test, holding, goal, send_email, send_sms, list_change, send_viber, webhook, set_field, reset, fb_audience, sklik_retargeting, motionlab_adina, whatsapp, fire_event, goto, end
AutomationNode_ab_test
Splits contacts randomly (stable per run) into 2 to 10 variants; outputs v1..vN.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | ab_test | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Splits contacts randomly (stable per run) into 2 to 10 variants; outputs v1..vN. |
{
"id": "ab-test-1",
"type": "ab_test",
"config": {
"variants": [
{
"key": "v1",
"share": 50
},
{
"key": "v2",
"share": 50
}
]
}
}AutomationNode_condition
Splits the run: output yes when the definition holds, else no. With waitUntilMet the contact waits until it holds (then yes) or the time runs out (then no); checked every 20 minutes to once a day.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | condition | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Splits the run: output yes when the definition holds, else no. With waitUntilMet the contact waits until it holds (then yes) or the time runs out (then no); checked every 20 minutes to once a day. |
{
"id": "condition-1",
"type": "condition",
"config": {
"definition": {
"type": "group",
"match": "all",
"rules": [
{
"type": "email_activity",
"operator": "opened",
"nodeId": null
}
]
}
}
}AutomationNode_end
Ends the run (the contact leaves).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | end | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Ends the run (the contact leaves). |
{
"id": "end-1",
"type": "end",
"config": {}
}AutomationNode_fb_audience
Not available yet: needs meta. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | fb_audience | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs meta. Shown in the palette, saving reports "unavailable". |
AutomationNode_fire_event
Fires a custom event of the contact that event triggers (custom) of OTHER automations listen to.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | fire_event | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Fires a custom event of the contact that event triggers (custom) of OTHER automations listen to. |
{
"id": "fire-event-1",
"type": "fire_event",
"config": {
"name": "vip-reached",
"data": {
"level": "gold"
}
}
}AutomationNode_goal
Goal of the scenario: before every step the goals are checked; a contact who meets one leaves the scenario wherever it is. No edges in or out.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | goal | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Goal of the scenario: before every step the goals are checked; a contact who meets one leaves the scenario wherever it is. No edges in or out. |
{
"id": "goal-1",
"type": "goal",
"config": {
"definition": {
"type": "group",
"match": "all",
"rules": [
{
"type": "ordered_since_entry",
"operator": "yes",
"shopId": null
}
]
}
}
}AutomationNode_goto
Jumps to another node of this graph (not a trigger or goal; the jump counts as an edge for cycles, so only forward).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | goto | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Jumps to another node of this graph (not a trigger or goal; the jump counts as an edge for cycles, so only forward). |
AutomationNode_holding
Storage (Odkladiště): contacts wait here until an edge out of the node is added (then they continue) or 90 days pass.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | holding | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Storage (Odkladiště): contacts wait here until an edge out of the node is added (then they continue) or 90 days pass. |
{
"id": "holding-1",
"type": "holding",
"config": {}
}AutomationNode_list_change
Sets the contact's state in manual lists (confirmed adds, unsubscribed and removed take out). Lists bound to an e-shop cannot be changed.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | list_change | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Sets the contact's state in manual lists (confirmed adds, unsubscribed and removed take out). Lists bound to an e-shop cannot be changed. |
{
"id": "list-change-1",
"type": "list_change",
"config": {
"status": "confirmed",
"listIds": [
"101"
]
}
}AutomationNode_motionlab_adina
Not available yet: needs motionlab. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | motionlab_adina | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs motionlab. Shown in the palette, saving reports "unavailable". |
AutomationNode_notify
Notifies the team in the app (notification centre).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | notify | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Notifies the team in the app (notification centre). |
{
"id": "notify-1",
"type": "notify",
"config": {
"message": "Zákazník dosáhl VIP úrovně",
"important": false
}
}AutomationNode_reset
Ends the contact's other active runs of this scenario that wait in nodes after this one (SmartEmailing Reset).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | reset | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Ends the contact's other active runs of this scenario that wait in nodes after this one (SmartEmailing Reset). |
{
"id": "reset-1",
"type": "reset",
"config": {}
}AutomationNode_send_email
Sends an e-mail from a template (once per node and contact within the company's window). Only to mailable contacts, rechecked right before sending.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | send_email | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Sends an e-mail from a template (once per node and contact within the company's window). Only to mailable contacts, rechecked right before sending. |
{
"id": "send-email-1",
"type": "send_email",
"config": {
"templateId": "301",
"subject": "Zapomněli jste něco v košíku",
"trackOpens": true,
"trackClicks": true
}
}AutomationNode_send_sms
Not available yet: needs sms. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | send_sms | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs sms. Shown in the palette, saving reports "unavailable". |
AutomationNode_send_viber
Not available yet: needs viber. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | send_viber | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs viber. Shown in the palette, saving reports "unavailable". |
AutomationNode_set_field
Sets or clears a contact field. valueKind fixed (a value of the field's type), relative (dates: a time spec from now) or template (text fields: merge tags).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | set_field | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Sets or clears a contact field. valueKind fixed (a value of the field's type), relative (dates: a time spec from now) or template (text fields: merge tags). |
{
"id": "set-field-1",
"type": "set_field",
"config": {
"field": "cf:62",
"action": "set",
"valueKind": "fixed",
"value": "VIP"
}
}AutomationNode_sklik_retargeting
Not available yet: needs sklik. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | sklik_retargeting | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs sklik. Shown in the palette, saving reports "unavailable". |
AutomationNode_trigger_date
Starts once a day at at for contacts whose date is today: name day, birthday, a date custom field (shifted by offsetDays), fixed holidays (every contact of the shop), or the first completed order exactly days ago.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_date | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts once a day at at for contacts whose date is today: name day, birthday, a date custom field (shifted by offsetDays), fixed holidays (every contact of the shop), or the first completed order exactly days ago. |
{
"id": "trigger-date-1",
"type": "trigger_date",
"config": {
"kind": "name_day",
"at": "08:00",
"reentry": "parallel"
}
}AutomationNode_trigger_event
Starts when an event happens to a contact (SmartEmailing "Při události"). Only events after the activation count. Event specific settings: cart_updated: The contact's cart changed (POST /contact-events type cart). shopId narrows the shop. contact_created: A new contact of the automation's shop. order_created: A new order (shopId: shop of the order, default the automation's shop). order_changed: An order changed state (state narrows to one state). list_added: The contact was added to listId. contact_updated: A profile field changed (fieldFilter narrows to one field and its values before / after). action_failed: An action of an automation failed (failureType, failureNode narrow it). list_status_changed: The contact's state in listId changed to status. email_sent: An e-mail of emailNode (a send_email node of ANOTHER automation) was sent. page_visit: A web tracking visit (POST /contact-events type visit): url, urlOperator, visitType. link_clicked: The contact clicked a link (link, compareParams) in an e-mail of emailNode (another automation). engagement_changed: The contact's engagement level changed. custom: A custom event named customEvent (POST /contact-events type custom, or a fire_event node of another automation). form_submitted: A form was submitted and confirmed (formId narrows to one form). blacklisted: The contact was blacklisted. order_completed: An order was completed (paid, shipped or delivered). subscribed: The contact subscribed (sources narrows the source; imports only when listed). manual: Contacts added by hand: POST /automations/{id}/contacts.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_event | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts when an event happens to a contact (SmartEmailing "Při události"). Only events after the activation count. Event specific settings: cart_updated: The contact's cart changed (POST /contact-events type cart). shopId narrows the shop. contact_created: A new contact of the automation's shop. order_created: A new order (shopId: shop of the order, default the automation's shop). order_changed: An order changed state (state narrows to one state). list_added: The contact was added to listId. contact_updated: A profile field changed (fieldFilter narrows to one field and its values before / after). action_failed: An action of an automation failed (failureType, failureNode narrow it). list_status_changed: The contact's state in listId changed to status. email_sent: An e-mail of emailNode (a send_email node of ANOTHER automation) was sent. page_visit: A web tracking visit (POST /contact-events type visit): url, urlOperator, visitType. link_clicked: The contact clicked a link (link, compareParams) in an e-mail of emailNode (another automation). engagement_changed: The contact's engagement level changed. custom: A custom event named customEvent (POST /contact-events type custom, or a fire_event node of another automation). form_submitted: A form was submitted and confirmed (formId narrows to one form). blacklisted: The contact was blacklisted. order_completed: An order was completed (paid, shipped or delivered). subscribed: The contact subscribed (sources narrows the source; imports only when listed). manual: Contacts added by hand: POST /automations/{id}/contacts. |
{
"id": "trigger-event-1",
"type": "trigger_event",
"config": {
"event": "cart_updated",
"shopId": "1",
"reentry": "restart"
}
}AutomationNode_trigger_now
Starts once, right at the activation, with the contacts of the shop matching the filter (SmartEmailing "Hned teď").
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_now | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts once, right at the activation, with the contacts of the shop matching the filter (SmartEmailing "Hned teď"). |
{
"id": "trigger-now-1",
"type": "trigger_now",
"config": {
"reentry": "once"
}
}AutomationNode_trigger_reorder
Starts once a day at at for customers whose last completed order is older than their usual interval between orders ("buy again"): the average gap of their order days, defaultDays with one order day, clamped to minDays..maxDays, plus graceDays.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_reorder | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts once a day at at for customers whose last completed order is older than their usual interval between orders ("buy again"): the average gap of their order days, defaultDays with one order day, clamped to minDays..maxDays, plus graceDays. |
{
"id": "trigger-reorder-1",
"type": "trigger_reorder",
"config": {
"at": "10:00",
"defaultDays": 30,
"minDays": 14,
"maxDays": 120,
"graceDays": 3,
"reentry": "parallel"
}
}AutomationNode_trigger_repeat
Starts repeatedly every every from startAt (default the activation) until stopAt, with the contacts matching the filter (SmartEmailing "Opakovat").
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_repeat | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts repeatedly every every from startAt (default the activation) until stopAt, with the contacts matching the filter (SmartEmailing "Opakovat"). |
{
"id": "trigger-repeat-1",
"type": "trigger_repeat",
"config": {
"every": {
"value": 1,
"unit": "days"
},
"startAt": "2026-11-01T08:00",
"reentry": "parallel",
"filter": {
"type": "group",
"match": "all",
"rules": [
{
"type": "contact_anniversary",
"field": "nameDay",
"relation": "now"
}
]
}
}
}AutomationNode_trigger_scheduled
Starts once at a local date and time (SmartEmailing "V plánovaný čas").
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | trigger_scheduled | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Starts once at a local date and time (SmartEmailing "V plánovaný čas"). |
{
"id": "trigger-scheduled-1",
"type": "trigger_scheduled",
"config": {
"at": "2026-12-01T09:00",
"reentry": "once"
}
}AutomationNode_wait
Waits. mode time: until the time spec (relative to the arrival at the node, or to the entry with countFrom scenario); preferred: until the contact's usual reading time (most frequent quarter hour of opens, else no wait); spread: releases the contacts evenly over the period; duration: value units; time_of_day: the next HH:MM; weekday: the next listed weekday at time; date: a local date and time. At most 10 years.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | wait | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Waits. mode time: until the time spec (relative to the arrival at the node, or to the entry with countFrom scenario); preferred: until the contact's usual reading time (most frequent quarter hour of opens, else no wait); spread: releases the contacts evenly over the period; duration: value units; time_of_day: the next HH:MM; weekday: the next listed weekday at time; date: a local date and time. At most 10 years. |
{
"id": "wait-1",
"type": "wait",
"config": {
"mode": "duration",
"value": 2,
"unit": "days"
}
}AutomationNode_webhook
Calls a URL (queued, retried 5 times 5 minutes apart on a non-2xx answer, then an action failure "other"). Merge tags work in url (percent-encoded), body (JSON-escaped when the Content-Type is JSON; POST defaults to application/json) and header values. Only public addresses, no redirects.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | webhook | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Calls a URL (queued, retried 5 times 5 minutes apart on a non-2xx answer, then an action failure "other"). Merge tags work in url (percent-encoded), body (JSON-escaped when the Content-Type is JSON; POST defaults to application/json) and header values. Only public addresses, no redirects. |
{
"id": "webhook-1",
"type": "webhook",
"config": {
"url": "https://crm.example.cz/hooks/postarna",
"method": "POST",
"body": "{\"email\": \"{{df_emailaddress}}\", \"event\": \"cart\"}",
"headers": [
{
"name": "X-Source",
"value": "postarna"
}
]
}
}AutomationNode_whatsapp
Not available yet: needs whatsapp. Shown in the palette, saving reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | Node key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$ |
type | whatsapp | ano | |
name | string | ne | Label on the canvas, at most 100. |
note | string | ne | Note, at most 1 000. |
position | object | ne | Canvas position. |
config | object | ne | Not available yet: needs whatsapp. Shown in the palette, saving reports "unavailable". |
AutomationPass
A contact that went through a node (SmartEmailing's "Kontakty, které prošly uzlem").
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
at | string | ano | |
contact | object | ano | |
outcome | string | ano | |
branch | one of: next, yes, no, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, null | ano | |
nextNode | string or null | ano |
AutomationReport
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
nodes | array of AutomationReportRow | ano | |
selected | EmailMetrics | ano | |
selectedKeys | array of string | ano | |
webhooks | array of object | ano |
AutomationReportRow
Statistics of a scenario: one row per e-mail node (metrics as the e-mail statistics), conversions per currency.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
nodeKey | string | ano | |
name | string | ano | |
metrics | EmailMetrics | ano | |
conversions | array of object | ano | |
conversionRate | number | ano |
AutomationRun
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | |
contact | object | ano | |
status | AutomationRunStatus | ano | |
node | string or null | ano | |
entryKey | string | ano | |
enteredAt | string | ano | |
dueAt | string or null | ano | |
finishedAt | string or null | ano | |
exitReason | string or null | ano | |
steps | array of object | ano | The real steps (automation_steps): reason = why a step was skipped or failed, messageId = the e-mail it queued. |
trigger | string or null | ne | The trigger node the run came in through. |
AutomationRunStatus
one of: active, completed, exited
AutomationStats
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
entered | number | ano | |
active | number | ano | |
sent | number | ano |
AutomationStatus
one of: active, draft, paused
AutomationStepOutcome
one of: expired, queued, failed, skipped, goal, reset, end, yes, no, entered, passed, variant, released, jumped
AutomationTest
POST /automations/{id}/test: one dry pass over the current data; nothing is written or sent.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
scope | AutomationTestScope | ano | |
days | number or null | ano | Replayed window of an event trigger, null for the other scopes. |
since | string or null | ano | Start of the replayed window (ISO), null for the other scopes. |
testedAt | string | ano | |
entered | number | ano | |
waiting | number | ano | |
left | number | ano | |
nodes | map of AutomationNodeTest | ano | Every node of the tested graph by its key. |
AutomationTestInput
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
graph | AutomationGraph | ne | The editor's graph; the stored graph when omitted. |
days | number | ne | 1 to AUTOMATION_TEST_MAX_DAYS, default AUTOMATION_TEST_MAX_DAYS. |
AutomationTestScope
one of: contacts, events, today, mixed
AutomationTrace
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
contactId | string | ano | |
email | string | ano | |
mayEnter | boolean | ano | |
reasons | array of string | ano | Why the contact may not enter: status, suppressed, weak_consent, shop, exception_expired. |
trigger | string | ano | |
offered | boolean | ano | |
eventAt | string or null | ano | |
steps | array of AutomationTraceStep | ano | |
result | one of: waiting, left, holding, goal, end, limit | ano |
AutomationTraceInput
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
contactId | string | ne | |
email | string | ne | |
graph | AutomationGraph | ne | |
triggerKey | string | ne | |
days | number | ne |
AutomationTraceStep
POST /automations/{id}/trace: the way of one contact through the scenario, nothing written or sent.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
node | string | ano | |
type | AutomationNodeType | ano | |
outcome | string | ano | |
branch | one of: next, yes, no, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, null | ano | |
at | string | ano | |
note | object or null | ano |
AutomationValidation
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
errors | array of AutomationIssue | ano | |
incomplete | array of AutomationIssue | ano |
AutomationVersion
A saved version of a graph (every save keeps one).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
version | number | ano | |
status | AutomationStatus | ano | |
savedAt | string | ano | |
savedBy | string | ano | |
nodes | number | ano | |
current | boolean | ano |
ConditionGroup
The definition of a condition, goal or trigger filter: the same tree as a segment, whose rules may also be automation conditions. Every rule may carry negate. Rules with a period take {from, to} time specs.
ConditionRule_ab_test_significant
The difference between nodes A and B is significant (95 %, two-proportion z-test).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ab_test_significant | ano | |
metric | one of: open_rate, click_rate | ano | Metric. |
nodeA | string | ano | send_email node key. |
nodeB | string | ano | Another send_email node key. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
ConditionRule_ab_test_winner
Node A beats node B (two send_email nodes of this graph) in open or click rate.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ab_test_winner | ano | |
metric | one of: open_rate, click_rate | ano | Metric. |
nodeA | string | ano | send_email node key. |
nodeB | string | ano | Another send_email node key. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
ConditionRule_cart_items
Old name of cart_items_count (still accepted).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | cart_items | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number. |
shopId | string or null | ne | |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "cart_items",
"operator": "gt",
"value": 0
}ConditionRule_cart_items_count
Items in the contact's cart (a cart not changed since an order counts as empty).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | cart_items_count | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number. |
shopId | string or null | ne | Shop, null = any cart. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "cart_items_count",
"operator": "gt",
"value": 0,
"shopId": "1"
}ConditionRule_contact_anniversary
Today is (or is offset from) the contact's birthday, name day or a date custom field. nameDay: the contact's own name day, else the calendar of the first name (calendar auto = Slovak for language sk, else by the shop's language).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_anniversary | ano | |
field | string | ano | birthday, nameDay or cf:<id> of a date field. |
calendar | one of: auto, cz, sk | ne | nameDay only. |
relation | one of: now, offset | ne | now = today; offset = shifted. default now |
offset | object | ne | With relation offset, at least 15 minutes. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "contact_anniversary",
"field": "nameDay",
"calendar": "auto",
"relation": "now"
}ConditionRule_contact_field
A contact field (system field or cf:<id>) compared with a value. Text: eq, filled, empty, gt, gte, lt, lte, starts, contains; dates: date_eq, date_filled, date_empty, date_after, date_from, date_before, date_until with a time spec value; numbers: eq, gt, gte, lt, lte, filled, empty; gender: eq (f / m); checkbox: checked, unchecked; choice: eq_option; multi: has_option.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_field | ano | |
field | string | ano | System field (affiliateId, domain, email, language, firstName, mobile, city, birthday, vocativeFirstName, salutation, salutationFormal, vocativeLastName, gender, note, lastName, postalCode, company, nameDay, phone, titleBefore, titleAfter, street, createdAt, country, companyId) or cf:<id>. |
operator | string | ano | Operator for the field kind. |
value | any | ne | Text, number, f / m, an option, or a time spec for dates. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "contact_field",
"field": "city",
"operator": "eq",
"value": "Brno"
}ConditionRule_contact_in_any_list
Contact is in any list in a state.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_in_any_list | ano | |
state | one of: confirmed, unsubscribed | ne | State, default confirmed. default confirmed |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
{
"type": "contact_in_any_list"
}ConditionRule_contact_in_automation
Contact is in an automation (another active run of it). automationId null = this automation (not allowed in a trigger filter).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_in_automation | ano | |
automationId | string or null | ne | |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "contact_in_automation",
"automationId": "201"
}ConditionRule_contact_in_list
Contact is in a list in a state.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_in_list | ano | |
listId | string | ano | List id. |
state | one of: confirmed, unsubscribed | ne | State, default confirmed. default confirmed |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
{
"type": "contact_in_list",
"listId": "101",
"state": "confirmed"
}ConditionRule_contact_in_list_label
Contact is in a list with this label.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_in_list_label | ano | |
label | string | ano | Label, at most 40. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
{
"type": "contact_in_list_label",
"label": "newsletter"
}ConditionRule_contact_origin
Contact came from a source.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_origin | ano | |
origin | one of: erp_order, signup_form, import, api, manual, shoptet, smartemailing | ano | Source. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "contact_origin",
"origin": "signup_form"
}ConditionRule_contact_preference
Not available yet: Poštárna has no preferences data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_preference | ano |
ConditionRule_contact_purpose
Contact has a valid consent with a purpose.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_purpose | ano | |
purposeId | string | ano | Purpose id. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
{
"type": "contact_purpose",
"purposeId": "51"
}ConditionRule_contact_viber_state
Not available yet: Poštárna has no viber data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | contact_viber_state | ano |
ConditionRule_day_of_month
Today is one of these days of the month.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | day_of_month | ano | |
days | array of integer | ano | Days 1 to 31. min 1 items |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "day_of_month",
"days": [
1,
15
]
}ConditionRule_day_of_week
Today is one of these weekdays (1 = Monday).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | day_of_week | ano | |
weekdays | array of integer | ano | 1 to 7. min 1 items |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "day_of_week",
"weekdays": [
6,
7
]
}ConditionRule_delivered_viber
Not available yet: Poštárna has no viber data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | delivered_viber | ano |
ConditionRule_email_activity
The contact opened / clicked an e-mail of this run (nodeId null = any). Run only. (not allowed in trigger filters (needs a run))
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | email_activity | ano | |
operator | one of: opened, not_opened, clicked, not_clicked | ano | Operator. |
nodeId | string or null | ne | send_email node key. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "email_activity",
"operator": "opened",
"nodeId": null
}ConditionRule_engagement_score
Engagement level of the contact.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | engagement_score | ano | |
levels | array of one of: N, A, B, C, D, E | ano | Levels. min 1 items |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "engagement_score",
"levels": [
"A",
"B"
]
}ConditionRule_event_attribute
A value of the data of the custom event that started the run (data of POST /contact-events type custom, or of a fire_event node of another automation). Other triggers have no such data. Run only. (not allowed in trigger filters (needs a run))
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | event_attribute | ano | |
attribute | string | ano | Name. |
operator | one of: eq, contains, starts, gt, gte, lt, lte, filled, empty | ano | Operator. |
value | string | ne | Text. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "event_attribute",
"attribute": "plan",
"operator": "eq",
"value": "gold"
}ConditionRule_feed_item_count
Number of items of a feed.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | feed_item_count | ano | |
feedId | string | ano | Feed id. |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "feed_item_count",
"feedId": "71",
"operator": "gt",
"value": 0
}ConditionRule_hour_of_day
The current hour (local) is one of these.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | hour_of_day | ano | |
hours | array of integer | ano | 0 to 23. min 1 items |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "hour_of_day",
"hours": [
8,
9,
10
]
}ConditionRule_opened_email
The contact opened an e-mail of a node.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | opened_email | ano | |
emailNode | object | ano | An e-mail node: automationId null (or left out) = a send_email node of this graph, else the id of another automation of the company and its node key. |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "opened_email",
"emailNode": {
"automationId": "201",
"nodeKey": "email-1"
}
}ConditionRule_opened_emails_count
Number of e-mails the contact opened.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | opened_emails_count | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number. |
kinds | array of one of: automation, campaign, transactional | ne | Kinds. |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "opened_emails_count",
"operator": "eq",
"value": 0
}ConditionRule_ordered_attribute
A value of an order: code, state, status, sourceStatus, currency, companyId, totalWithVat, totalWithoutVat, or any delivery data field.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ordered_attribute | ano | |
attribute | string | ano | Attribute name: letters, digits and _ . : - (at most 60). |
attributeType | one of: text, date, number | ne | How to compare. default text |
operator | one of: eq, filled, gt, gte, lt, lte, starts | ano | Operator. |
value | any | ne | Text, a number, or a time spec for attributeType date. |
limitToTriggerEvent | boolean | ne | Only the order of the run's own trigger event (order triggers). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "ordered_attribute",
"attribute": "currency",
"operator": "eq",
"value": "CZK"
}ConditionRule_ordered_product
The contact ordered a product by id (product code) or name.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ordered_product | ano | |
productField | one of: id, name | ne | Field, default id. default id |
operator | one of: eq, starts, contains | ano | Operator. |
value | string | ano | Text. |
limitToTriggerEvent | boolean | ne | Only the order of the run's own trigger event (order triggers). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "ordered_product",
"productField": "id",
"operator": "eq",
"value": "SKU-001"
}ConditionRule_ordered_product_by_attribute
The contact ordered a product with a feed attribute.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ordered_product_by_attribute | ano | |
attribute | string | ano | Attribute name: letters, digits and _ . : - (at most 60). |
attributeType | one of: text, date, number | ne | How to compare. default text |
operator | one of: eq, filled, gt, gte, lt, lte, starts | ano | Operator. |
value | any | ne | Text, a number, or a time spec for attributeType date. |
limitToTriggerEvent | boolean | ne | Only the order of the run's own trigger event (order triggers). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "ordered_product_by_attribute",
"attribute": "brand",
"operator": "eq",
"value": "Example"
}ConditionRule_ordered_since_entry
The contact ordered since the run entered. Run only. (not allowed in trigger filters (needs a run))
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | ordered_since_entry | ano | |
operator | one of: yes, no | ano | Operator. |
shopId | string or null | ne | |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "ordered_since_entry",
"operator": "yes",
"shopId": null
}ConditionRule_orders_count
Number of orders.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | orders_count | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number. |
paid | one of: any, yes, no | ne | Paid filter, default any. default any |
states | array of one of: received, processing, shipped, cancelled, unknown | ne | Order states (SmartEmailing names). |
shopId | string or null | ne | |
limitToTriggerEvent | boolean | ne | Only the order of the run's own trigger event (order triggers). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "orders_count",
"operator": "eq",
"value": 1,
"paid": "any"
}ConditionRule_orders_total_value
Sum (or avg, min, max) of the contact's orders with VAT in one currency.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | orders_total_value | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Number. |
aggregate | one of: sum, avg, min, max | ne | Aggregate, default sum. default sum |
currency | string | ano | Currency of a shop of the company (CZK, EUR). |
shopId | string or null | ne | |
limitToTriggerEvent | boolean | ne | Only the order of the run's own trigger event (order triggers). |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "orders_total_value",
"operator": "gte",
"value": "3000",
"currency": "CZK"
}ConditionRule_passed_node
This run went (or did not go) through a node. Run only. (not allowed in trigger filters (needs a run))
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | passed_node | ano | |
operator | one of: passed, not_passed | ano | Operator. |
nodeId | string | ano | Node key. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
ConditionRule_promo_code
The contact got (assigned) or used a coupon of a stack.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | promo_code | ano | |
state | one of: assigned, used | ano | State. |
stackId | string | ano | Coupon stack id. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "promo_code",
"state": "used",
"stackId": "81"
}ConditionRule_score
Not available yet: Poštárna has no scoring data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | score | ano |
ConditionRule_script
A Twig script; true when it prints {{ result.returnTrue() }}. Not allowed in trigger filters. (not allowed in trigger filters (needs a run))
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | script | ano | |
script | string | ano | Twig source, at most 20 000 characters. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "script",
"script": "{% if contact.city == 'Brno' %}{{ result.returnTrue() }}{% endif %}"
}ConditionRule_seen_viber
Not available yet: Poštárna has no viber data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | seen_viber | ano |
ConditionRule_sent_email
An e-mail was sent to the contact: of one node (mode node) or of an automation (mode automation, automationId null = any).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | sent_email | ano | |
mode | one of: node, automation | ano | Mode. |
emailNode | object | ne | An e-mail node: automationId null (or left out) = a send_email node of this graph, else the id of another automation of the company and its node key. |
automationId | string or null | ne | |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "sent_email",
"mode": "node",
"emailNode": {
"automationId": "201",
"nodeKey": "email-1"
}
}ConditionRule_sent_emails_count
Number of e-mails sent to the contact.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | sent_emails_count | ano | |
operator | one of: eq, lt, lte, gt, gte | ano | Operator. |
value | any | ano | Whole number 0 to 10 000 000. |
kinds | array of one of: automation, campaign, transactional | ne | Kinds, default automation and campaign. |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "sent_emails_count",
"operator": "gte",
"value": 3
}ConditionRule_sent_sms
Not available yet: Poštárna has no sms data. Saving a graph with it reports "unavailable".
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | sent_sms | ano |
ConditionRule_tracking_url_clicked
The contact clicked a link in an e-mail of a node.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | tracking_url_clicked | ano | |
emailNode | object | ano | An e-mail node: automationId null (or left out) = a send_email node of this graph, else the id of another automation of the company and its node key. |
link | string | ano | URL (at most 2 000). |
compareParams | boolean | ne | Compare query parameters too, default true. default true |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "tracking_url_clicked",
"emailNode": {
"automationId": "201",
"nodeKey": "email-1"
},
"link": "https://www.example.cz/akce"
}ConditionRule_tracking_url_clicked_any
The contact clicked any link of a node (emailNode null = any e-mail node of this automation).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | tracking_url_clicked_any | ano | |
emailNode | object or null | ne | |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "tracking_url_clicked_any",
"emailNode": null
}ConditionRule_visited_attribute
A web tracking visit with an attribute.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | visited_attribute | ano | |
url | string | ne | URL. |
urlOperator | one of: eq, starts | ne | Default eq. default eq |
visitType | one of: home, article, cart, product, category, search, order_done, other | ne | Visit type. |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
attribute | string | ano | Attribute name: letters, digits and _ . : - (at most 60). |
attributeType | one of: text, date, number | ne | How to compare. default text |
value | any | ne | Text, a number, or a time spec for attributeType date. |
operator | one of: starts, gt, gte, lt, lte, eq | ano | Operator. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "visited_attribute",
"attribute": "category",
"operator": "eq",
"value": "Káva"
}ConditionRule_visited_url
A web tracking visit of a URL.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | visited_url | ano | |
url | string | ne | URL. |
urlOperator | one of: eq, starts, contains | ne | Default eq. default eq |
visitType | one of: home, article, cart, product, category, search, order_done, other | ne | Visit type. |
period | object | ne | Time window of the rule: from and to are time specs relative to now (null = unbounded). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "visited_url",
"url": "https://www.example.cz/kosik",
"urlOperator": "starts"
}EmailMetrics
Counts of e-mails and their events (server core/stats.py). Rates as SmartEmailing: openRate, unsubscribeRate and complaintRate over the delivered e-mails, ctr and bounceRate over the sent ones; ctor = unique clicks / unique opens. Test e-mails never count.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
sent | number | ano | |
delivered | number | ano | sent - undelivered |
undelivered | number | ano | Hard or soft bounce (SE "Nedoručeno"). |
bounced | number | ano | |
softBounced | number | ano | |
opens | number | ano | |
uniqueOpens | number | ano | |
repeatedOpens | number | ano | |
machineOpens | number | ano | E-mails whose pixel only a machine fetched (Apple Mail Privacy Protection, security gateways): whether a person read them is unknown, so they are in no open count or rate. |
clicks | number | ano | |
uniqueClicks | number | ano | |
unsubscribed | number | ano | |
complained | number | ano | |
queued | number | ano | |
failed | number | ano | |
skipped | number | ano | |
openRate | number | ano | |
ctr | number | ano | |
ctor | number | ano | |
unsubscribeRate | number | ano | |
bounceRate | number | ano | |
complaintRate | number | ano | |
deliveryRate | number | ano | delivered / sent |
Error
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
error | object | ano |
{
"error": {
"code": "validation",
"message": "email"
}
}GridTagsInput
Bulk label change: add and remove, or tags = the new labels of every row.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
ids | array of string | ano | |
add | array of string | ne | |
remove | array of string | ne | |
tags | array of string | ne |
SegmentRule_campaign
Delivered / opened / clicked a campaign (not_* also matches contacts that never got it); linkUrl narrows clicks to one link.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | campaign | ano | |
operator | one of: received, not_received, opened, not_opened, clicked, not_clicked | ano | Operator. |
campaignId | string or null | ano | Campaign id; null only with received = an e-mail of any campaign. |
linkUrl | string | ne | clicked / not_clicked only. |
days | string or null | ne | Last N days or null. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "campaign",
"operator": "opened",
"campaignId": "121",
"days": null
}SegmentRule_custom_field
A custom field. kind must match the field type: text and textarea -> text, number -> number, date -> date, checkbox -> bool, select and radio -> choice, multi_checkbox -> multi_choice (400 definition.<path>.kind otherwise). Operators: text like the text fields, number gte/lte/eq/is_empty/is_not_empty, date like the date fields, bool is_true/is_false, choice is/is_not, multi_choice contains_any/contains_all/not_contains_any.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | custom_field | ano | |
fieldId | string | ano | Custom field id (without cf:). |
kind | one of: bool, choice, date, multi_choice, number, text | ano | Kind of the field type (see above). |
operator | string | ano | Operator for the kind. |
value | string | ne | Value (string). |
values | array of string | ne | Options (multi_choice). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "custom_field",
"fieldId": "62",
"kind": "text",
"operator": "equals",
"value": "VIP"
}SegmentRule_engagement
Engagement level A (best) to E, N = new.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | engagement | ano | |
operator | one of: in, not_in | ano | Operator. |
values | array of one of: A, B, C, D, E, N | ano | Levels. min 1 items |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "engagement",
"operator": "in",
"values": [
"A",
"B"
]
}SegmentRule_field
A contact field compared with a value. Text operators ignore case and diacritics; date operators count calendar days of the company. Text fields: email, firstName, lastName, city, company, companyId, phone, mobile, street, postalCode, note, country. Enum fields: status (pending/subscribed/unsubscribed/bounced/complained/customer), gender (f/m), language (cs/sk), source (erp_order/signup_form/import/api/manual/shoptet/smartemailing), consentBasis (soft_opt_in_customer/double_opt_in/imported/none). Date fields: createdAt, lastOpenAt, lastClickAt, lastSentAt, statusAt, consentAt.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | field | ano | |
field | one of: email, firstName, lastName, city, company, companyId, phone, mobile, street, postalCode, note, country, status, gender, language, source, consentBasis, createdAt, lastOpenAt, lastClickAt, lastSentAt, statusAt, consentAt | ano | Contact field. |
operator | one of: contains, not_contains, equals, not_equals, starts_with, ends_with, is_empty, is_not_empty, is, is_not, in_last_days, not_in_last_days, before, after, until, since | ano | Text: contains, not_contains, equals, not_equals, starts_with, ends_with, is_empty, is_not_empty; enum: is, is_not; date: in_last_days, not_in_last_days, before, after, until, since, is_empty, is_not_empty. |
value | string | ano | Always a string: the text, the enum value, a number of days ("30") for in_last_days / not_in_last_days, or a date YYYY-MM-DD for before / after; "" for is_empty / is_not_empty. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "field",
"field": "lastOpenAt",
"operator": "in_last_days",
"value": "60"
}SegmentRule_last_order
The last completed order: within / older than N days, or before / after a date.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | last_order | ano | |
operator | one of: in_last_days, older_than_days, before, after | ano | Operator. |
value | string | ano | Days "1" to "3650" or a date YYYY-MM-DD. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
shopId | string or null | ne | Only orders of this shop (null = any). |
currency | string or null | ne | Only orders in this currency (CZK or EUR; it must be the currency of shopId when both are set). |
{
"type": "last_order",
"operator": "older_than_days",
"value": "180"
}SegmentRule_list
Membership in a list. in / not_in = confirmed or unconfirmed member; status_is compares the exact state; added_before / added_after compare the day the contact was added; longer_than_days / shorter_than_days: in the list longer / shorter than N days.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | list | ano | |
operator | one of: in, not_in, added_before, added_after, status_is, longer_than_days, shorter_than_days | ano | Operator. |
listId | string | ano | List id. |
value | string | ne | status_is: confirmed, unconfirmed, unsubscribed, removed; added_: YYYY-MM-DD; _than_days: days "1" to "3650". |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "list",
"operator": "in",
"listId": "101"
}SegmentRule_list_label
Confirmed or unconfirmed member of any list with this label.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | list_label | ano | |
operator | one of: in | ano | Operator. |
label | string | ano | Label, 1 to 40. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "list_label",
"operator": "in",
"label": "vip"
}SegmentRule_opens
Number of the contact's e-mails (campaigns and automations) with an open.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | opens | ano | |
operator | one of: eq, gt, lt, gte, lte | ano | Operator. |
value | string | ano | Count "0" to "100000". |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "opens",
"operator": "gte",
"value": "3",
"days": "90"
}SegmentRule_order_attribute
A completed order has an item whose product code, category, brand or another item attribute (as stored on the order item) equals the value; with scope order an attribute of the order itself.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | order_attribute | ano | |
operator | one of: is | ano | Operator. |
scope | one of: item, order | ne | item (default) or order. default item |
attribute | string | ano | item: productCode, category, brand or any attribute name; order: status, companyId, deliveryCity, deliveryCountry, deliveryZip, deliveryCompany. |
value | string | ano | Exact value, at most 200 characters. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
shopId | string or null | ne | Only orders of this shop (null = any). |
currency | string or null | ne | Only orders in this currency (CZK or EUR; it must be the currency of shopId when both are set). |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
{
"type": "order_attribute",
"operator": "is",
"attribute": "brand",
"value": "Example"
}SegmentRule_order_count
Number of completed orders.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | order_count | ano | |
operator | one of: gte, lte, eq | ano | Operator. |
value | string | ano | Count "0" to "100000". |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
shopId | string or null | ne | Only orders of this shop (null = any). |
currency | string or null | ne | Only orders in this currency (CZK or EUR; it must be the currency of shopId when both are set). |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
{
"type": "order_count",
"operator": "gte",
"value": "2",
"shopId": null,
"currency": null,
"days": "365"
}SegmentRule_order_value
Sum of completed orders with VAT in one currency (CZK and EUR are never added up).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | order_value | ano | |
operator | one of: gte, lte | ano | Operator. |
amount | string | ano | Amount, at most 2 decimals, e.g. "1500.50". |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
shopId | string or null | ne | Only orders of this shop (null = any). |
currency | string or null | ano | Only orders in this currency (CZK or EUR; it must be the currency of shopId when both are set). |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
{
"type": "order_value",
"operator": "gte",
"amount": "2000",
"currency": "CZK",
"shopId": "1",
"days": "365"
}SegmentRule_product_bought
A completed order has an item whose name contains the text or whose product code equals it (case and diacritics ignored).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | product_bought | ano | |
operator | one of: is | ano | Operator. |
value | string | ano | Part of the name or the code, at most 200. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
shopId | string or null | ne | Only orders of this shop (null = any). |
currency | string or null | ne | Only orders in this currency (CZK or EUR; it must be the currency of shopId when both are set). |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
{
"type": "product_bought",
"operator": "is",
"value": "Espresso",
"days": "30"
}SegmentRule_purpose
A valid (not withdrawn, within its validity) consent with a purpose of processing.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | purpose | ano | |
operator | one of: has, not_has | ano | Operator. |
purposeId | string | ano | Purpose id. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "purpose",
"operator": "has",
"purposeId": "51"
}SegmentRule_segment
Member of another segment of the same shop (never itself; chains at most 5 deep, no cycles).
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | segment | ano | |
operator | one of: in, not_in, added_before, added_after | ano | Operator. |
segmentId | string | ano | Segment id. |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "segment",
"operator": "not_in",
"segmentId": "91"
}SegmentRule_web_attribute
A page visit whose attribute matches: visitType = the page type, other names = the visit's own attributes; gt to lte compare numbers.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | web_attribute | ano | |
attribute | string | ano | Attribute name. |
operator | one of: is, starts_with, gt, gte, lt, lte | ano | Operator. |
value | string | ano | At most 200 (a number for gt to lte). |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "web_attribute",
"attribute": "visitType",
"operator": "is",
"value": "product"
}SegmentRule_web_visit
A page visit recorded by the shop's script or the API; any = any page.
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
type | web_visit | ano | |
operator | one of: any, is, starts_with, contains | ano | Operator. |
url | string | ne | Not with any; at most 2 000. |
days | string or null | ne | Only the last N days, "1" to "3650" (null = any time). |
negate | boolean | ne | true = the rule must NOT hold (SmartEmailing "Neplatí, že"). |
{
"type": "web_visit",
"operator": "contains",
"url": "/kava/",
"days": "30"
}Sender
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
id | string | ano | |
shopId | string | ano | |
name | string | ano | |
email | string | ano | |
replyTo | string | ano | |
verified | boolean | ano | Domain verified (SPF, DKIM, DMARC); only verified senders can send. |
isDefault | boolean | ano |
TimeSpec
A moment relative to a base moment (SmartEmailing's "Varianta výběru času"). The base is the moment the contact arrived at the node (or entered the scenario, countFrom scenario), or now in conditions. Days and longer keep the local wall time; months are calendar months. In waits only calendar, interval with sign "+" and event without the words yesterday and previous are allowed. Preview any spec with POST /automations/resolve-time.
object