Přeskočit na obsah
API dokumentace

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

MetodaCestaPopis
GET/api/v1/tenants/{tenant}/automationsList automations
POST/api/v1/tenants/{tenant}/automationsCreate an automation (draft)
POST/api/v1/tenants/{tenant}/automations/resolve-timeResolve a time spec to a moment (preview)
POST/api/v1/tenants/{tenant}/automations/tagsChange labels of automations
POST/api/v1/tenants/{tenant}/automations/validateValidate 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}/activateActivate (start) an automation
POST/api/v1/tenants/{tenant}/automations/{automation_id}/contactsAdd contacts by hand to a running automation
POST/api/v1/tenants/{tenant}/automations/{automation_id}/copyCopy an automation as a new draft
GET/api/v1/tenants/{tenant}/automations/{automation_id}/countsLive counts per node and output
POST/api/v1/tenants/{tenant}/automations/{automation_id}/editingReport that the editor has a scenario open and see who else has it
GET/api/v1/tenants/{tenant}/automations/{automation_id}/editorEverything the editor needs in one answer
PUT/api/v1/tenants/{tenant}/automations/{automation_id}/graphSave the graph of an automation (new version)
GET/api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/passesContacts that went through a node
POST/api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/releaseRelease the contacts waiting in a node
POST/api/v1/tenants/{tenant}/automations/{automation_id}/nodes/{key}/rescheduleRecompute the end of waiting in a node
POST/api/v1/tenants/{tenant}/automations/{automation_id}/pausePause an automation
GET/api/v1/tenants/{tenant}/automations/{automation_id}/reportStatistics of the e-mail nodes (JSON or CSV)
GET/api/v1/tenants/{tenant}/automations/{automation_id}/runsRun history per contact
POST/api/v1/tenants/{tenant}/automations/{automation_id}/testTest the scenario on today's data (nothing is sent)
POST/api/v1/tenants/{tenant}/automations/{automation_id}/traceTrace one contact through the scenario (nothing is sent)
GET/api/v1/tenants/{tenant}/automations/{automation_id}/versionsList 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-eventsRecord 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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.
pagequeryintegernePage number, from 1. default 1, min 1
pageSizequeryintegerneItems per page, 1 to 100. default 25, min 1, max 100
qquerystringneSearch text. max 200 chars
shopquerystringneShop id filter.
sortquerystringneSort fields separated by commas, "-" = descending, at most 3 (e.g. name,-id).
statusqueryone of: draft, active, pausedneStatus.
tagquerystringneLabel filter; repeat for more labels.

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationq, sort, status, tag
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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)

PoleTypPovinnéPopis
namestringano
shopIdstringano
descriptionstringne
tagsarray of stringne
graphAutomationGraphne
transactionalbooleanneTransactional mode; switched only while the automation does not run and only for a graph that fits it.

Odpovědi

Chyby

StavKódHodnoty message
400validationdescription, graph, node, shopId, tags, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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.

PoleTypPovinnéPopis
specTimeSpecano
placeone of: condition, waitano

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationbase, place, spec
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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.

PoleTypPovinnéPopis
idsarray of stringano
addarray of stringne
removearray of stringne
tagsarray of stringne

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationids
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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.

PoleTypPovinnéPopis
shopIdstringano
graphAutomationGraphano

Odpovědi

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Odpovědi

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

PoleTypPovinnéPopis
namestringne
tagsarray of stringne
descriptionstringne
transactionalbooleanneTransactional mode; switched only while the automation does not run and only for a graph that fits it.

Odpovědi

Chyby

StavKódHodnoty message
400validationdescription, graph, node, shopId, tags, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Odpovědi

  • 204 No content

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

object

Odpovědi

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, test_only, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json): Required by the server: contactIds.

PoleTypPovinnéPopis
contactIdsarray of stringano

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictstatus, trigger
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

object

Odpovědi

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
fromquerystringneISO start of the period.
toquerystringneISO end of the period.

Odpovědi

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

object

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationleave
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Odpovědi

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json): Required by the server: baseVersion, graph.

PoleTypPovinnéPopis
confirmRunningbooleanne
baseVersionnumberano
graphAutomationGraphano

Odpovědi

Chyby

StavKódHodnoty message
400validationbaseVersion, confirmRunning, graph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
keypathstringanoNode key (id of the node in the graph).
branchquerystringneOutput (next, yes, no, v1 to v10).
fromquerystringneISO start.
pagequeryintegernePage number, from 1. default 1, min 1
pageSizequeryintegerneItems per page, 1 to 100. default 25, min 1, max 100
qquerystringneSearch text. max 200 chars
toquerystringneISO end.

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationbranch, q
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
keypathstringanoNode key (id of the node in the graph).

Tělo požadavku (application/json)

object

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
keypathstringanoNode key (id of the node in the graph).

Tělo požadavku (application/json)

object

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

object

Odpovědi

Chyby

StavKódHodnoty message
400validationgraph, node, shopId, transactional
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
409conflictconfirm, name, runs, status, version, waiting
429429 rate_limited: wait Retry-After seconds.
503unavailabledata_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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
formatqueryone of: json, csvnecsv = a CSV file (UTF-8 with BOM, semicolons).
fromquerystringneFirst local day YYYY-MM-DD.
nodesquerystringneNode keys to sum, comma separated.
toquerystringneLast local day YYYY-MM-DD.

Odpovědi

  • 200 JSON, or CSV with format=csv: application/json AutomationReport, text/csv string

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
contactIdquerystringneContact id.
pagequeryintegernePage number, from 1. default 1, min 1
pageSizequeryintegerneItems per page, 1 to 100. default 25, min 1, max 100
statusqueryone of: active, completed, exitedneStatus.

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validationcontactId, status
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

PoleTypPovinnéPopis
graphAutomationGraphneThe editor's graph; the stored graph when omitted.
daysnumberne1 to AUTOMATION_TEST_MAX_DAYS, default AUTOMATION_TEST_MAX_DAYS.

Odpovědi

Chyby

StavKódHodnoty message
400validationdays, graph
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Tělo požadavku (application/json)

PoleTypPovinnéPopis
contactIdstringne
emailstringne
graphAutomationGraphne
triggerKeystringne
daysnumberne

Odpovědi

Chyby

StavKódHodnoty message
400validationcontact, days, graph, triggerKey
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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_idpathstringanoId of the automation (string of digits).
versionpathintegeranoVersion number.

Odpovědi

  • 200 OK: application/json object

Chyby

StavKódHodnoty message
400validation
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_found
429429 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ázevKdeTypPovinnéPopis
tenantpathstring (uuid)anoPublic 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)

PoleTypPovinnéPopis
typeone of: custom, cart, visitanoEvent type.
contactIdstringneContact id (or email).
emailstringneContact address.
shopIdstringneShop id (required for cart).
namestringneCustom event name: a-z, 0-9 and -, up to 50.
dataobjectneCustom event data.
itemsarray of objectneCart items.
currencystringneCart currency.
totalstringneCart total.
urlstringneVisited URL.
visitTypeone of: home, article, cart, product, category, search, order_done, otherneVisit type.
attributesobjectneVisit attributes.

Odpovědi

  • 201 Created: application/json object

Chyby

StavKódHodnoty message
400validationtype
401401 unauthorized: missing, unknown, revoked, expired or idle API key.
403403 forbidden: message tenant (another company), scope (read-only key), api_key (person only), or the module the key's roles lack.
404not_foundcontact
429rate_limitedcontact

Schémata

Automation

PoleTypPovinnéPopis
idstringano
namestringano
shopIdstringano
statusAutomationStatusano
versionnumberano
activeSincestring or nullanoSince when it runs without a pause; null unless active.
firstActivatedAtstring or nullano
pausedReasonone of: manual, bounce_rate, complaint_rate, unsubscribe_rate, template_error, nullano
transactionalbooleananoTransactional 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.
tagsarray of stringano
createdAtstringano
updatedAtstringano
statsAutomationStatsano

AutomationCounts

PoleTypPovinnéPopis
nodesmap of AutomationNodeCountsano
runsobjectano

AutomationDetail

PoleTypPovinnéPopis
descriptionstringano
graphAutomationGraphano
issuesarray of AutomationIssueanoEverything that keeps it from running (incomplete settings, lint, unverified sender).
triggersmap of objectnePer trigger node key: a one-off trigger that already took its contacts (done) and the next scheduled pass.
nodeMetamap of AutomationNodeMetanePer node key (AU-11): SE's Poslední editace and Poznámka aktualizována / Aktualizováno uživatelem.
idstringano
namestringano
shopIdstringano
statusAutomationStatusano
versionnumberano
activeSincestring or nullanoSince when it runs without a pause; null unless active.
firstActivatedAtstring or nullano
pausedReasonone of: manual, bounce_rate, complaint_rate, unsubscribe_rate, template_error, nullano
transactionalbooleananoTransactional 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.
tagsarray of stringano
createdAtstringano
updatedAtstringano
statsAutomationStatsano

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.

PoleTypPovinnéPopis
sourcestringanoNode key.
targetstringanoNode key.
branchstringnenext (one output), yes / no (condition), v1..v10 (ab_test). Default next.
idstringneIgnored (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.

PoleTypPovinnéPopis
automationAutomationDetailano
listsarray of AutomationEditorListano
templatesarray of AutomationEditorOptionanoActive templates, newest change first, then archived ones this automation's e-mail nodes use (archived).
sendersarray of Senderano
purposesarray of AutomationEditorOptionano
campaignsarray of AutomationEditorOptionano
customFieldsarray of objectano
segmentsarray of AutomationEditorOptionanoSegments of the automation's shop only.
automationsarray of AutomationEditorOptionanoEvery automation of the tenant, this one included.
emailNodesarray of AutomationEmailNodeanoE-mail nodes of the other automations.
couponStacksarray of AutomationEditorOptionano
feedsarray of AutomationEditorOptionano
formsarray of AutomationEditorOptionano
unsubscribePagesarray of AutomationEditorOptionneActive 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).

PoleTypPovinnéPopis
namestringano
shopIdstring or nullanonull = list of the whole tenant, not bound to one e-shop.
tagsarray of stringanoLabels (štítky), at most 20.
idstringano
manualMembersbooleananoFalse 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.

PoleTypPovinnéPopis
idstringano
namestringano
archivedbooleanneTemplates 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).
subjectstringneTemplates only: the subject the e-mail node shows until it has its own (AA-01).
linkParamsarray of objectneTemplates 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").

PoleTypPovinnéPopis
automationIdstringano
automationNamestringano
nodeKeystringano
nodeNamestringano

AutomationGraph

The graph: at most 300 nodes and 600 edges, one or more triggers, acyclic. An output without an edge = the contact leaves.

PoleTypPovinnéPopis
nodesarray of AutomationNodeanoNodes. max 300 items
edgesarray of AutomationEdgeneEdges. max 600 items

AutomationInput

PoleTypPovinnéPopis
namestringano
shopIdstringano
descriptionstringne
tagsarray of stringne
graphAutomationGraphne
transactionalbooleanneTransactional 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).

PoleTypPovinnéPopis
nodestring or nullanoNode key, null for the whole graph.
fieldstringanoConfig field path (e.g. definition.0.listId), "" for the node.
codeone 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_contentanorequired, 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

PoleTypPovinnéPopis
passednumberano
yesnumberano
nonumberano
skippednumberano
failednumberneActions that could not be carried out (Monitoring chybových akcí).
waitingnumberano
holdingnumberneContacts in a storage node now (Odkladiště).
leftnumberneContacts that left the scenario at this node.
outputsobjectneContacts per output.
queuednumberano
sentnumberano
openednumberano
clickednumberano

AutomationNodeMeta

PoleTypPovinnéPopis
updatedAtstring or nullano
updatedBystringano
noteUpdatedAtstring or nullano
noteUpdatedBystringano

AutomationNodeTest

PoleTypPovinnéPopis
reachednumberanoContacts that came to the node.
waitingnumberanoContacts that stay waiting in it (a wait not over yet, a condition still waiting for its rules).
leftnumberanoContacts that leave the scenario here (the end node, an output without an edge).
outputsobjectanoContacts 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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeab_testano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneSplits contacts randomly (stable per run) into 2 to 10 variants; outputs v1..vN.
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeconditionano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneSplits 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.
json
{
  "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).

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeendano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneEnds the run (the contact leaves).
json
{
  "id": "end-1",
  "type": "end",
  "config": {}
}

AutomationNode_fb_audience

Not available yet: needs meta. Shown in the palette, saving reports "unavailable".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typefb_audienceano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot 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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typefire_eventano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneFires a custom event of the contact that event triggers (custom) of OTHER automations listen to.
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typegoalano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneGoal 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.
json
{
  "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).

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typegotoano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneJumps 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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeholdingano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStorage (Odkladiště): contacts wait here until an edge out of the node is added (then they continue) or 90 days pass.
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typelist_changeano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneSets the contact's state in manual lists (confirmed adds, unsubscribed and removed take out). Lists bound to an e-shop cannot be changed.
json
{
  "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".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typemotionlab_adinaano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot available yet: needs motionlab. Shown in the palette, saving reports "unavailable".

AutomationNode_notify

Notifies the team in the app (notification centre).

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typenotifyano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNotifies the team in the app (notification centre).
json
{
  "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).

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeresetano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneEnds the contact's other active runs of this scenario that wait in nodes after this one (SmartEmailing Reset).
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typesend_emailano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneSends an e-mail from a template (once per node and contact within the company's window). Only to mailable contacts, rechecked right before sending.
json
{
  "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".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typesend_smsano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot 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".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typesend_viberano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot 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).

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typeset_fieldano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneSets 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).
json
{
  "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".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typesklik_retargetingano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot 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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_dateano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts 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.
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_eventano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts 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.
json
{
  "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ď").

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_nowano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts once, right at the activation, with the contacts of the shop matching the filter (SmartEmailing "Hned teď").
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_reorderano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts 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.
json
{
  "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").

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_repeatano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts repeatedly every every from startAt (default the activation) until stopAt, with the contacts matching the filter (SmartEmailing "Opakovat").
json
{
  "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").

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typetrigger_scheduledano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneStarts once at a local date and time (SmartEmailing "V plánovaný čas").
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typewaitano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneWaits. 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.
json
{
  "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.

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typewebhookano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneCalls 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.
json
{
  "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".

PoleTypPovinnéPopis
idstringanoNode key: letters, digits, - and _ (1 to 40), stable across saves. pattern ^[A-Za-z0-9_-]{1,40}$
typewhatsappano
namestringneLabel on the canvas, at most 100.
notestringneNote, at most 1 000.
positionobjectneCanvas position.
configobjectneNot 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").

PoleTypPovinnéPopis
atstringano
contactobjectano
outcomestringano
branchone of: next, yes, no, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, nullano
nextNodestring or nullano

AutomationReport

PoleTypPovinnéPopis
nodesarray of AutomationReportRowano
selectedEmailMetricsano
selectedKeysarray of stringano
webhooksarray of objectano

AutomationReportRow

Statistics of a scenario: one row per e-mail node (metrics as the e-mail statistics), conversions per currency.

PoleTypPovinnéPopis
nodeKeystringano
namestringano
metricsEmailMetricsano
conversionsarray of objectano
conversionRatenumberano

AutomationRun

PoleTypPovinnéPopis
idstringano
contactobjectano
statusAutomationRunStatusano
nodestring or nullano
entryKeystringano
enteredAtstringano
dueAtstring or nullano
finishedAtstring or nullano
exitReasonstring or nullano
stepsarray of objectanoThe real steps (automation_steps): reason = why a step was skipped or failed, messageId = the e-mail it queued.
triggerstring or nullneThe trigger node the run came in through.

AutomationRunStatus

one of: active, completed, exited

AutomationStats

PoleTypPovinnéPopis
enterednumberano
activenumberano
sentnumberano

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.

PoleTypPovinnéPopis
scopeAutomationTestScopeano
daysnumber or nullanoReplayed window of an event trigger, null for the other scopes.
sincestring or nullanoStart of the replayed window (ISO), null for the other scopes.
testedAtstringano
enterednumberano
waitingnumberano
leftnumberano
nodesmap of AutomationNodeTestanoEvery node of the tested graph by its key.

AutomationTestInput

PoleTypPovinnéPopis
graphAutomationGraphneThe editor's graph; the stored graph when omitted.
daysnumberne1 to AUTOMATION_TEST_MAX_DAYS, default AUTOMATION_TEST_MAX_DAYS.

AutomationTestScope

one of: contacts, events, today, mixed

AutomationTrace

PoleTypPovinnéPopis
contactIdstringano
emailstringano
mayEnterbooleanano
reasonsarray of stringanoWhy the contact may not enter: status, suppressed, weak_consent, shop, exception_expired.
triggerstringano
offeredbooleanano
eventAtstring or nullano
stepsarray of AutomationTraceStepano
resultone of: waiting, left, holding, goal, end, limitano

AutomationTraceInput

PoleTypPovinnéPopis
contactIdstringne
emailstringne
graphAutomationGraphne
triggerKeystringne
daysnumberne

AutomationTraceStep

POST /automations/{id}/trace: the way of one contact through the scenario, nothing written or sent.

PoleTypPovinnéPopis
nodestringano
typeAutomationNodeTypeano
outcomestringano
branchone of: next, yes, no, v1, v2, v3, v4, v5, v6, v7, v8, v9, v10, nullano
atstringano
noteobject or nullano

AutomationValidation

PoleTypPovinnéPopis
errorsarray of AutomationIssueano
incompletearray of AutomationIssueano

AutomationVersion

A saved version of a graph (every save keeps one).

PoleTypPovinnéPopis
versionnumberano
statusAutomationStatusano
savedAtstringano
savedBystringano
nodesnumberano
currentbooleanano

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.

PoleTypPovinnéPopis
typegroupano
matchone of: all, anyanoall = AND, any = OR.
rulesarray of ConditionGroup or SegmentRule_field or SegmentRule_list or SegmentRule_order_count or SegmentRule_order_value or SegmentRule_last_order or SegmentRule_engagement or SegmentRule_purpose or SegmentRule_custom_field or SegmentRule_campaign or SegmentRule_order_attribute or SegmentRule_segment or SegmentRule_list_label or SegmentRule_opens or SegmentRule_product_bought or SegmentRule_web_visit or SegmentRule_web_attribute or ConditionRule_contact_in_automation or ConditionRule_contact_in_list or ConditionRule_contact_in_any_list or ConditionRule_contact_in_list_label or ConditionRule_contact_purpose or ConditionRule_contact_origin or ConditionRule_contact_field or ConditionRule_contact_anniversary or ConditionRule_sent_email or ConditionRule_sent_emails_count or ConditionRule_opened_email or ConditionRule_opened_emails_count or ConditionRule_cart_items_count or ConditionRule_day_of_month or ConditionRule_day_of_week or ConditionRule_hour_of_day or ConditionRule_ordered_attribute or ConditionRule_ordered_product or ConditionRule_ordered_product_by_attribute or ConditionRule_orders_total_value or ConditionRule_orders_count or ConditionRule_promo_code or ConditionRule_script or ConditionRule_tracking_url_clicked or ConditionRule_tracking_url_clicked_any or ConditionRule_visited_attribute or ConditionRule_visited_url or ConditionRule_feed_item_count or ConditionRule_ab_test_winner or ConditionRule_ab_test_significant or ConditionRule_engagement_score or ConditionRule_email_activity or ConditionRule_passed_node or ConditionRule_ordered_since_entry or ConditionRule_event_attribute or ConditionRule_cart_items or ConditionRule_score or ConditionRule_seen_viber or ConditionRule_delivered_viber or ConditionRule_sent_sms or ConditionRule_contact_viber_state or ConditionRule_contact_preferenceanoRules and subgroups.

ConditionRule_ab_test_significant

The difference between nodes A and B is significant (95 %, two-proportion z-test).

PoleTypPovinnéPopis
typeab_test_significantano
metricone of: open_rate, click_rateanoMetric.
nodeAstringanosend_email node key.
nodeBstringanoAnother send_email node key.
negatebooleannetrue = 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.

PoleTypPovinnéPopis
typeab_test_winnerano
metricone of: open_rate, click_rateanoMetric.
nodeAstringanosend_email node key.
nodeBstringanoAnother send_email node key.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").

ConditionRule_cart_items

Old name of cart_items_count (still accepted).

PoleTypPovinnéPopis
typecart_itemsano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number.
shopIdstring or nullne
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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).

PoleTypPovinnéPopis
typecart_items_countano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number.
shopIdstring or nullneShop, null = any cart.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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).

PoleTypPovinnéPopis
typecontact_anniversaryano
fieldstringanobirthday, nameDay or cf:<id> of a date field.
calendarone of: auto, cz, sknenameDay only.
relationone of: now, offsetnenow = today; offset = shifted. default now
offsetobjectneWith relation offset, at least 15 minutes.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typecontact_fieldano
fieldstringanoSystem 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>.
operatorstringanoOperator for the field kind.
valueanyneText, number, f / m, an option, or a time spec for dates.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "contact_field",
  "field": "city",
  "operator": "eq",
  "value": "Brno"
}

ConditionRule_contact_in_any_list

Contact is in any list in a state.

PoleTypPovinnéPopis
typecontact_in_any_listano
stateone of: confirmed, unsubscribedneState, default confirmed. default confirmed
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
json
{
  "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).

PoleTypPovinnéPopis
typecontact_in_automationano
automationIdstring or nullne
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "contact_in_automation",
  "automationId": "201"
}

ConditionRule_contact_in_list

Contact is in a list in a state.

PoleTypPovinnéPopis
typecontact_in_listano
listIdstringanoList id.
stateone of: confirmed, unsubscribedneState, default confirmed. default confirmed
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
json
{
  "type": "contact_in_list",
  "listId": "101",
  "state": "confirmed"
}

ConditionRule_contact_in_list_label

Contact is in a list with this label.

PoleTypPovinnéPopis
typecontact_in_list_labelano
labelstringanoLabel, at most 40.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
json
{
  "type": "contact_in_list_label",
  "label": "newsletter"
}

ConditionRule_contact_origin

Contact came from a source.

PoleTypPovinnéPopis
typecontact_originano
originone of: erp_order, signup_form, import, api, manual, shoptet, smartemailinganoSource.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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".

PoleTypPovinnéPopis
typecontact_preferenceano

ConditionRule_contact_purpose

Contact has a valid consent with a purpose.

PoleTypPovinnéPopis
typecontact_purposeano
purposeIdstringanoPurpose id.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
json
{
  "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".

PoleTypPovinnéPopis
typecontact_viber_stateano

ConditionRule_day_of_month

Today is one of these days of the month.

PoleTypPovinnéPopis
typeday_of_monthano
daysarray of integeranoDays 1 to 31. min 1 items
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "day_of_month",
  "days": [
    1,
    15
  ]
}

ConditionRule_day_of_week

Today is one of these weekdays (1 = Monday).

PoleTypPovinnéPopis
typeday_of_weekano
weekdaysarray of integerano1 to 7. min 1 items
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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".

PoleTypPovinnéPopis
typedelivered_viberano

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))

PoleTypPovinnéPopis
typeemail_activityano
operatorone of: opened, not_opened, clicked, not_clickedanoOperator.
nodeIdstring or nullnesend_email node key.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "email_activity",
  "operator": "opened",
  "nodeId": null
}

ConditionRule_engagement_score

Engagement level of the contact.

PoleTypPovinnéPopis
typeengagement_scoreano
levelsarray of one of: N, A, B, C, D, EanoLevels. min 1 items
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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))

PoleTypPovinnéPopis
typeevent_attributeano
attributestringanoName.
operatorone of: eq, contains, starts, gt, gte, lt, lte, filled, emptyanoOperator.
valuestringneText.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "event_attribute",
  "attribute": "plan",
  "operator": "eq",
  "value": "gold"
}

ConditionRule_feed_item_count

Number of items of a feed.

PoleTypPovinnéPopis
typefeed_item_countano
feedIdstringanoFeed id.
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "feed_item_count",
  "feedId": "71",
  "operator": "gt",
  "value": 0
}

ConditionRule_hour_of_day

The current hour (local) is one of these.

PoleTypPovinnéPopis
typehour_of_dayano
hoursarray of integerano0 to 23. min 1 items
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "hour_of_day",
  "hours": [
    8,
    9,
    10
  ]
}

ConditionRule_opened_email

The contact opened an e-mail of a node.

PoleTypPovinnéPopis
typeopened_emailano
emailNodeobjectanoAn 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.
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "opened_email",
  "emailNode": {
    "automationId": "201",
    "nodeKey": "email-1"
  }
}

ConditionRule_opened_emails_count

Number of e-mails the contact opened.

PoleTypPovinnéPopis
typeopened_emails_countano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number.
kindsarray of one of: automation, campaign, transactionalneKinds.
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typeordered_attributeano
attributestringanoAttribute name: letters, digits and _ . : - (at most 60).
attributeTypeone of: text, date, numberneHow to compare. default text
operatorone of: eq, filled, gt, gte, lt, lte, startsanoOperator.
valueanyneText, a number, or a time spec for attributeType date.
limitToTriggerEventbooleanneOnly the order of the run's own trigger event (order triggers).
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "ordered_attribute",
  "attribute": "currency",
  "operator": "eq",
  "value": "CZK"
}

ConditionRule_ordered_product

The contact ordered a product by id (product code) or name.

PoleTypPovinnéPopis
typeordered_productano
productFieldone of: id, nameneField, default id. default id
operatorone of: eq, starts, containsanoOperator.
valuestringanoText.
limitToTriggerEventbooleanneOnly the order of the run's own trigger event (order triggers).
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "ordered_product",
  "productField": "id",
  "operator": "eq",
  "value": "SKU-001"
}

ConditionRule_ordered_product_by_attribute

The contact ordered a product with a feed attribute.

PoleTypPovinnéPopis
typeordered_product_by_attributeano
attributestringanoAttribute name: letters, digits and _ . : - (at most 60).
attributeTypeone of: text, date, numberneHow to compare. default text
operatorone of: eq, filled, gt, gte, lt, lte, startsanoOperator.
valueanyneText, a number, or a time spec for attributeType date.
limitToTriggerEventbooleanneOnly the order of the run's own trigger event (order triggers).
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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))

PoleTypPovinnéPopis
typeordered_since_entryano
operatorone of: yes, noanoOperator.
shopIdstring or nullne
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "ordered_since_entry",
  "operator": "yes",
  "shopId": null
}

ConditionRule_orders_count

Number of orders.

PoleTypPovinnéPopis
typeorders_countano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number.
paidone of: any, yes, nonePaid filter, default any. default any
statesarray of one of: received, processing, shipped, cancelled, unknownneOrder states (SmartEmailing names).
shopIdstring or nullne
limitToTriggerEventbooleanneOnly the order of the run's own trigger event (order triggers).
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typeorders_total_valueano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoNumber.
aggregateone of: sum, avg, min, maxneAggregate, default sum. default sum
currencystringanoCurrency of a shop of the company (CZK, EUR).
shopIdstring or nullne
limitToTriggerEventbooleanneOnly the order of the run's own trigger event (order triggers).
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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))

PoleTypPovinnéPopis
typepassed_nodeano
operatorone of: passed, not_passedanoOperator.
nodeIdstringanoNode key.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").

ConditionRule_promo_code

The contact got (assigned) or used a coupon of a stack.

PoleTypPovinnéPopis
typepromo_codeano
stateone of: assigned, usedanoState.
stackIdstringanoCoupon stack id.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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".

PoleTypPovinnéPopis
typescoreano

ConditionRule_script

A Twig script; true when it prints {{ result.returnTrue() }}. Not allowed in trigger filters. (not allowed in trigger filters (needs a run))

PoleTypPovinnéPopis
typescriptano
scriptstringanoTwig source, at most 20 000 characters.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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".

PoleTypPovinnéPopis
typeseen_viberano

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).

PoleTypPovinnéPopis
typesent_emailano
modeone of: node, automationanoMode.
emailNodeobjectneAn 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.
automationIdstring or nullne
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "sent_email",
  "mode": "node",
  "emailNode": {
    "automationId": "201",
    "nodeKey": "email-1"
  }
}

ConditionRule_sent_emails_count

Number of e-mails sent to the contact.

PoleTypPovinnéPopis
typesent_emails_countano
operatorone of: eq, lt, lte, gt, gteanoOperator.
valueanyanoWhole number 0 to 10 000 000.
kindsarray of one of: automation, campaign, transactionalneKinds, default automation and campaign.
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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".

PoleTypPovinnéPopis
typesent_smsano

ConditionRule_tracking_url_clicked

The contact clicked a link in an e-mail of a node.

PoleTypPovinnéPopis
typetracking_url_clickedano
emailNodeobjectanoAn 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.
linkstringanoURL (at most 2 000).
compareParamsbooleanneCompare query parameters too, default true. default true
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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).

PoleTypPovinnéPopis
typetracking_url_clicked_anyano
emailNodeobject or nullne
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "tracking_url_clicked_any",
  "emailNode": null
}

ConditionRule_visited_attribute

A web tracking visit with an attribute.

PoleTypPovinnéPopis
typevisited_attributeano
urlstringneURL.
urlOperatorone of: eq, startsneDefault eq. default eq
visitTypeone of: home, article, cart, product, category, search, order_done, otherneVisit type.
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
attributestringanoAttribute name: letters, digits and _ . : - (at most 60).
attributeTypeone of: text, date, numberneHow to compare. default text
valueanyneText, a number, or a time spec for attributeType date.
operatorone of: starts, gt, gte, lt, lte, eqanoOperator.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "visited_attribute",
  "attribute": "category",
  "operator": "eq",
  "value": "Káva"
}

ConditionRule_visited_url

A web tracking visit of a URL.

PoleTypPovinnéPopis
typevisited_urlano
urlstringneURL.
urlOperatorone of: eq, starts, containsneDefault eq. default eq
visitTypeone of: home, article, cart, product, category, search, order_done, otherneVisit type.
periodobjectneTime window of the rule: from and to are time specs relative to now (null = unbounded).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
sentnumberano
deliverednumberanosent - undelivered
undeliverednumberanoHard or soft bounce (SE "Nedoručeno").
bouncednumberano
softBouncednumberano
opensnumberano
uniqueOpensnumberano
repeatedOpensnumberano
machineOpensnumberanoE-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.
clicksnumberano
uniqueClicksnumberano
unsubscribednumberano
complainednumberano
queuednumberano
failednumberano
skippednumberano
openRatenumberano
ctrnumberano
ctornumberano
unsubscribeRatenumberano
bounceRatenumberano
complaintRatenumberano
deliveryRatenumberanodelivered / sent

Error

PoleTypPovinnéPopis
errorobjectano
json
{
  "error": {
    "code": "validation",
    "message": "email"
  }
}

GridTagsInput

Bulk label change: add and remove, or tags = the new labels of every row.

PoleTypPovinnéPopis
idsarray of stringano
addarray of stringne
removearray of stringne
tagsarray of stringne

SegmentRule_campaign

Delivered / opened / clicked a campaign (not_* also matches contacts that never got it); linkUrl narrows clicks to one link.

PoleTypPovinnéPopis
typecampaignano
operatorone of: received, not_received, opened, not_opened, clicked, not_clickedanoOperator.
campaignIdstring or nullanoCampaign id; null only with received = an e-mail of any campaign.
linkUrlstringneclicked / not_clicked only.
daysstring or nullneLast N days or null.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typecustom_fieldano
fieldIdstringanoCustom field id (without cf:).
kindone of: bool, choice, date, multi_choice, number, textanoKind of the field type (see above).
operatorstringanoOperator for the kind.
valuestringneValue (string).
valuesarray of stringneOptions (multi_choice).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "custom_field",
  "fieldId": "62",
  "kind": "text",
  "operator": "equals",
  "value": "VIP"
}

SegmentRule_engagement

Engagement level A (best) to E, N = new.

PoleTypPovinnéPopis
typeengagementano
operatorone of: in, not_inanoOperator.
valuesarray of one of: A, B, C, D, E, NanoLevels. min 1 items
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typefieldano
fieldone of: email, firstName, lastName, city, company, companyId, phone, mobile, street, postalCode, note, country, status, gender, language, source, consentBasis, createdAt, lastOpenAt, lastClickAt, lastSentAt, statusAt, consentAtanoContact field.
operatorone 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, sinceanoText: 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.
valuestringanoAlways 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.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typelast_orderano
operatorone of: in_last_days, older_than_days, before, afteranoOperator.
valuestringanoDays "1" to "3650" or a date YYYY-MM-DD.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
shopIdstring or nullneOnly orders of this shop (null = any).
currencystring or nullneOnly orders in this currency (CZK or EUR; it must be the currency of shopId when both are set).
json
{
  "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.

PoleTypPovinnéPopis
typelistano
operatorone of: in, not_in, added_before, added_after, status_is, longer_than_days, shorter_than_daysanoOperator.
listIdstringanoList id.
valuestringnestatus_is: confirmed, unconfirmed, unsubscribed, removed; added_: YYYY-MM-DD; _than_days: days "1" to "3650".
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "list",
  "operator": "in",
  "listId": "101"
}

SegmentRule_list_label

Confirmed or unconfirmed member of any list with this label.

PoleTypPovinnéPopis
typelist_labelano
operatorone of: inanoOperator.
labelstringanoLabel, 1 to 40.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "list_label",
  "operator": "in",
  "label": "vip"
}

SegmentRule_opens

Number of the contact's e-mails (campaigns and automations) with an open.

PoleTypPovinnéPopis
typeopensano
operatorone of: eq, gt, lt, gte, lteanoOperator.
valuestringanoCount "0" to "100000".
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typeorder_attributeano
operatorone of: isanoOperator.
scopeone of: item, orderneitem (default) or order. default item
attributestringanoitem: productCode, category, brand or any attribute name; order: status, companyId, deliveryCity, deliveryCountry, deliveryZip, deliveryCompany.
valuestringanoExact value, at most 200 characters.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
shopIdstring or nullneOnly orders of this shop (null = any).
currencystring or nullneOnly orders in this currency (CZK or EUR; it must be the currency of shopId when both are set).
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
json
{
  "type": "order_attribute",
  "operator": "is",
  "attribute": "brand",
  "value": "Example"
}

SegmentRule_order_count

Number of completed orders.

PoleTypPovinnéPopis
typeorder_countano
operatorone of: gte, lte, eqanoOperator.
valuestringanoCount "0" to "100000".
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
shopIdstring or nullneOnly orders of this shop (null = any).
currencystring or nullneOnly orders in this currency (CZK or EUR; it must be the currency of shopId when both are set).
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
json
{
  "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).

PoleTypPovinnéPopis
typeorder_valueano
operatorone of: gte, lteanoOperator.
amountstringanoAmount, at most 2 decimals, e.g. "1500.50".
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
shopIdstring or nullneOnly orders of this shop (null = any).
currencystring or nullanoOnly orders in this currency (CZK or EUR; it must be the currency of shopId when both are set).
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
json
{
  "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).

PoleTypPovinnéPopis
typeproduct_boughtano
operatorone of: isanoOperator.
valuestringanoPart of the name or the code, at most 200.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
shopIdstring or nullneOnly orders of this shop (null = any).
currencystring or nullneOnly orders in this currency (CZK or EUR; it must be the currency of shopId when both are set).
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
json
{
  "type": "product_bought",
  "operator": "is",
  "value": "Espresso",
  "days": "30"
}

SegmentRule_purpose

A valid (not withdrawn, within its validity) consent with a purpose of processing.

PoleTypPovinnéPopis
typepurposeano
operatorone of: has, not_hasanoOperator.
purposeIdstringanoPurpose id.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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).

PoleTypPovinnéPopis
typesegmentano
operatorone of: in, not_in, added_before, added_afteranoOperator.
segmentIdstringanoSegment id.
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typeweb_attributeano
attributestringanoAttribute name.
operatorone of: is, starts_with, gt, gte, lt, lteanoOperator.
valuestringanoAt most 200 (a number for gt to lte).
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "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.

PoleTypPovinnéPopis
typeweb_visitano
operatorone of: any, is, starts_with, containsanoOperator.
urlstringneNot with any; at most 2 000.
daysstring or nullneOnly the last N days, "1" to "3650" (null = any time).
negatebooleannetrue = the rule must NOT hold (SmartEmailing "Neplatí, že").
json
{
  "type": "web_visit",
  "operator": "contains",
  "url": "/kava/",
  "days": "30"
}

Sender

PoleTypPovinnéPopis
idstringano
shopIdstringano
namestringano
emailstringano
replyTostringano
verifiedbooleananoDomain verified (SPF, DKIM, DMARC); only verified senders can send.
isDefaultbooleanano

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