Automatisierungen
E-Mails und Schritte, die für jeden Kontakt von selbst ablaufen, und die Ereignisse, die sie starten.
Automatisierungs-Tools
| Tool | Was es tut |
|---|---|
| listAutomations | Die Automatisierungen des Workspace, zuletzt geänderte zuerst, mit ihrem Status, dem, was jede startet, und der Zahl der Kontakte darin. |
| getAutomation | Eine Automatisierung vollständig: ihr Status, ihre Einstellungen und Zahlen, was an ihrem Entwurf nicht stimmt, und die Entwurfsdefinition als JSON. includePublished fügt die Version hinzu, die gerade läuft. |
| listAutomationStarters | Die fertigen Automatisierungen, von denen eine neue ausgehen kann, jede mit ihrer Definition. |
| createAutomation | Einen Entwurf aus einem Ausgangspunkt, aus einer als JSON geschriebenen Definition oder leer erstellen, mit beliebigen Einstellungen. Nichts läuft, bis er veröffentlicht ist. |
| updateAutomation | Den Namen und die Einstellungen einer Automatisierung ändern, die sofort gelten, oder ihre Entwurfsdefinition ersetzen. Eine aktive Automatisierung läuft mit ihrer veröffentlichten Version weiter. |
| deleteAutomation | Eine Automatisierung endgültig löschen, mit ihren Versionen, Teilnahmen und Zahlen. Kontakte darin halten sofort an. |
| publishAutomation | Den Entwurf zur laufenden Version machen und die Automatisierung einschalten. Ein unvollständiger Entwurf wird mit jedem Problem abgelehnt, das ihn blockiert. Erfordert außerdem emails:send. |
| pauseAutomation | Eine aktive Automatisierung anhalten. Niemand Neues tritt ein, und alle darin bleiben, wo sie sind. |
| resumeAutomation | Eine pausierte Automatisierung mit der Version wieder einschalten, die zuletzt lief. Erfordert außerdem emails:send. |
| archiveAutomation | Eine Automatisierung endgültig stilllegen und ihren Verlauf behalten. Alle darin verlassen sie. |
| duplicateAutomation | Eine Automatisierung in einen neuen Entwurf kopieren, ohne ihre Versionen, Kontakte und Zahlen. |
| sendAutomationTest | Die E-Mail eines Schritts des Entwurfs an sich selbst oder an eine Adresse senden. Erfordert außerdem emails:send. |
| listAutomationVersions | Die veröffentlichten Versionen, neueste zuerst, und welche davon läuft. includeDefinitions fügt jede Definition hinzu. |
| restoreAutomationVersion | Eine frühere Version zurück in den Entwurf kopieren. Was gerade läuft, ändert sich erst mit der nächsten Veröffentlichung. |
| getAutomationStats | Kontakte, die eingetreten, gerade darin, fertig oder ausgetreten sind, und E-Mails, die gesendet, zugestellt, geöffnet und geklickt wurden, über einen Zeitraum, insgesamt und pro Schritt. |
| listAutomationEnrollments | Die Kontakte, die in einer Automatisierung sind oder waren, seitenweise, mit dem Schritt, bei dem jeder steht, und wie es endete. Nach Status, Schritt oder einem Teil der Adresse filtern. |
| getAutomationEnrollment | Der Weg eines Kontakts durch eine Automatisierung: was jeder Schritt für ihn getan hat, älteste zuerst. |
| enrollInAutomation | Einen Kontakt beim ersten Schritt in eine aktive Automatisierung aufnehmen, egal was sie sonst startet. |
| removeFromAutomation | Einen Kontakt sofort aus einer Automatisierung nehmen. |
| sendContactEvent | Erfassen, dass bei einem Kontakt etwas passiert ist. Das startet die aktiven Automatisierungen, deren Auslöser das Ereignis nennt, und beendet die Wartezeiten, die darauf gewartet haben. |
| sendContactEvents | Bis zu 100 Ereignisse in einem Aufruf erfassen. Schlägt eines fehl, hält das die übrigen nicht auf. |
| listContactEventNames | Die Ereignisnamen, die der Workspace in den letzten 90 Tagen erfasst hat. |
| listContactEvents | Die für einen Kontakt erfassten Ereignisse, neueste zuerst, seitenweise. |
Lesen erfordert automations:read und jede Änderung erfordert automations:write. Veröffentlichen, Fortsetzen und das Senden eines Tests erfordern außerdem emails:send, weil die Automatisierung danach Mail für denjenigen sendet, der sie veröffentlicht hat. Ein Ereignis zu senden erfordert contacts:write, die Ereignisse eines Kontakts zu lesen erfordert contacts:read, und listContactEventNames erfordert automations:read. Ein Client, der für ein Mitglied handelt, sieht nur die Automatisierungen, die dieses Mitglied erstellt hat, und die Kontakte, die es hinzugefügt hat.
Einige Tools auf diesem Server nehmen eine Änderung vor, die die REST API mit einem Bestätigungscode schützt, und fragen nach demselben Code. Solange der Client in den letzten 60 Minuten keinen Code bestätigt hat und die Person für ihn unter Konto → Verbundene Apps nicht Änderungen für 60 Minuten erlauben gewählt hat, antwortet ein solches Tool mit einem Ergebnis, das mit Refused (step_up_required): beginnt, und ändert nichts. emptyAudience fragt nie nach einem Code. Die Seite Authentifizierung der API nennt jedes Tool, das fragt, und zeigt, wie man einen Code anfordert und bestätigt.
Die Tools wenden dieselben Regeln und Ablehnungen an wie die REST-API, und die Seiten /automations und /events der API-Referenz beschreiben jedes Feld. Eine Definition wird als Ganzes als JSON übergeben: Lesen Sie sie mit getAutomation, ändern Sie sie und übergeben Sie sie vollständig an updateAutomation.
Referenz
listAutomationsgetAutomationlistAutomationStarterscreateAutomationupdateAutomationdeleteAutomationpublishAutomationpauseAutomationresumeAutomationarchiveAutomationduplicateAutomationsendAutomationTestlistAutomationVersionsrestoreAutomationVersiongetAutomationStatslistAutomationEnrollmentsgetAutomationEnrollmentenrollInAutomationremoveFromAutomationsendContactEventsendContactEventslistContactEventNameslistContactEvents
listAutomations
List the automations in this workspace, the most recently changed first: name, id, status (draft, live, paused or archived), what starts each one, its steps and how many contacts are in it now, completed it or left early. Use it to find an automation by name before reading or changing it. One page at a time: when more follow, the last line gives a cursor to pass back.
Eingaben
statusstring- Einer von
"draft""live""paused""archived" limitinteger- Mindestens 1Höchstens 100
cursorstring- 1 bis 64 Zeichen
Auch verfügbar über
- API
GET /automations- TypeScript
automations.list()automations.listAll()automations.iterate()- Python
automations.list()automations.list_all()automations.iterate()- Ruby
automations.listautomations.list_allautomations.iterate- PHP
automations->listautomations->listAllautomations->iterate- Go
Automations.ListAutomations.ListAllAutomations.Iterate- Java
automations().listautomations().listAllautomations().iterate- C#
Automations.ListAsyncAutomations.ListAllAsyncAutomations.IterateAsync
getAutomation
Read one automation: its status, settings, numbers, what is wrong with its draft, and the draft definition (trigger and steps) as JSON, to change and pass back to updateAutomation. includePublished adds the definition of the version that is running, which differs from the draft while there are unpublished changes.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenincludePublishedboolean- Standard
false
Auch verfügbar über
listAutomationStarters
The ready-made automations a new one can begin from, such as a welcome series or a birthday note: slug, name, what each is for and its definition as JSON. Pass a slug to createAutomation as starter. A starter leaves the audience, the templates and the from address empty to fill in.
Eingaben
Nimmt keine Eingaben an.
Auch verfügbar über
createAutomation
Create an automation as a draft: from a starter (listAutomationStarters names them), from a definition written out as JSON, or empty. Nothing runs until publishAutomation. The answer lists what the draft still needs before it can be published, such as a template or a from address for each email. Find audiences with listAudiences, templates with listTemplates and forms with listForms.
Eingaben
namestringErforderlichA short name for the automation. Contacts never see it.
1 bis 120 ZeichendescriptionstringOne line about what it is for.
Bis zu 500 Zeichenstarterstring- 1 bis 64 Zeichen
definitionRecord<string, any> | stringThe trigger and steps as JSON: {"trigger": {...}, "entry": "<key of the first step>", "steps": [...]}. Triggers: {"kind": "audience_joined", "audienceId", "includeImported": false}, {"kind": "form_submitted", "formId"}, {"kind": "event", "eventName", "filters": []}, {"kind": "date", "field": "birthday" or "joined", "audienceId", "offsetDays": 0} and {"kind": "manual"}. Every step has a unique key of 3 to 24 lowercase letters and digits starting with a letter, and points at the next step by key in next, or null to end the path. Steps: {"kind": "send_email", "key", "next", "templateId", "templateVersion": null, "from": {"email", "name"}, "replyTo": null, "subject": null, "props": {}}, {"kind": "wait", "key", "next", "wait": {"mode": "duration", "amount": 3, "unit": "days"}}, {"kind": "branch", "key", "condition": {"kind": "email_clicked", "stepKey"}, "yes", "no"}, {"kind": "add_to_audience" or "remove_from_audience", "key", "next", "audienceId"}, {"kind": "update_field", "key", "next", "field", "value": {"source": "static", "value"}}, {"kind": "webhook", "key", "next", "endpointId"} and {"kind": "exit", "key"}. A wait can also be {"mode": "until", "weekdays": [1], "hour": 9, "minute": 0} or {"mode": "event", "eventName", "timeout": {"amount": 7, "unit": "days"}}. Conditions: email_opened and email_clicked with stepKey, in_audience with audienceId, field with field, operator and value, and event with eventName and withinDays. A props value is {"source": "static", "value"}, {"source": "contact", "field"} or {"source": "event", "path"}. Paths never join or loop. getAutomation shows a saved definition in this shape, and listAutomationStarters has ready-made ones.
settingsRecord<string, any> | stringHow it runs, as JSON with any of: timezone (an IANA zone such as Europe/London), sendWindow ({"days": [1, 2, 3, 4, 5], "startMinute": 540, "endMinute": 1020} or null for any time), reentryDays (days after finishing before a contact may enter again, or null for once only), exitOnLeave (true takes a contact out when they leave the audience that started it) and listAudienceId (the audience unsubscribes are recorded in).
Auch verfügbar über
updateAutomation
Change an automation. Its name, description and settings apply at once. definition replaces the whole draft, so start from getAutomation, change the JSON and pass all of it back. A live automation keeps running its published version until publishAutomation, and contacts already in it stay on the version they entered on. Pass only what changes.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichennamestring- 1 bis 120 Zeichen
descriptionstring- Kann null seinBis zu 500 Zeichen
definitionRecord<string, any> | stringThe trigger and steps as JSON: {"trigger": {...}, "entry": "<key of the first step>", "steps": [...]}. Triggers: {"kind": "audience_joined", "audienceId", "includeImported": false}, {"kind": "form_submitted", "formId"}, {"kind": "event", "eventName", "filters": []}, {"kind": "date", "field": "birthday" or "joined", "audienceId", "offsetDays": 0} and {"kind": "manual"}. Every step has a unique key of 3 to 24 lowercase letters and digits starting with a letter, and points at the next step by key in next, or null to end the path. Steps: {"kind": "send_email", "key", "next", "templateId", "templateVersion": null, "from": {"email", "name"}, "replyTo": null, "subject": null, "props": {}}, {"kind": "wait", "key", "next", "wait": {"mode": "duration", "amount": 3, "unit": "days"}}, {"kind": "branch", "key", "condition": {"kind": "email_clicked", "stepKey"}, "yes", "no"}, {"kind": "add_to_audience" or "remove_from_audience", "key", "next", "audienceId"}, {"kind": "update_field", "key", "next", "field", "value": {"source": "static", "value"}}, {"kind": "webhook", "key", "next", "endpointId"} and {"kind": "exit", "key"}. A wait can also be {"mode": "until", "weekdays": [1], "hour": 9, "minute": 0} or {"mode": "event", "eventName", "timeout": {"amount": 7, "unit": "days"}}. Conditions: email_opened and email_clicked with stepKey, in_audience with audienceId, field with field, operator and value, and event with eventName and withinDays. A props value is {"source": "static", "value"}, {"source": "contact", "field"} or {"source": "event", "path"}. Paths never join or loop. getAutomation shows a saved definition in this shape, and listAutomationStarters has ready-made ones.
settingsRecord<string, any> | stringHow it runs, as JSON with any of: timezone (an IANA zone such as Europe/London), sendWindow ({"days": [1, 2, 3, 4, 5], "startMinute": 540, "endMinute": 1020} or null for any time), reentryDays (days after finishing before a contact may enter again, or null for once only), exitOnLeave (true takes a contact out when they leave the audience that started it) and listAudienceId (the audience unsubscribes are recorded in).
expectedUpdatedAtstringThe Updated time getAutomation gave. When somebody saved the automation since, the change is refused instead of written over theirs.
Formatdate-time
Auch verfügbar über
deleteAutomation
Delete an automation for good, with its versions, its enrollments and its numbers. Contacts in it stop at once. The emails it already sent stay. It cannot be undone: to retire one and keep its history, use archiveAutomation.
- Fragt nach einem Bestätigungscode
DELETE /automations/{id}
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
publishAutomation
Publish an automation: its draft becomes the version that runs and it goes live, so its trigger starts putting contacts in and its emails start going out. Use it for a first publish and to put later changes to work. The draft has to be complete, and a refusal lists every problem that blocks it. Contacts already in it stay on the version they entered on.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
pauseAutomation
Pause a live automation. Nobody new enters, and everyone in it stays where they are and moves on when it is resumed with resumeAutomation.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
resumeAutomation
Turn a paused automation back on with the version it was running, without publishing the draft. Contacts that were held move on and its emails go out again. One that was paused because something it needs went away stays paused until that is fixed, and the refusal says what.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
archiveAutomation
Retire an automation for good and keep its history. Everyone in it leaves, nobody enters again and it can no longer be changed, published or resumed. Its versions, enrollments and numbers stay readable. To stop one for a while, use pauseAutomation.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
duplicateAutomation
Copy an automation into a new draft with "(copy)" after its name: the same draft definition and settings, and none of its versions, contacts or numbers.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichen
Auch verfügbar über
sendAutomationTest
Send the email of one step of the draft to one address, to read it before publishing. It goes to the user's own account address unless to names another. Contact values come from a sample contact, the subject starts with [Test], and nobody is enrolled. It counts toward the monthly sends.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenstepKeystringErforderlichThe key of the email step, from the definition getAutomation returns.
1 bis 64 ZeichentostringWhere the test goes, when not to the user themselves.
Bis zu 320 ZeichenFormatemail
Auch verfügbar über
listAutomationVersions
The published versions of an automation, the newest first: number, when it was published and whether it is the one running. includeDefinitions adds each definition as JSON. restoreAutomationVersion copies one back into the draft.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenincludeDefinitionsboolean- Standard
false
Auch verfügbar über
restoreAutomationVersion
Copy the definition of an earlier version back into the draft, replacing what the draft holds. Nothing that is running changes until publishAutomation.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenversionintegerErforderlichThe version number, from listAutomationVersions.
Mindestens 1
Auch verfügbar über
getAutomationStats
How one automation did over a window, 30 days by default: contacts that entered, are in it now, completed it or left early, emails sent, delivered, opened, clicked, bounced and marked as spam, and unsubscribes, in total and for each step. Opens are a floor, because many mail apps hide them. includeDaily adds a line for each day.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichensincestringWhere the window starts, as an ISO 8601 instant.
Formatdate-timeuntilstringWhere the window ends, as an ISO 8601 instant. Left out, now.
Formatdate-timeincludeDailyboolean- Standard
false
Auch verfügbar über
listAutomationEnrollments
The contacts that are in an automation or have been, the most recent entry first: which step each is at, what they are waiting for, what holds a step that is due, when they move next and how it ended. Narrow it by status, by step or by a piece of the address or name. One page at a time: when more follow, the last line gives a cursor.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 Zeichenstatusstring- Einer von
"active""completed""exited" stepKeystring- 1 bis 64 Zeichen
qstring- Bis zu 200 Zeichen
limitinteger- Mindestens 1Höchstens 200
cursorstring- 1 bis 64 Zeichen
Auch verfügbar über
- API
GET /automations/{id}/enrollments- TypeScript
automations.listEnrollments()automations.listAllEnrollments()automations.iterateEnrollments()- Python
automations.list_enrollments()automations.list_all_enrollments()automations.iterate_enrollments()- Ruby
automations.list_enrollmentsautomations.list_all_enrollmentsautomations.iterate_enrollments- PHP
automations->listEnrollmentsautomations->listAllEnrollmentsautomations->iterateEnrollments- Go
Automations.ListEnrollmentsAutomations.ListAllEnrollmentsAutomations.IterateEnrollments- Java
automations().listEnrollmentsautomations().listAllEnrollmentsautomations().iterateEnrollments- C#
Automations.ListEnrollmentsAsyncAutomations.ListAllEnrollmentsAsyncAutomations.IterateEnrollmentsAsync
getAutomationEnrollment
One contact's way through an automation: where they are, and what each step did for them, oldest first, such as an email sent, a wait, a yes or no at a branch, or why a step was skipped or failed.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenenrollmentIdstringErforderlichThe enrollment, by id (aen_...), from listAutomationEnrollments.
1 bis 64 Zeichen
Auch verfügbar über
enrollInAutomation
Put one contact into a live automation at its first step, whatever starts it normally, so its emails start going to them. The contact has to exist already. A contact is in an automation once at a time, and an address that is suppressed or unsubscribed is refused.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenemailstringErforderlichThe contact to enroll, by email address.
Bis zu 320 ZeichenFormatemaildataRecord<string, any>Values the steps read wherever a value comes from the event, such as an order number. At most 50 keys and 4 KB of JSON.
Auch verfügbar über
removeFromAutomation
Take one contact out of an automation at once, by the id of their enrollment from listAutomationEnrollments. They get nothing more from it, and stay in the contacts and in their audiences.
Eingaben
idstringErforderlichThe automation, by id (aut_...). listAutomations finds it by name.
1 bis 64 ZeichenenrollmentIdstringErforderlichThe enrollment, by id (aen_...), from listAutomationEnrollments.
1 bis 64 Zeichen
Auch verfügbar über
sendContactEvent
Record that something happened to one contact, such as order.placed or trial.started. Every live automation that starts on that event name takes the contact in, so its emails start going to them, and a wait step holding out for the name moves on. The answer says which automations it started. Events are kept for 90 days.
Eingaben
namestringErforderlichWhat happened, such as order.placed: letters, digits, dots, colons, dashes and underscores. Names are matched exactly, case included.
1 bis 100 ZeichenemailstringErforderlichThe contact the event is about, by email address.
Bis zu 320 ZeichenFormatemailpropertiesRecord<string, any>Details of the event as a JSON object, at most 50 keys and 4 KB. An event trigger can filter on them and steps can use them.
occurredAtstringWhen it happened, as an ISO 8601 instant. Left out, it is now. Not in the future, and at most 90 days ago.
Formatdate-timecreateContactbooleantrue adds the address to the contacts when nobody has it yet.
contactNamestringThe name to give a contact that createContact adds.
Bis zu 200 Zeichen
sendContactEvents
Record up to 100 events in one call, each handled as sendContactEvent handles one, in order. One event failing does not stop the rest: the answer says which were recorded, what each started, and why any was not.
Eingaben
eventsobject[]Erforderlich- 1 bis 100 Einträge
namestringErforderlichWhat happened, such as order.placed: letters, digits, dots, colons, dashes and underscores. Names are matched exactly, case included.
1 bis 100 ZeichenemailstringErforderlichThe contact the event is about, by email address.
Bis zu 320 ZeichenFormatemailpropertiesRecord<string, any>Details of the event as a JSON object, at most 50 keys and 4 KB. An event trigger can filter on them and steps can use them.
occurredAtstringWhen it happened, as an ISO 8601 instant. Left out, it is now. Not in the future, and at most 90 days ago.
Formatdate-timecreateContactbooleantrue adds the address to the contacts when nobody has it yet.
contactNamestringThe name to give a contact that createContact adds.
Bis zu 200 Zeichen
listContactEventNames
The names of the events this workspace has recorded in the last 90 days, to choose the event that starts an automation or that a wait step holds out for.
Eingaben
Nimmt keine Eingaben an.
Auch verfügbar über
listContactEvents
The events recorded for one contact in the last 90 days, the most recent first: name, when it happened and its properties. Narrow it to one event name. One page at a time: when more follow, the last line gives a cursor.
Eingaben
emailstringErforderlichThe contact the event is about, by email address.
3 bis 320 Zeichennamestring- 1 bis 100 Zeichen
limitinteger- Mindestens 1Höchstens 200
cursorstring- 1 bis 64 Zeichen
Auch verfügbar über
- API
GET /contacts/{email}/events- TypeScript
contacts.listEvents()contacts.listAllEvents()contacts.iterateEvents()- Python
contacts.list_events()contacts.list_all_events()contacts.iterate_events()- Ruby
contacts.list_eventscontacts.list_all_eventscontacts.iterate_events- PHP
contacts->listEventscontacts->listAllEventscontacts->iterateEvents- Go
Contacts.ListEventsContacts.ListAllEventsContacts.IterateEvents- Java
contacts().listEventscontacts().listAllEventscontacts().iterateEvents- C#
Contacts.ListEventsAsyncContacts.ListAllEventsAsyncContacts.IterateEventsAsync