Перейти к содержанию

Импорт и экспорт

Сайт, который умеет вводить аудиторию, умеет и выводить её обратно. Эта страница описывает импорт CSV из другого инструмента — в админке или в командной строке — и экспорт списка подписчиков. Обоим нужен mailroom.manage.

Импорт списка контактов

Откройте Subscribers и нажмите Import («Import a contact list»).

  1. Choose a CSV file: файл с запятой или точкой с запятой и строкой заголовков. Экспорт из EmailOctopus приходит как ZIP; сначала распакуйте его.
  2. Which column is which. Выберите поле над каждым столбцом: Email address, Full name, First name, Last name, Tags, Status, Subscribed date или Language, либо Ignore this column. Файл, который Mailroom узнаёт (экспорт EmailOctopus), приходит с уже сопоставленными столбцами, а заголовки, явно называющие поле (email, E-mail, Email address, Name, First name, Surname, Tags, Status, Language и подобные), выбираются за вас. Один столбец должен быть адресом электронной почты, и каждое поле может происходить только из одного столбца.
  3. What the first rows become. Первые двадцать строк, прочитанные точно так, как их прочитает импорт. Строка, которую он отклонил бы, говорит почему.
  4. Where it goes:
  5. Add them to: список или No list, subscribers only.
  6. Ask everybody to confirm: оставьте выключенным для экспорта из другого инструмента, поскольку эти люди подтверждали подписку там. Включайте только для списка, в котором не уверены; тогда всех импортируют ожидающими подтверждения и каждому отправляют письмо.
  7. Tag everybody in this file: необязательно, но стоит сделать, поскольку так вы найдёте эту партию снова.
  8. Where did these people agree?: необязательно, например «Signed up on the old site, 2019 to 2024». Хранится в истории согласий каждого человека как то, как он попал в список. Если оставить пустым, вместо этого сохраняется имя файла.
  9. Прочитайте пробный запуск над кнопкой: «Running it now would add N new, find N already here, skip N and leave N suppressed», с причинами. Он считает заново, когда вы меняете список.
  10. Нажмите Start the import.

Импорт ставится в очередь и выполняется обработчиком, поэтому большой файл не требует держать браузер открытым. Экран показывает ход («N of N rows»), а Past imports хранит каждый запуск с его файлом, списком и счётчиками. Загруженный файл удаляется, как только импорт заканчивается; файл, чей импорт так и не запускался, убирается через Keep Uploaded Files For (import.keep_days, 30 дней, на вкладке Signup).

Примечание

Импорту нужен обработчик. Сайт без работающей очереди заданий говорит «This site has no job queue running, so an import cannot be started.» См. Задания и cron.

Что происходит с каждой строкой

Строка Что происходит Считается как
Нет адреса или он не является адресом Пропускается Пропущено
Тот же адрес раньше в файле Пропускается Пропущено
Состояние pending (подписка никогда не подтверждалась в старом инструменте) Пропускается, что бы ни говорила Ask everybody to confirm Пропущено
Состояние unsubscribed Адрес исключается (причина Added by hand, заметка import: {file}), а известного подписчика убирают из всех списков Исключено
Адрес, у которого здесь раньше был возврат или жалоба, либо который исключён Ничего не записывается Исключено
Тот, кто ушёл из списка или из всех списков сам Ничего не записывается Пропущено
Любой другой Подписчик, добавленный в список, с источником Imported и именем файла Новый или Уже здесь

Слова состояний читаются свободно: unsubscribed, unsub, opted out, cleaned и removed все означают отписку; pending, unconfirmed и awaiting confirmation означают ожидание; всё остальное — подписка.

Импорт никогда никого не понижает: уже подписанный остаётся подписанным, а участие, которое у него уже есть, сохраняет способ присоединения. Каждая строка записывается отдельно, поэтому импорт, остановившийся на середине, оставляет достигнутые строки; повторный запуск того же файла не меняет того, что уже сделал первый.

Импорт в командной строке

Для файла, уже находящегося на сервере, import:csv запускает тот же импортёр на переднем плане и печатает, что сделал:

bin/plugin mailroom import:csv contacts.csv --dry-run
bin/plugin mailroom import:csv contacts.csv --list=newsletter --tag=october-import --basis="Signed up on the old site"
bin/plugin mailroom import:csv export.csv --preset=emailoctopus
bin/plugin mailroom import:csv contacts.csv --map email="Email address" --map name="Full name"
Параметр Что делает
--list Код списка, в который вступают все. По умолчанию список по умолчанию.
--preset Прочитать файл как экспорт другого инструмента: emailoctopus.
--map field=column Сопоставление столбца, можно повторять. Поля: email, name, first_name, last_name, tags, status, subscribed_at, language.
--tag Тег, который ставится всем в файле.
--basis Где эти люди согласились, хранится в каждой истории согласий. По умолчанию имя файла.
--as-confirmed Считать всех уже подтвердившими. Это значение по умолчанию.
--ask-to-confirm Импортировать всех ожидающими подтверждения и отправить каждому письмо.
--dry-run Прочитать файл и сообщить, ничего вообще не записывая.

Сначала печатаются файл, preset, список, согласие и основание, затем счётчики (прочитано строк, новых, уже здесь, пропущено, исключено) и причины. Запуск хранится в Past imports, как и запуск из админки.

Экспорт

Export CSV над таблицей Subscribers скачивает людей, совпадающих с текущими фильтрами. Тот же файл из командной строки:

bin/plugin mailroom export:csv --file=subscribers.csv
bin/plugin mailroom export:csv --status=subscribed --list=newsletter > newsletter.csv
bin/plugin mailroom export:csv --status=subscribed | wc -l
Параметр Что делает
--file Куда писать. Без него — стандартный вывод.
--status pending, subscribed, unsubscribed, bounced или complained
--source form, import, api, admin или automation
--list Только люди в этом списке, по коду
--tag Только люди с этим тегом, по коду
--search Только адреса или имена, содержащие это

В файле десять столбцов: email, name, status, lists, tags, source, consent_at, confirmed_at, unsubscribed_at, language. Он начинается с маркера порядка байтов, чтобы таблицы читали его как UTF-8, и передаётся потоково по строке за раз, поэтому большой список экспортируется на том же сервере, который обслуживает сайт.

Для всего, что хранится об одном человеке, включая его историю согласий, используйте Export their data на его странице (см. Конфиденциальность).