Автоматизации
Письма, которые уходят сами — по событию подписчика и с нужной задержкой.
Автоматизация — это письмо, привязанное к событию: подписка, добавление
в базу, открытие, клик по ссылке, изменение поля. Технически это та же
рассылка, но со статусом SUBSCRIBE, поэтому в
списке рассылок автоматизации тоже видны.
События запуска
Событие задаётся параметром action:
form | Подписка через форму. Значение по умолчанию |
add | Добавление подписчика вручную или через API |
upload | Добавление при импорте файла |
open | Открытие письма |
click | Клик по любой ссылке |
href | Клик по конкретной ссылке |
edit | Изменение дополнительного поля подписчика |
rating | Изменение рейтинга подписчика |
Несколько событий перечисляются через запятую:
"action": "form,add,upload". В комбинациях нельзя
использовать open, click и edit —
такие события задаются только по одному.
Задержка
Задержка между событием и отправкой складывается из двух параметров:
delay_1 — количество, delay_2 — единица
измерения. Например, delay_1=3 и delay_2=day
дают отправку через трое суток. Без них письмо уходит сразу.
Автоматизация начинает работать только после модерации — как и обычная
рассылка. До её прохождения
принудительный запуск вернёт
code: 37.
- GET Список автоматизаций
- POST Создать автоматизацию
- PUT Изменить автоматизацию
- DELETE Удалить автоматизацию
- POST Запустить автоматизацию вручную
- POST Скопировать автоматизацию
Список автоматизаций #
GET
/automations
Возвращает автоматизации аккаунта вместе с настройками события и задержки.
Параметры строки запроса
| Параметр | Тип | Описание |
|---|---|---|
id | integer | Вернуть одну автоматизацию. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
4 |
Автоматизаций нет |
curl -X GET 'https://api.dashamail.com/v2/automations' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.get(
'https://api.dashamail.com/v2/automations',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": [
{
"id": 502001,
"name": "Welcome-письмо",
"subject": "Добро пожаловать!",
"from_name": "Ромашка",
"from_email": "news@example.ru",
"list_id": "128341",
"status": "SUBSCRIBE",
"action": "form,add",
"auto_delay1": 0,
"auto_delay2": 0
}
]
}
}
Создать автоматизацию #
POST
/automations
Создаёт триггерное письмо. Содержимое проверяется сразу — как при запуске обычной рассылки, включая наличие ссылки отписки.
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
list_id обязательный | integer | JSON-строка | Адресная база, за которой следит автоматизация. Несколько баз — JSON-массив идентификаторов. |
subject обязательный | string | Тема письма. |
from_email обязательный | string | Адрес отправителя. |
from_name обязательный | string | Имя отправителя. |
event обязательный | string | Служебный параметр запроса — передайте сюда то же значение, что и в action. |
action | stringпо умолчанию: form | Событие запуска, см. список событий. Несколько значений перечисляются через запятую. |
delay_1 | integerпо умолчанию: 0 | Величина задержки перед отправкой. |
delay_2 | stringпо умолчанию: 0 | Единица измерения задержки. Допустимые значения: hour, day, week |
campaigns | string | Для событий open, click и href — идентификаторы рассылок, за которыми следить. |
schedule_time | string | Ограничение по времени суток для отправки. |
auto | флаг | Со значением 1 письмо проверяется как готовое к отправке: тема, отправитель, текст и ссылка отписки должны быть заполнены. |
html | string | HTML-версия письма. |
plain_text | string | Текстовая версия письма. |
name | string | Внутреннее название. |
esegment | JSON-строка | Условия сегментации базы. |
track_opens | stringпо умолчанию: Y | Отслеживать открытия. Допустимые значения: Y, N |
track_clicks | stringпо умолчанию: Y | Отслеживать клики. Допустимые значения: Y, N |
analytics | stringпо умолчанию: N | Добавлять UTM-метки. Допустимые значения: Y, N |
Что возвращается
Идентификатор созданной автоматизации.
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
422 |
3 |
Не переданы обязательные параметры |
401 |
2 |
В комбинации событий использованы open, click или edit |
500 |
14 |
Не задана тема письма |
500 |
17 |
Нет ни HTML-, ни текстовой версии |
500 |
18 |
Нет ссылки отписки в HTML |
404 |
5 |
Указанной адресной базы не существует |
curl -X POST 'https://api.dashamail.com/v2/automations' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"list_id": 128341,
"subject": "Добро пожаловать!",
"from_email": "news@example.ru",
"from_name": "Ромашка",
"event": "form,add",
"action": "form,add",
"delay_1": 1,
"delay_2": "hour",
"html": "<h1>Спасибо за подписку</h1><a id=\"unsub_link\" href=\"%ОТПИСАТЬСЯ%\">отписаться</a>"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'list_id' => 128341,
'subject' => 'Добро пожаловать!',
'from_email' => 'news@example.ru',
'from_name' => 'Ромашка',
'event' => 'form,add',
'action' => 'form,add',
'delay_1' => 1,
'delay_2' => 'hour',
'html' => '<h1>Спасибо за подписку</h1><a id="unsub_link" href="%ОТПИСАТЬСЯ%">отписаться</a>',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/automations',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'list_id': 128341,
'subject': 'Добро пожаловать!',
'from_email': 'news@example.ru',
'from_name': 'Ромашка',
'event': 'form,add',
'action': 'form,add',
'delay_1': 1,
'delay_2': 'hour',
'html': '<h1>Спасибо за подписку</h1><a id="unsub_link" href="%ОТПИСАТЬСЯ%">отписаться</a>',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"list_id": 128341,
"subject": "Добро пожаловать!",
"from_email": "news@example.ru",
"from_name": "Ромашка",
"event": "form,add",
"action": "form,add",
"delay_1": 1,
"delay_2": "hour",
"html": "<h1>Спасибо за подписку</h1><a id=\"unsub_link\" href=\"%ОТПИСАТЬСЯ%\">отписаться</a>"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 502001
}
}
}
Изменить автоматизацию #
PUT
/automations/{campaign_id}
Меняет содержимое письма, событие запуска или задержку. Незаданные параметры сохраняют прежние значения.
После изменения содержимого автоматизация снова проходит модерацию.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор автоматизации. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
subject | string | Тема письма. |
from_email | string | Адрес отправителя. |
from_name | string | Имя отправителя. |
html | string | HTML-версия письма. |
plain_text | string | Текстовая версия письма. |
list_id | integer | JSON-строка | Сменить адресную базу. |
action | string | Событие запуска. |
delay_1 | integer | Величина задержки. |
delay_2 | string | Единица измерения задержки. Допустимые значения: hour, day, week |
campaigns | string | Отслеживаемые рассылки для событий по открытиям и кликам. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Автоматизации с таким campaign_id нет |
500 |
20 |
Указанная рассылка не является автоматизацией |
curl -X PUT 'https://api.dashamail.com/v2/automations/502001' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"subject": "Добро пожаловать в Ромашку!",
"delay_1": 2,
"delay_2": "hour"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations/502001');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'PUT',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'subject' => 'Добро пожаловать в Ромашку!',
'delay_1' => 2,
'delay_2' => 'hour',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.put(
'https://api.dashamail.com/v2/automations/502001',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'subject': 'Добро пожаловать в Ромашку!',
'delay_1': 2,
'delay_2': 'hour',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations/502001', {
method: 'PUT',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"subject": "Добро пожаловать в Ромашку!",
"delay_1": 2,
"delay_2": "hour"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}
Удалить автоматизацию #
DELETE
/automations/{campaign_id}
Останавливает и удаляет автоматизацию. Уже поставленные в очередь письма не отправляются.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор автоматизации. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Автоматизации с таким campaign_id нет |
curl -X DELETE 'https://api.dashamail.com/v2/automations/502001' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations/502001');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'DELETE',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.delete(
'https://api.dashamail.com/v2/automations/502001',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations/502001', {
method: 'DELETE',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
(тело ответа пустое)
Запустить автоматизацию вручную #
POST
/automations/{campaign_id}/trigger
Отправляет письмо автоматизации конкретному подписчику, не дожидаясь события. Удобно для проверки вёрстки и для сценариев, где момент отправки решает ваша система.
Предыдущая отправка этого письма тому же подписчику сбрасывается, поэтому повторный запуск сработает даже если письмо уже уходило.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор автоматизации. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
email обязательный | string | Адрес получателя. Подписчик должен существовать в аккаунте. |
member_id | integer | Идентификатор подписчика вместо адреса. |
delay | integer | Задержка в секундах. Без неё письмо уходит немедленно, с ней — планируется на указанное время. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Автоматизации с таким campaign_id нет |
500 |
37 |
Автоматизация ещё не прошла модерацию |
404 |
9 |
Подписчика с таким адресом нет |
curl -X POST 'https://api.dashamail.com/v2/automations/502001/trigger' \
-H 'Authorization: Bearer YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"email": "ivan@example.com"
}'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations/502001/trigger');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode([
'email' => 'ivan@example.com',
], JSON_UNESCAPED_UNICODE),
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/automations/502001/trigger',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
json={
'email': 'ivan@example.com',
},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations/502001/trigger', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json',
},
body: JSON.stringify({
"email": "ivan@example.com"
}),
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": true
}
}
Скопировать автоматизацию #
POST
/automations/{campaign_id}/copy
Создаёт копию автоматизации со всеми настройками события и задержки.
Параметры пути
| Параметр | Тип | Описание |
|---|---|---|
campaign_id обязательный | integer | Идентификатор исходной автоматизации. |
Параметры тела запроса
| Параметр | Тип | Описание |
|---|---|---|
format | string | Формат копирования. |
Возможные ошибки
| HTTP | code | Когда возникает |
|---|---|---|
404 |
22 |
Исходной автоматизации нет |
curl -X POST 'https://api.dashamail.com/v2/automations/502001/copy' \
-H 'Authorization: Bearer YOUR_API_KEY'
<?php
$ch = curl_init('https://api.dashamail.com/v2/automations/502001/copy');
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_HTTPHEADER => [
'Authorization: Bearer YOUR_API_KEY',
],
]);
$response = json_decode(curl_exec($ch), true);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
if ($status >= 400) {
throw new RuntimeException($response['error']['message']);
}
print_r($response['response']['data']);
import requests
response = requests.post(
'https://api.dashamail.com/v2/automations/502001/copy',
headers={'Authorization': 'Bearer YOUR_API_KEY'},
)
response.raise_for_status()
print(response.json()['response']['data'])
const response = await fetch('https://api.dashamail.com/v2/automations/502001/copy', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
},
});
const payload = await response.json();
if (!response.ok) throw new Error(payload.error.message);
console.log(payload.response.data);
{
"response": {
"msg": {
"err_code": 0,
"text": "OK",
"type": "message"
},
"data": {
"campaign_id": 502014
}
}
}