Zum Inhalt springen
Doku

Workflows aus Triggern und Schritten aufbauen, ausführen und ihre Durchläufe prüfen.

Basis-URLhttps://api.emailit.com/v2AuthentifizierungFehlerRate Limits

Automatisierung erstellen

Erstellt eine Automatisierung im Status draft aus einem Graphen von Schritten und Verbindungen. Erfordert einen API-Schlüssel mit dem Scope full. Automatisierungen sind in der Beta.

Die Automatisierung tut nichts, bis Sie sie starten. Jeder Durchlauf kostet beim Start 3 Credits, und jede E-Mail, die send_email oder forward_email sendet, kostet einen weiteren Credit. In einem nicht verifizierten Workspace können diese Aktionen nur an die E-Mail-Adressen der Konten von Workspace-Mitgliedern senden.

POST/automations

Body-Parameter

contextstringerforderlich
Worum es in jedem Durchlauf geht: contact, email oder event. Der Kontext bestimmt, welche Trigger und Aktionen Sie verwenden können, und lässt sich später nicht ändern. Siehe Kontexte.
namestringerforderlich
Name der Automatisierung, bis zu 191 Zeichen.
descriptionstring | null
Optionale Beschreibung.
settingsobject
Regeln für Durchläufe. Siehe Einstellungen.
stepsobject[]erforderlich
Die Trigger- und Aktionsschritte, mindestens ein Trigger. Siehe Schritte.
connectionsobject[]erforderlich
Die Kanten zwischen den Schritten. Übergeben Sie [] für einen Graphen, der nur aus einem Trigger besteht. Siehe Verbindungen.

Einstellungen

exit_conditionsobject[]

Bricht den Durchlauf eines Kontakts ab, sobald einer dieser Einträge zutrifft (Kontext contact, bis zu 20). Jeder Eintrag ist ein Event-Matcher, also der Name des Triggers in event plus dessen Konfigurationsfelder, etwa { "event": "contact.tag_added", "tag": "customer" } oder { "event": "contact.on_event", "event_name": "purchase" }, oder eine Bedingung für den Kontakt, { "condition": { "match": "all", "rules": [...] } }, mit den Regeln der Aktion condition. Matcher akzeptieren jeden Kontakt-Trigger außer den Datums-Triggern und contact.visits_url sowie optional einen filter wie Trigger-Konfigurationen. Segment-Events (segment_id erforderlich) und Commerce-Events sind wie ihre Trigger in der Alpha. Matcher mit contact.on_event, hier und in den Schritten goal und wait_until, erfordern den Tarif Pro, Business oder Custom. Siehe Ausstiegsbedingungen und Ziele.

exit_on_audience_removalbooleanStandardwert: false
true bricht einen Durchlauf, den contact.added_to_audience gestartet hat, ab, wenn der Kontakt aus dieser Kontaktliste entfernt wird, sich von ihr abmeldet oder sich von allen Marketing-E-Mails abmeldet.
on_step_failurestringStandardwert: stop
stop markiert den Durchlauf als failed, wenn ein Schritt fehlschlägt. skip protokolliert den fehlgeschlagenen Schritt und setzt den Durchlauf an dessen default-Kanten fort (oder an no nach einer fehlgeschlagenen condition).
allow_reentrybooleanStandardwert: true
false überspringt einen Trigger, wenn derselbe Kontakt (oder dieselbe E-Mail) in dieser Automatisierung bereits einen laufenden Durchlauf hat.
max_concurrent_runsintegerStandardwert: 0
Maximale Anzahl gleichzeitiger Durchläufe im Status running. 0 bedeutet kein Limit.
cooldown_secondsintegerStandardwert: 0
Überspringt einen Trigger, wenn derselbe Kontakt (oder dieselbe E-Mail) innerhalb dieser Anzahl von Sekunden einen Durchlauf in dieser Automatisierung gestartet hat.

Schritte

keystringerforderlich
Ihre Kennung für den Schritt, eindeutig innerhalb der Automatisierung, zum Beispiel welcome_email. Verbindungen, Schrittstatistiken und Aktualisierungen verweisen über diesen Schlüssel auf Schritte.
typestringerforderlich
trigger oder action.
triggerstring
Name des Triggers, erforderlich, wenn type den Wert trigger hat. Siehe Trigger.
actionstring
Name der Aktion, erforderlich, wenn type den Wert action hat. Siehe Aktionen.
configobject
Einstellungen für den Trigger oder die Aktion.

Verbindungen

fromstringerforderlich
Schlüssel des Schritts, an dem die Kante beginnt.
tostringerforderlich
Schlüssel des nächsten Schritts.
branchstringStandardwert: default
Welches Ergebnis des Schritts in from dieser Kante folgt. Schritte vom Typ condition verwenden yes und no, Schritte vom Typ wait_until verwenden matched und timeout (Events und Bedingungen) oder default und passed (Datumsangaben), Schritte vom Typ experiment die Schlüssel der Varianten. Alle anderen Schritte verwenden default.

Kontexte

Kontext Ein Durchlauf betrifft Trigger Regeln
contact Einen Kontakt. send_email geht an diesen Kontakt. contact.*, system.* Ein oder mehrere Trigger. Sie müssen alle mit derselben ersten Aktion verbunden sein.
email Eine E-Mail (gesendet oder empfangen). email.*, system.* Ein oder mehrere Trigger. Sie müssen alle mit derselben ersten Aktion verbunden sein.
event Nur den Payload des Triggers. event.*, system.* Genau ein Trigger.

Jede Aktion muss von einem Trigger aus erreichbar sein. Ein Durchlauf beginnt bei der Aktion, die mit dem ausgelösten Trigger verbunden ist, und folgt den Verbindungen:

  • condition folgt je nach Ergebnis nur der Kante, deren branch yes oder no ist.
  • wait_until folgt nur matched oder timeout (Events und Bedingungen) oder default oder passed (Datumsangaben).
  • experiment folgt den Kanten der gewählten Variante. Wenn dieser Pfad endet, setzt sich der Durchlauf an den default-Kanten des Experiment-Schritts fort.
  • wait verzögert den nächsten Schritt.
  • Alle anderen Aktionen folgen ihren default-Kanten. Ein Schritt mit mehreren ausgehenden Kanten führt sie alle aus.
  • Ein Schritt goal wird auch außerhalb der Reihenfolge erreicht: Wenn der Kontakt das Ziel erfüllt, springt der Durchlauf dorthin und setzt sich danach fort.

Ein Durchlauf ist completed, wenn keine Schritte mehr übrig sind oder ein Schritt end_run ausgeführt wird, failed, wenn ein Schritt fehlschlägt (mit on_step_failure: "stop"), und canceled, wenn eine Ausstiegsbedingung zutrifft, der Durchlauf abgebrochen wird oder Sie die Automatisierung stoppen.

Trigger

Trigger Kontext Wird ausgelöst, wenn
contact.added_to_audience contact Ein Kontakt eine Kontaktliste abonniert, auch bei erneuter Anmeldung.
contact.removed_from_audience contact Ein Abonnent aus einer Kontaktliste gelöscht wird.
contact.added_to_segment contact Ein Kontakt einem Segment mit Tracking beitritt. Nicht bei Änderungen, die durch das Bearbeiten des Segments entstehen. Alpha: Nur das Emailit-Team kann Segment-Trigger hinzufügen; andere Anfragen geben 403 mit error: "segments_alpha" zurück.
contact.removed_from_segment contact Ein Kontakt ein Segment mit Tracking verlässt. Nicht bei Änderungen, die durch das Bearbeiten des Segments entstehen. Alpha, wie contact.added_to_segment.
contact.created contact Ein Kontakt erstellt wird.
contact.updated contact Ein Kontakt aktualisiert wird, auch Tags und Score.
contact.tag_added, contact.tag_removed contact Dem Kontakt ein Tag hinzugefügt oder von ihm entfernt wird.
contact.score_changed contact Sich der Lead-Score des Kontakts ändert.
contact.unsubscribed contact Der Kontakt sich von einer Kontaktliste oder von allen Marketing-E-Mails abmeldet.
contact.loaded_email contact Ein Empfänger, der ein Kontakt im Workspace ist, eine E-Mail öffnet.
contact.clicked_in_email contact Ein Empfänger, der ein Kontakt im Workspace ist, auf einen getrackten Link klickt.
contact.on_date contact Das Datum in einem eigenen Datumsfeld erreicht ist, optional um Tage oder Wochen verschoben, zu einer Uhrzeit in einer Zeitzone. Einmal oder mit repeat: "yearly" jährlich.
contact.date_anniversary contact Jedes Jahr an Monat und Tag eines eigenen Datumsfelds, mit denselben Optionen.
contact.on_event contact Ein eigenes Event (c:) oder Workspace-Event (w:) für den Kontakt eintrifft. Tarife Business und Custom: Andere Tarife erhalten 403 mit error: "plan_required" und required_plan: "business".
form.submitted contact Ein Formular mit einer E-Mail-Adresse abgeschickt wird.
contact.on_purchase contact Ein Kontakt eine neue Bestellung aufgibt. Alpha: Nur das Emailit-Team kann Commerce-Trigger hinzufügen; andere Anfragen geben 403 mit error: "commerce_alpha" zurück.
contact.abandoned_cart contact Der Warenkorb eines Kontakts abgebrochen wird. Alpha, wie contact.on_purchase.
contact.visits_url contact Wird akzeptiert, aber Emailit löst ihn noch nicht aus.
email.received email Eine eingehende E-Mail eintrifft.
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled email Das gleichnamige E-Mail-Event eintritt.
event.<name> event Jeder Name, der mit event. beginnt. Emailit löst noch keine event.*-Events aus; starten Sie Event-Automatisierungen mit system.manual.
system.manual alle Sie Durchlauf auslösen aufrufen.
system.schedule alle Wird akzeptiert, aber Emailit löst geplante Trigger noch nicht aus.

Felder in config für Trigger:

audience_idstring
Für contact.added_to_audience und contact.removed_from_audience: nur für diese Kontaktliste (aud_…) auslösen.
segment_idstring
Für contact.added_to_segment und contact.removed_from_segment: das Segment mit Tracking (seg_…). Optional beim Erstellen der Automatisierung, erforderlich, wenn Sie ihre Schritte aktualisieren. Ein Segment, das nicht existiert oder kein Tracking hat, gibt 400 zurück.
include_current_membersbooleanStandardwert: false
Für contact.added_to_segment: Startet beim ersten Start der Automatisierung auch einen Durchlauf für jeden Kontakt, der bereits im Segment ist. Die Einstellungen für den Wiedereintritt gelten weiterhin.
date_fieldstring
Für contact.date_anniversary und contact.on_date: der Schlüssel des eigenen Felds, das das Datum enthält, zum Beispiel birthday.
offset, time, timezone, repeatobject, string, string, string
Für Datums-Trigger: offset ist { "amount": 3, "unit": "days", "direction": "before" } (unit days oder weeks), time ist HH:MM (Standardwert 00:00), timezone ein IANA-Name (Standardwert UTC) und repeat bei contact.on_date once oder yearly.
tagstring
Für contact.tag_added und contact.tag_removed: nur dieses Tag.
threshold, directionnumber, string
Für contact.score_changed: nur, wenn der Score threshold überschreitet, nach oben (up, Standardwert) oder nach unten (down).
fieldstring
Für contact.updated: nur, wenn sich dieses Feld geändert hat, zum Beispiel custom_fields.purchased, tags oder score.
event_namestring
Für contact.on_event: der Name des Events, etwa purchase (passt auf c:purchase und w:purchase) oder w:webinar.attended. Lassen Sie das Feld für jedes Workspace-Event oder eigene Event weg. Filtern Sie mit filter nach den Eigenschaften des Events, zum Beispiel properties.total.
form_idstring
Für form.submitted: nur dieses Formular.
filterobject

Nur auslösen, wenn das Event passt: { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match ist all (Standardwert) oder any. field ist ein Pfad mit Punkten in das object des Events, zum Beispiel to oder email.subject; ein vorangestelltes payload. wird ignoriert.

Operatoren: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Jeder Operator außer is_set und is_not_set braucht einen value; in und not_in erwarten ein Array.

Aktionen

Aktion Kontext Konfiguration
send_email alle type (erforderlich, template), template_id (erforderlich: eine tem_-ID oder der Alias einer veröffentlichten Vorlage), from, subject, reply_to, to, email_type, tracking
forward_email email, event to (erforderlich), from, subject, email_id
wait alle seconds (erforderlich, 0 bis 2.592.000, also 30 Tage)
wait_until alle (Modi event und condition: contact) mode (date, event oder condition) und die Felder dieses Modus
condition alle filter (erforderlich, siehe Bedingungen)
goal contact event oder condition, if_not_met
experiment alle variants (erforderlich), control
call_webhook alle url (erforderlich), method, headers, body, secret, fail_on_error
run_automation alle automation_id (erforderlich), exit_current
exit_automation contact automation_ids oder all: true
end_run alle Keine
end alle Keine
add_tag, remove_tag contact tags (erforderlich)
update_score contact operation (add, subtract oder set), value (erforderlich)
add_to_audience contact audience_id (erforderlich), emit_events
remove_from_audience contact audience_id (erforderlich), mode (remove oder unsubscribe), emit_events
update_subscription contact action (subscribe oder unsubscribe, erforderlich), scope (audience, all_audiences oder global), audience_id
edit_contact contact fields (erforderlich), emit_events
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id, emit_events
  • send_email sendet die Vorlage. from ist standardmäßig der Absender der Vorlage und muss auf einer verifizierten Versanddomain liegen. subject überschreibt den Betreff der Vorlage. reply_to ist eine Adresse oder ein Array von Adressen und kann ein Platzhalter sein. Im Kontext contact geht die E-Mail an den Kontakt des Durchlaufs; in den Kontexten email und event setzen Sie to. email_type ist marketing (Standardwert im Kontext contact: wird für abgemeldete Kontakte übersprungen, mit Abmeldelink und List-Unsubscribe-Headern) oder transactional. tracking: { "loads": true, "clicks": true } überschreibt die Tracking-Einstellungen der Domain, und tracking: {} kehrt zu ihnen zurück.
  • wait_until wartet auf ein Datum: { "mode": "date", "date": { "type": "global", "key": "webinar_date" }, "offset": { "amount": 1, "unit": "days", "direction": "before" }, "time": "09:00", "timezone": "Europe/Prague", "if_passed": "continue" }, wobei date.type contact (mit field), global (mit key), fixed (mit value) oder payload (mit path) ist und if_passed continue oder branch. Für ein Event: { "mode": "event", "event": { "event": "contact.clicked_in_email" }, "timeout": { "amount": 2, "unit": "days" } }. Für eine Bedingung: { "mode": "condition", "condition": { ... }, "timeout": ... }. Wartezeiten dauern bis zu 365 Tage. Siehe Wait until.
  • goal erwartet einen Event-Matcher in event (wie in exit_conditions) oder eine condition. Wenn der Kontakt das Ziel erfüllt, springt der Durchlauf zum Ziel. if_not_met (continue, wait oder end) legt fest, was passiert, wenn ein Durchlauf das Ziel erreicht, bevor der Kontakt es erfüllt hat. Zielschritte erfordern den Tarif Pro, Business oder Custom.
  • forward_email leitet die E-Mail des Durchlaufs (oder die E-Mail in email_id) an to weiter. from ist standardmäßig der ursprüngliche Absender und subject standardmäßig Fwd: <original subject>.
  • condition erwartet { "match": "all" | "any", "rules": [...] }. Siehe Bedingungen. Der Schritt wird mit yes oder no fortgesetzt.
  • experiment wählt eine der variants (einschließlich control), jeweils { "key": "a", "weight": 50 }, zufällig nach Gewichtung aus und setzt den Durchlauf auf dem Zweig fort, der nach dem gewählten Schlüssel benannt ist.
  • call_webhook sendet eine HTTP-Anfrage (Standardmethode POST, JSON als Content-Type) und protokolliert die Statusklasse (2xx, 4xx, 5xx) oder timeout oder network_error. Ohne body sendet er die Automatisierung, den Durchlauf, den Kontakt und den Payload als JSON. Mit secret wird der Body in X-Emailit-Signature signiert. Eine Antwort außerhalb von 2xx lässt den Schritt nur fehlschlagen, wenn fail_on_error true ist. Private Adressen werden blockiert.
  • run_automation startet einen Durchlauf einer anderen laufenden Automatisierung für denselben Kontakt, mit dem Payload dieses Durchlaufs. Der aktuelle Durchlauf läuft weiter oder endet mit exit_current: true.
  • exit_automation bricht die laufenden Durchläufe des Kontakts in den Automatisierungen in automation_ids ab oder mit all: true in jeder anderen Automatisierung.
  • end_run beendet den Durchlauf, einschließlich der anderen Zweige. end beendet nur seinen eigenen Zweig.
  • add_tag und remove_tag ändern die Tags des Kontakts. update_score ändert den Lead-Score.
  • update_subscription meldet den Kontakt bei einer Kontaktliste an oder ab, von jeder Kontaktliste ab (nur unsubscribe) oder von allen Marketing-E-Mails (global).
  • remove_from_audience löscht die Mitgliedschaft des Kontakts (mode: "remove", der Standardwert) oder behält ihn als abgemeldet auf der Kontaktliste (mode: "unsubscribe").
  • emit_events (Standardwert true) bei add_to_audience, remove_from_audience, create_contact und edit_contact sendet die üblichen Events subscriber.* und contact.*, sodass Webhooks sie erhalten und andere Automatisierungen starten. Schritte, die vor dem 2026-10-20 gespeichert wurden, haben emit_events: false, und ihre Schritte remove_from_audience haben mode: "unsubscribe".
  • edit_contact erwartet fields: [{ "key": "first_name", "value": "Ada" }]. Die Schlüssel email, first_name, last_name und unsubscribed aktualisieren den Kontakt; jeder andere Schlüssel (mit oder ohne custom_fields.) setzt ein eigenes Feld, umgewandelt in dessen Typ. operation ist set (Standardwert), clear, increment oder decrement.
  • add_to_suppressions sperrt die Adresse des Durchlaufs (Standardwert für type: recipient, für reason: automation). remove_from_suppressions hebt die Sperrung auf. Im Kontext event übergeben Sie email.
  • create_contact erstellt den Kontakt (oder findet den vorhandenen) und meldet ihn optional bei audience_id an. Im Kontext email ist email standardmäßig der Empfänger der E-Mail.

String-Werte in jeder Aktionskonfiguration können Platzhalter enthalten, die Emailit beim Ausführen des Schritts füllt: {{contact.email}}, {{cf.plan}}, {{global.webinar_link}}, {{email.mail_from}}, {{payload.object.subject}} oder {{meta.source_event_id}}, zum Beispiel "to": "{{email.mail_from}}". Vorlagen, die send_email sendet, und ihr subject werden mit Temple gerendert und bieten außerdem direkt die Felder des Kontakts, etwa {{ first_name }}, {{tags}} und {{score}}.

Bedingungen

Ein Filter für condition (ebenso Bedingungen in wait_until und goal sowie exit_conditions) ist { "match": "all" | "any", "rules": [...] }. Eine Regel ist { "field", "operator", "value" } oder eine verschachtelte Gruppe { "match", "rules" }, bis zu 3 Ebenen und 50 Regeln.

field operator value
Kontaktfelder (email, first_name, last_name, created_at, unsubscribed, score), subscribed, custom_fields.<key>, global.<key>, payload.<path>, meta.<path>, contact.<path>, email.<path> equals, not_equals, contains, not_contains, starts_with, ends_with, in, not_in, is_set, is_not_set, greater_than, less_than, greater_or_equal, less_or_equal, is_true, is_false, before, after, on, is_past, is_future, within_last, within_next, more_than_ago, more_than_from_now Der Wert. Tagesoperatoren erwarten eine Anzahl Tage oder { "amount", "unit" }. Nicht nötig für is_set, is_not_set, is_true, is_false, is_past, is_future.
tags contains, not_contains, in, not_in, is_set, is_not_set Ein Tag oder ein Array für in und not_in.
audience is_subscribed, is_not_subscribed, is_member, is_not_member Eine Kontaktlisten-ID (aud_…).
engagement opened, not_opened, clicked, not_clicked "run", "automation", { "scope": "step", "step": "<key>" }, { "scope": "any", "days": 30 } oder { "scope": "campaign", "campaign_id": "cmp_…" }.
segment is_member, is_not_member Eine Segment-ID (seg_…), mit oder ohne Tracking. Alpha.
commerce.<field> Die Segment-Operatoren des Felds, außer fünf, die die Namen aus dieser Tabelle verwenden: greater_or_equal, less_or_equal, within_last, within_next und more_than_ago Der Wert, den die Segmentregel erwartet. Alpha. Siehe unten.

Felder ohne Präfix beziehen sich auf den Kontakt des Durchlaufs (first_name, custom_fields.plan) oder auf die E-Mail (rcpt_to, subject). subscribed ist true, wenn der Kontakt Marketing-E-Mails erhalten kann.

Regeln mit commerce.<field> verwenden die Commerce-Felder von Segmenten und werden genauso ausgewertet: orders_count, total_spent, average_order_value, first_order_at, last_order_at, expected_next_order_at, last_active_at, churn_risk, purchased, viewed_product, used_coupon und cart, zum Beispiel { "field": "commerce.purchased", "operator": "has", "value": { "days": 30, "product_ids": ["sku-1"] } }. Segment- und Commerce-Regeln sind in der Alpha: Andere Anfragen, die sie hinzufügen, geben 403 mit error segments_alpha oder commerce_alpha zurück. Automatisierungen, die sie bereits enthalten, funktionieren für alle weiter.

Rückgabe

Gibt 201 Created mit der Automatisierung in data zurück, einschließlich der ID jedes Schritts (aus_…) und der Verbindungen. status ist draft.

Beim Erstellen wird die Struktur des Graphen geprüft: Trigger- und Aktionsnamen für den Kontext, eindeutige Schlüssel, gültige Verbindungen und Zweige, Erreichbarkeit, die settings und ob jede Absenderadresse from in send_email eine verifizierte Versanddomain verwendet. Nicht geprüft wird, ob jede Aktionskonfiguration vollständig ist; das übernimmt Automatisierung aktualisieren. Fehler geben 400 mit errors zurück, nach Feldpfad gegliedert.

Funktionen, die der Tarif des Workspaces nicht enthält, geben 403 mit error: "plan_required", dem niedrigsten Tarif, der sie enthält, in required_plan und einer message zurück. Schritte goal und Matcher mit contact.on_event in exit_conditions, goal und wait_until erfordern pro, und der Trigger contact.on_event erfordert business.

POST/automations
Terminal
curl -X POST https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series",
    "context": "contact",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "settings": { "allow_reentry": false },
    "steps": [
      {
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "key": "welcome_email",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "key": "wait_1_day",
        "type": "action",
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "key": "is_free_user",
        "type": "action",
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "key": "upgrade_tips",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      { "key": "done", "type": "action", "action": "end" }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email" },
      { "from": "welcome_email", "to": "wait_1_day" },
      { "from": "wait_1_day", "to": "is_free_user" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "draft",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": null,
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T09:41:05.318274+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "id": "aus_3HOgOzxaXBgVRpLFtpvJNo4vd5c",
        "key": "is_free_user",
        "type": "action",
        "trigger": null,
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "id": "aus_3gCI5SWMPFVhOSawR6nz8sF55wp",
        "key": "upgrade_tips",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      {
        "id": "aus_3Pq7Wd2LxN8cVt5RmK0sHy4BfJe",
        "key": "done",
        "type": "action",
        "trigger": null,
        "action": "end",
        "config": {}
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" },
      { "from": "wait_1_day", "to": "is_free_user", "branch": "default" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  },
  "message": "Automation was successfully created.",
  "notify": true
}

Automatisierung abrufen

Ruft eine Automatisierung mit ihrem vollständigen Graphen ab. Erfordert einen API-Schlüssel mit dem Scope full.

GET/automations/{id}

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Rückgabe

Gibt die Automatisierung in data zurück.

idstring
ID der Automatisierung mit dem Präfix aut_.
contextstring
contact, email oder event.
namestring
Name der Automatisierung.
descriptionstring | null
Optionale Beschreibung.
statusstring
draft, running, paused, stopped oder archived.
settingsobject
Regeln für Durchläufe: on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Leer, wenn Sie keine festgelegt haben.
last_triggered_atstring | null
Zeitpunkt, zu dem die Automatisierung zuletzt einen Durchlauf gestartet hat.
published_atstring | null
Zeitpunkt, zu dem die Automatisierung zum ersten Mal gestartet wurde.
stepsobject[]
Für jeden Schritt id (aus_…), key, type, trigger, action und config. Details zu Durchläufen verweisen über id auf Schritte, Statistiken über key.
connectionsobject[]
Für jede Kante die Schrittschlüssel from und to sowie ihr branch.

Was jeder Trigger, jede Aktion und jede Einstellung bedeutet, erfahren Sie unter Automatisierung erstellen. Gibt 404 zurück, wenn die Automatisierung nicht existiert oder gelöscht wurde.

GET/automations/{id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" }
    ]
  }
}

Automatisierung aktualisieren

Aktualisiert Name, Beschreibung, Einstellungen oder Graphen einer Automatisierung. Erfordert einen API-Schlüssel mit dem Scope full. Der Kontext lässt sich nicht ändern.

Um den Graphen zu ändern, senden Sie steps und connections zusammen; sie ersetzen den aktuellen Graphen. Schritte, deren key bereits existiert, behalten ihre ID und ihren Durchlaufverlauf, Schritte, die Sie weglassen, werden gelöscht, und neue Schlüssel werden hinzugefügt. Anders als beim Erstellen wird beim Aktualisieren auch die Konfiguration jeder Aktion validiert (zum Beispiel braucht send_email die Felder type und template_id und wait das Feld seconds). Wenn ein Schritt seinen key und seine Aktion behält, behalten Einstellungen, die Sie in seiner config weglassen, ihre gespeicherten Werte: email_type und tracking bei send_email, emit_events bei Kontaktschritten und mode bei remove_from_audience. Senden Sie eine Einstellung, um sie zu ändern; tracking: {} kehrt zu den Tracking-Einstellungen der Domain zurück.

Pausieren Sie die Automatisierung, bevor Sie den Graphen einer laufenden Automatisierung ändern, und starten Sie sie dann erneut, damit die neuen Trigger wirksam werden.

POST/automations/{id}

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Body-Parameter

namestring
Name, bis zu 191 Zeichen.
descriptionstring
Beschreibung.
settingsobject
Ersetzt alle Einstellungen: exit_conditions, exit_on_audience_removal, on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Siehe Einstellungen. Neue Ausstiegsbedingungen gelten für laufende Durchläufe, auch bei laufenden Automatisierungen.
stepsobject[]
Die vollständige Liste der Schritte. Erforderlich, wenn Sie connections senden. Siehe Schritte.
connectionsobject[]
Die vollständige Liste der Verbindungen. Erforderlich, wenn Sie steps senden. Siehe Verbindungen.

Rückgabe

Gibt die aktualisierte Automatisierung in data zurück, mit message und notify. Gibt bei fehlgeschlagener Validierung 400 mit errors nach Feldpfad zurück, 403 mit error: "plan_required", wenn die Aktualisierung Schritte, Trigger oder Ausstiegsbedingungen hinzufügt, die der Tarif nicht enthält (siehe Automatisierung erstellen), und 404, wenn die Automatisierung nicht existiert. Was die Automatisierung bereits hat, bleibt nach einem Wechsel in einen niedrigeren Tarif erlaubt.

POST/automations/{id}
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series (v2)",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" }
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series (v2)",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:15:22.730115+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully updated.",
  "notify": true
}

Automatisierungen auflisten

Gibt die Automatisierungen des Workspaces zurück, die neuesten zuerst, ohne ihre Schritte und Verbindungen. Erfordert einen API-Schlüssel mit dem Scope full. Gelöschte Automatisierungen werden nicht aufgelistet.

GET/automations

Query-Parameter

pageintegerStandardwert: 1
Seitennummer, beginnend bei 1.
per_pageintegerStandardwert: 25
Automatisierungen pro Seite, von 1 bis 100.
filter[context]string
Nur Automatisierungen mit diesem Kontext: contact, email oder event.
filter[status]string
Nur Automatisierungen mit diesem Status: draft, running, paused, stopped oder archived.
filter[name]string
Abgleich mit einem Teil des Namens, ohne Beachtung der Groß-/Kleinschreibung.
sortstringStandardwert: created_at
Sortierfeld: name, created_at, updated_at oder last_triggered_at.
orderstringStandardwert: desc
Sortierrichtung: asc oder desc.

Sie können auch die allgemeinen Filter der Form key.condition=value auf name, status, context und created_at verwenden, zusammen mit match. Siehe Filtern.

Rückgabe

dataobject[]
Die Automatisierungen auf dieser Seite: id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. settings ist in dieser Liste immer ein leeres Objekt; rufen Sie die Automatisierung ab, um es zu lesen.
total_recordsinteger
Anzahl der passenden Automatisierungen.
per_pageinteger
Verwendete Seitengröße.
current_pageinteger
Die Nummer dieser Seite.
total_pagesinteger
Anzahl der Seiten.
GET/automations
Terminal
curl -G https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=running" \
  -d sort=last_triggered_at \
  -d per_page=50
JSON
{
  "data": [
    {
      "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "context": "contact",
      "name": "Welcome series",
      "description": "Welcome new subscribers, then nudge free users a day later.",
      "status": "running",
      "settings": {},
      "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
      "published_at": "2026-10-01T10:00:02.204118+00:00",
      "created_at": "2026-10-01T09:41:05.318274+00:00",
      "updated_at": "2026-10-03T14:12:40.551870+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 50,
  "current_page": 1,
  "total_pages": 1
}

Automatisierung löschen

Löscht eine Automatisierung. Sie verschwindet aus Listen und reagiert nicht mehr auf Trigger. Erfordert einen API-Schlüssel mit dem Scope full.

Bereits laufende Durchläufe werden nicht abgebrochen. Um sie abzubrechen, stoppen Sie die Automatisierung, bevor Sie sie löschen.

DELETE/automations/{id}

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Rückgabe

Gibt eine message zurück, die das Löschen bestätigt. Gibt 404 zurück, wenn die Automatisierung nicht existiert oder bereits gelöscht wurde.

DELETE/automations/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "message": "Automation was deleted successfully.",
  "notify": true
}

Automatisierung starten

Setzt den Status der Automatisierung auf running. Ab dann starten passende Trigger Durchläufe; Events, die vor dem Start eingetreten sind, nicht. Erfordert einen API-Schlüssel mit dem Scope full.

Sie können eine Automatisierung im Status draft, paused oder stopped starten. Der erste Start setzt published_at. Nur beim ersten Start starten Trigger contact.added_to_segment mit include_current_members: true außerdem einen Durchlauf für jeden Kontakt, der bereits in ihrem Segment mit Tracking ist.

Beim Starten wird der Graph nicht erneut validiert. Wenn Sie die Automatisierung mit Automatisierung erstellen angelegt haben, das nur die Struktur prüft, stellen Sie sicher, dass jede Aktionskonfiguration vollständig ist, oder senden Sie den Graphen einmal über Automatisierung aktualisieren, das ihn vollständig validiert. Ein Schritt mit unvollständiger Konfiguration schlägt fehl, wenn ein Durchlauf ihn erreicht.

POST/automations/{id}/start

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Rückgabe

Gibt die Automatisierung in data zurück, mit status auf running. Gibt 404 zurück, wenn die Automatisierung nicht existiert.

POST/automations/{id}/start
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/start \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T10:00:02.204118+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully started.",
  "notify": true
}

Automatisierung pausieren

Setzt den Status der Automatisierung auf paused. Ihre Trigger starten keine neuen Durchläufe mehr, aber bereits laufende Durchläufe laufen weiter, auch solche, die in einem wait-Schritt warten. Erfordert einen API-Schlüssel mit dem Scope full.

Um auch laufende Durchläufe abzubrechen, stoppen Sie die Automatisierung stattdessen. Starten Sie sie erneut, damit Trigger wieder Durchläufe auslösen.

POST/automations/{id}/pause

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Rückgabe

Gibt die Automatisierung in data zurück, mit status auf paused. Gibt 404 zurück, wenn die Automatisierung nicht existiert.

POST/automations/{id}/pause
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/pause \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:10:51.004732+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully paused.",
  "notify": true
}

Automatisierung stoppen

Setzt den Status der Automatisierung auf stopped und bricht jeden Durchlauf ab, der noch running ist; diese Durchläufe erhalten den Status canceled, und ihre restlichen Schritte werden nicht ausgeführt. Erfordert einen API-Schlüssel mit dem Scope full.

Stoppen ist nur per API möglich. Um laufende Durchläufe weiterlaufen zu lassen, pausieren Sie die Automatisierung stattdessen. Sie können eine gestoppte Automatisierung erneut starten; neue Durchläufe beginnen dann von vorn.

POST/automations/{id}/stop

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Rückgabe

Gibt die Automatisierung in data zurück, mit status auf stopped. Gibt 404 zurück, wenn die Automatisierung nicht existiert.

POST/automations/{id}/stop
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stop \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "stopped",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-05T16:45:09.882301+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully stopped.",
  "notify": true
}

Durchlauf auslösen

Löst den Trigger system.manual mit einem Payload Ihrer Wahl aus. Die Automatisierung muss running sein und einen Trigger-Schritt system.manual haben, sonst startet kein Durchlauf. Erfordert einen API-Schlüssel mit dem Scope full. Manuelle Trigger sind nur per API verfügbar.

Der Durchlauf startet asynchron und kostet wie jeder andere Durchlauf 3 Credits. Sie finden ihn über Durchläufe auflisten.

POST/automations/{id}/trigger

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Body-Parameter

payloadobject

Daten für den Durchlauf. Emailit ergänzt automation_id und speichert das Ergebnis als payload des Durchlaufs. Schritte können ihn mit Platzhaltern wie {{payload.order_id}} und in Bedingungen wie payload.plan lesen.

Worum es im Durchlauf geht, hängt vom Kontext der Automatisierung ab:

  • contact: Übergeben Sie contact_id (con_…). Kontaktaktionen und send_email verwenden diesen Kontakt.
  • email: Übergeben Sie email_id (em_…). E-Mail-Aktionen verwenden diese E-Mail.
  • event: beliebige Daten. Setzen Sie to oder email in den Aktionskonfigurationen, zum Beispiel "to": "{{payload.customer_email}}".

Rückgabe

Gibt 200 mit einer message zurück, sobald der Trigger in die Warteschlange gestellt ist. Gibt 422 zurück, wenn die Automatisierung nicht running ist, und 404, wenn sie nicht existiert.

POST/automations/{id}/trigger
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/trigger \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "plan": "pro",
      "order_id": "ord_1042"
    }
  }'
JSON
{
  "message": "Automation trigger dispatched."
}

Durchläufe auflisten

Gibt die Durchläufe einer Automatisierung zurück, die neuesten zuerst. Jeder Durchlauf ist ein Durchgang durch den Graphen, gestartet von einem Trigger. Erfordert einen API-Schlüssel mit dem Scope full.

GET/automations/{id}/runs

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Query-Parameter

pageintegerStandardwert: 1
Seitennummer, beginnend bei 1.
per_pageintegerStandardwert: 25
Durchläufe pro Seite, von 1 bis 100.
filter[status]string
Nur Durchläufe mit diesem Status: running, completed, failed oder canceled.
filter[contact_id]string
Nur Durchläufe dieses Kontakts (con_…). Die Durchläufe eines Kontakts in allen Automatisierungen liefert Durchläufe eines Kontakts auflisten.

Sie können auch mit key.condition=value auf status, event und created_at filtern (zum Beispiel created_at.after=2026-10-01) und mit order und direction nach denselben Schlüsseln sortieren. Siehe Filtern.

Rückgabe

dataobject[]
Die Durchläufe auf dieser Seite. Siehe die Felder unten.
total_records, per_page, current_page, total_pagesinteger
Angaben zur Paginierung.

Jeder Durchlauf hat:

idstring
ID des Durchlaufs mit dem Präfix aur_.
automation_idstring
Die Automatisierung (aut_…).
contact_idstring | null
Der Kontakt des Durchlaufs (con_…) im Kontext contact.
email_idstring | null
Die E-Mail des Durchlaufs (em_…) im Kontext email.
event_idstring | null
ID des auslösenden Events, wenn der Trigger-Payload eine enthält.
eventstring
Der Trigger, der den Durchlauf gestartet hat, zum Beispiel contact.added_to_audience oder system.manual.
payloadobject
In dieser Liste immer ein leeres Objekt. Rufen Sie den Durchlauf ab, um seinen Trigger-Payload zu lesen.
metaobject
In dieser Liste immer ein leeres Objekt. Rufen Sie den Durchlauf ab, um seine Metadaten zu lesen, etwa failure_reason.
statusstring
running, completed, failed oder canceled.
cancel_reasonstring | null
Warum ein abgebrochener Durchlauf beendet wurde: exit_condition, left_audience, canceled_by_user (oder der von Ihnen gesendete reason), exited_by_api, exited_by_automation, automation_stopped oder contact_deleted.
started_at, completed_at, created_at, updated_atstring | null
Zeitstempel in UTC.
GET/automations/{id}/runs
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=failed"
JSON
{
  "data": [
    {
      "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
      "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "email_id": null,
      "event_id": null,
      "event": "contact.added_to_audience",
      "payload": {},
      "meta": {},
      "status": "failed",
      "started_at": "2026-10-03T14:12:40.551870+00:00",
      "completed_at": "2026-10-03T14:12:41.093355+00:00",
      "created_at": "2026-10-03T14:12:40.551870+00:00",
      "updated_at": "2026-10-03T14:12:41.093355+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 25,
  "current_page": 1,
  "total_pages": 1
}

Durchlauf abrufen

Ruft einen Durchlauf einer Automatisierung ab, einschließlich der ausgeführten Schritte. Erfordert einen API-Schlüssel mit dem Scope full.

GET/automations/{id}/runs/{run_id}

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).
run_idstringerforderlich
Die ID des Durchlaufs (aur_…).

Rückgabe

Gibt den Durchlauf in data zurück, mit den unter Durchläufe auflisten beschriebenen Feldern sowie dem vollständigen payload und meta, einem Array run_steps und einem Array waits.

payloadobject | null
Der Trigger-Payload: die Event-Daten ({ "object": { … } }) oder der Payload, den Sie an Durchlauf auslösen übergeben haben, ergänzt um automation_id.
metaobject | null
source_event_id verknüpft den Durchlauf mit dem Event, das ihn gestartet hat. Fehlgeschlagene Durchläufe können failure_reason enthalten: insufficient_credits (die 3 Credits für den Durchlauf konnten nicht abgebucht werden) oder run_timeout (der Durchlauf war nach 72 Stunden noch running, ohne dass ein Schritt wartete). Abgebrochene Durchläufe haben cancel_reason, und abgeschlossene Durchläufe, die vorzeitig endeten, haben ended_by, etwa end_run_step, moved_to_automation oder goal_not_met. Durchläufe, die eine andere Automatisierung gestartet hat, haben depth und entweder parent_run_id (gestartet von einem Schritt Start automation) oder caused_by (gestartet durch eine Änderung, die ein Schritt vorgenommen hat).
run_stepsobject[]

Ein Eintrag pro Schritt, den der Durchlauf erreicht hat:

  • step_id: die ID des Schritts (aus_…), dazu step_key und action, Schlüssel und Aktion des Schritts.
  • status: running, waiting (ein Schritt wait oder wait_until, der noch nicht abgeschlossen ist), completed, failed, skipped (übergangen, weil der Durchlauf zu einem Ziel gesprungen ist oder vorzeitig endete) oder canceled.
  • outcome: das Ergebnis, zum Beispiel der aktuelle Status der E-Mail, die ein Schritt send_email gesendet hat (delivered, loaded, clicked…), skipped für eine Marketing-E-Mail an einen abgemeldeten Kontakt, matched oder not_matched für eine Bedingung, matched oder timeout für ein wait_until oder reached oder not_reached für ein Ziel.
  • data: das Ergebnis des Schritts. Zum Beispiel gibt send_email { "result": "email_queued", "email_oid": "em_…", "to": "…" } zurück, condition gibt { "result": true, "branch": "yes" } zurück, und fehlgeschlagene Schritte geben { "error": "…" } zurück.
  • started_at, completed_at, created_at.
waitsobject[]

Die Wartezustände des Durchlaufs aus wait_until (Event oder Bedingung) und goal: id, step_key, kind (event oder condition), event, status (waiting, matched, timed_out oder canceled), timeout_at, created_at und resolved_at.

Gibt 404 zurück, wenn die Automatisierung oder der Durchlauf nicht existiert.

GET/automations/{id}/runs/{run_id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs/aur_3q6GdFk2eRSG093grI0v9e6REu8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
    "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
    "email_id": null,
    "event_id": null,
    "event": "contact.added_to_audience",
    "payload": {
      "object": {
        "id": "sub_3Fh2pQx9LmZr4Wt7Nc0bVd8KsYe",
        "object": "subscriber",
        "subscribed": true,
        "audience": { "id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "name": "Newsletter" },
        "contact": { "id": "con_3munwNLaXKUARc6ff9wPtxKVq4A", "email": "ada@example.com" }
      }
    },
    "meta": { "source_event_id": "evt_3Kd8sWq1NzXc5Vb7Mt2LpRy0HgA" },
    "status": "running",
    "started_at": "2026-10-03T14:12:40.551870+00:00",
    "completed_at": null,
    "created_at": "2026-10-03T14:12:40.551870+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "run_steps": [
      {
        "step_id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "status": "completed",
        "data": {
          "result": "email_queued",
          "outcome": "accepted",
          "email_oid": "em_3Cp8cMgPskzB8tIlgUyNJkpDp9O",
          "to": "ada@example.com"
        },
        "started_at": "2026-10-03T14:12:40.702113+00:00",
        "completed_at": "2026-10-03T14:12:40.918540+00:00",
        "created_at": "2026-10-03T14:12:40.702113+00:00"
      },
      {
        "step_id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "status": "waiting",
        "data": { "status": "waiting", "delayMs": 86400000, "seconds": 86400 },
        "started_at": "2026-10-03T14:12:41.004221+00:00",
        "completed_at": null,
        "created_at": "2026-10-03T14:12:41.004221+00:00"
      }
    ]
  }
}

Durchlauf abbrechen

Bricht einen Durchlauf ab, der noch running ist. Schritte, die in einem Time delay oder Wait until warten, werden abgebrochen, es laufen keine weiteren Schritte, und der Status des Durchlaufs wird canceled. Erfordert einen API-Schlüssel mit dem Scope full.

Abgebrochene Durchläufe lassen sich nicht fortsetzen. Um alle Durchläufe eines Kontakts in der Automatisierung abzubrechen, verwenden Sie Kontakt entfernen. Um Durchläufe automatisch abzubrechen, verwenden Sie Ausstiegsbedingungen.

POST/automations/{id}/runs/{run_id}/cancel

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).
run_idstringerforderlich
Die ID des Durchlaufs (aur_…).

Body-Parameter

reasonstringStandardwert: canceled_by_user
Wird als cancel_reason des Durchlaufs gespeichert, bis zu 200 Zeichen.

Rückgabe

Gibt den Durchlauf in data zurück, mit status canceled und cancel_reason. Gibt 404 zurück, wenn die Automatisierung oder der Durchlauf nicht existiert, und 422, wenn der Durchlauf nicht läuft.

POST/automations/{id}/runs/{run_id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/runs/aur_7Kp2Vx9mQt4Lw/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Customer asked to stop"}'

Kontakt aus einer Automatisierung entfernen

Bricht jeden Durchlauf dieser Automatisierung ab, der für einen Kontakt noch running ist, zum Beispiel aus Ihrem Shop, wenn eine Bestellung bezahlt ist. Die Durchläufe erhalten den Status canceled. Erfordert einen API-Schlüssel mit dem Scope full.

Um Kontakte automatisch herauszunehmen, wenn etwas passiert, verwenden Sie stattdessen Ausstiegsbedingungen.

POST/automations/{id}/exit

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Body-Parameter

contact_idstring
Die ID des Kontakts (con_…). Senden Sie diesen Parameter oder email.
emailstring
Die E-Mail-Adresse des Kontakts.
reasonstringStandardwert: exited_by_api
Wird als cancel_reason jedes Durchlaufs gespeichert, bis zu 200 Zeichen.

Rückgabe

dataobject
automation_id, contact_id und canceled_runs, die IDs der abgebrochenen Durchläufe. Leer, wenn der Kontakt keine laufenden Durchläufe hatte.
messagestring
Zum Beispiel Canceled 1 run.

Gibt ohne contact_id oder email 400 zurück und 404, wenn die Automatisierung oder der Kontakt nicht existiert.

POST/automations/{id}/exit
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/exit \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "ada@example.com"}'

Durchläufe eines Kontakts auflisten

Gibt die neuesten 100 Durchläufe eines Kontakts in allen Automatisierungen zurück, die neuesten zuerst, jeweils mit dem Namen der Automatisierung. Erfordert einen API-Schlüssel mit dem Scope full.

GET/automations/runs

Query-Parameter

contact_idstring
Die ID des Kontakts (con_…). Senden Sie diesen Parameter oder email.
emailstring
Die E-Mail-Adresse des Kontakts.
statusstring
Nur Durchläufe mit diesem Status: running, completed, failed oder canceled.

Rückgabe

dataobject[]
Die Durchläufe, im selben Format wie bei Durchläufe auflisten, zusätzlich mit automation_name.

Gibt ohne contact_id oder email 400 zurück und 404, wenn der Kontakt nicht existiert.

GET/automations/runs
Terminal
curl "https://api.emailit.com/v2/automations/runs?email=ada@example.com&status=running" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"

Statistiken abrufen

Gibt Zählwerte für jeden Schritt einer Automatisierung zurück, nach Schrittschlüssel geordnet. Erfordert einen API-Schlüssel mit dem Scope full.

GET/automations/{id}/stats

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).

Query-Parameter

sincestring
Nur Schrittausführungen zählen, die zu oder nach diesem Zeitpunkt erstellt wurden. Datum und Uhrzeit nach RFC 3339, zum Beispiel 2026-10-01T00:00:00Z.
untilstring
Nur Schrittausführungen zählen, die zu oder vor diesem Zeitpunkt erstellt wurden. Datum und Uhrzeit nach RFC 3339.
run_ids[]string
Nur diese Durchläufe zählen (aur_…). Wiederholen Sie den Parameter für mehrere Durchläufe.

Rückgabe

Gibt data zurück, ein Objekt mit einem Eintrag pro Schrittschlüssel. Schritte, die kein Durchlauf erreicht hat, haben total mit dem Wert 0.

totalinteger
Wie oft Durchläufe den Schritt erreicht haben.
by_statusobject
Zählwerte pro Schrittstatus: running, waiting, completed, failed.
by_outcomeobject
Zählwerte pro Ergebnis. send_email und forward_email: accepted, dann der letzte Zustand der E-Mail (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition: matched, not_matched. experiment: der Schlüssel der gewählten Variante. call_webhook: 2xx, 4xx, 5xx, timeout, network_error. Fehlgeschlagene Schritte: error.
funnelobject
Nur für Schritte vom Typ send_email. Kumulierte Zählwerte: accepted umfasst jede E-Mail, die weiter gekommen ist, delivered umfasst geladene und geklickte E-Mails, und loaded umfasst geklickte. bounced, failed, complained und unsubscribed sind einfache Zählwerte.
GET/automations/{id}/stats
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d since=2026-10-01T00:00:00Z
JSON
{
  "data": {
    "joined": { "total": 0, "by_status": {}, "by_outcome": {} },
    "welcome_email": {
      "total": 412,
      "by_status": { "completed": 409, "failed": 3 },
      "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
      "funnel": {
        "accepted": 390,
        "delivered": 390,
        "loaded": 139,
        "clicked": 41,
        "bounced": 19,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "wait_1_day": {
      "total": 409,
      "by_status": { "completed": 352, "waiting": 57 },
      "by_outcome": {}
    },
    "is_free_user": {
      "total": 352,
      "by_status": { "completed": 352 },
      "by_outcome": { "matched": 270, "not_matched": 82 }
    },
    "upgrade_tips": {
      "total": 270,
      "by_status": { "completed": 270 },
      "by_outcome": { "accepted": 12, "delivered": 180, "loaded": 61, "clicked": 17 },
      "funnel": {
        "accepted": 270,
        "delivered": 258,
        "loaded": 78,
        "clicked": 17,
        "bounced": 0,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "done": {
      "total": 82,
      "by_status": { "completed": 82 },
      "by_outcome": {}
    }
  }
}

Schrittstatistiken abrufen

Gibt die Zählwerte für einen Schritt einer Automatisierung zurück. Erfordert einen API-Schlüssel mit dem Scope full. Die Felder sind dieselben wie unter Statistiken abrufen.

GET/automations/{id}/steps/{step_key}/stats

Pfadparameter

idstringerforderlich
Die ID der Automatisierung (aut_…).
step_keystringerforderlich
Der key des Schritts, zum Beispiel welcome_email.

Query-Parameter

sincestring
Nur Schrittausführungen zählen, die zu oder nach diesem Zeitpunkt erstellt wurden. Datum und Uhrzeit nach RFC 3339.
untilstring
Nur Schrittausführungen zählen, die zu oder vor diesem Zeitpunkt erstellt wurden. Datum und Uhrzeit nach RFC 3339.

Rückgabe

Gibt data mit total, by_status, by_outcome und bei Schritten vom Typ send_email mit funnel zurück. Gibt 404 zurück, wenn die Automatisierung oder der Schrittschlüssel nicht existiert.

GET/automations/{id}/steps/{step_key}/stats
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/steps/welcome_email/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "total": 412,
    "by_status": { "completed": 409, "failed": 3 },
    "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
    "funnel": {
      "accepted": 390,
      "delivered": 390,
      "loaded": 139,
      "clicked": 41,
      "bounced": 19,
      "failed": 0,
      "complained": 0,
      "unsubscribed": 0
    }
  }
}

War diese Seite hilfreich?

Danke für Ihr Feedback.

Danke, wir lesen jede Nachricht.