Как автоматизировать мультиязычные email-рассылки с Google Sheets | Блог eSputnik

Ксения Петрина

Email-маркетолог

Автоматизация мультиязычных email-рассылок с Google Sheets

Как автоматизировать мультиязычные email-рассылки с Google Sheets

62% маркетинговых команд тратят более двух недель, чтобы создать одно промописьмо. Время уходит на дизайн, написание контента, тестирование и т. д. Еще сложнее маркетологам в компаниях, которые оперируют на иностранных рынках или в странах с несколькими основными языками общения. Тогда приходится создавать копии одного сообщения, но на разных языках. В таком случае без автоматизации не обойтись.

В CDP eSputnik есть функционал, который помогает компаниям до 5 раз ускорить мультиязычную коммуникацию с клиентами. Одним из методов автоматизации процесса на нашей платформе является подстановка данных из внешнего источника. Для этого используется интеграция с Google Sheets.

Важно

Чтобы использовать Google Sheets в качестве внешнего источника данных для рассылки мультиязычных сообщений, обратитесь для активации этой функциональности в службу поддержки eSputnik, написал на support@esputnik.com.

В eSputnik можно в одном сообщении использовать динамические данные одновременно из нескольких таблиц. Таким образом автоматически подтягивается основной контент рассылки, а также цены и валюты, актуальные для каждой из локалей, с которыми работает ваша компания. О том, как это делается на практике, читайте в статье.

Автоматизируйте рутинные задачи для омниканальных рассылок

Как настроить подстановку динамического контента в письмо в eSputnik

Рассмотрим автоматизацию мультиязычных рассылок с помощью Google Таблиц. Процесс настройки состоит из нескольких этапов.

1. Подготовка макета email-сообщения на любом удобном языке. Текст письма нужно разбить на условные фразы, например:

  • заголовок,
  • основной текст 1,
  • кнопка,
  • основной текст 2 и т. д.

В отдельную фразу необходимо выделить тему письма.

Пример разбивки текста письма на отдельные фразы

2. Создание источника с данными – таблицы в Google Sheets. Каждая строка соответствует языку, а каждый столбец – условным фразам, на которые разделено письмо:

Таблица в Google Sheets

Наименование локалей в файле должно соответствовать значениям, которые передаются в дополнительном поле.

3. Подключение таблицы как внешнего источника данных в настройках аккаунта eSputnik.

Подключение источника данных

4. Настройка подстановки динамического контента в письмо с помощью библиотеки Apache Velocity. Используя редактор кода, в элемент body нужно добавить цикл #foreach.

  1. Объявляем переменную, которая содержит параметр языка. В нашем примере это поле Locale. Ее код выглядит так: %DATA.LOCALE%

Значение этой переменной можно узнать в системе на вкладке Настройки Дополнительные поля:

Настройка подстановки динамического контента в письмо

Для объявления переменной нужно сделать запись такого вида:

<!--%DATA.LOCALE%-->
  1. Создаем конструкцию, которая выполняет следующие функции:
  • проверяет, что в поле DATA.LOCALE есть значение и оно не пустое;
  • найденное значение языка в поле DATA.LOCALE использует для поиска соответствующего значения в Google-таблице.
<!--#set($filtered=[])
#if($!data.get('DATA.LOCALE') and $!data.get('DATA.LOCALE')!='') – проверяем существование дополнительного поля и проверяем на непустое значение.
#set($local=$!item.get('DATA.LOCALE')) – если существует поле и его значение не пустое, то создаем переменную local и получаем значение языка из дополнительного поля.
#else
#set($local='en') – если существует, но поле пустое, задаем дефолтное значение языка.
#end
#foreach($!item in $!data.get('table_name')) – создаем цикл, который вычитывает содержимое Google-таблицы.
#if($!item.get('local')==$local) – указываем, что нужно найти только содержимое, которое содержит значение языка из дополнительного поля.
$!filtered.add($!item) – получаем итоговый отфильтрованный массив с данными по конкретному языку.
#end
#end-->

В коде письма пункты 1 и 2 будут выглядеть так:

Отфильтрованный массив с данными по конкретному языку

Раскроем подробнее значение некоторых переменных из описанного кода:

#foreach($!item in $!data.get('table_name')) – обращаемся к Google Sheets, где table_name – название источника, созданного из таблицы:

Данные для шаблона April promo global

#if($!item.get('local')==$local) – ищем в Google-таблице переменную local, где указана локаль, и сопоставляем ее со значением переменной $local (там, где мы получали значение из дополнительного поля #set($local=$!item.get('DATA.LOCALE'))):

Переменная local в Google-таблице

  1. Создаем финальную конструкцию, которая и выведет контент в письмо:
!--#foreach($!i in [0..$!mathTool.sub($!filtered.size(),1)]) #if($!i%3==0) #if($!filtered.size()-$i==1) – запускаем цикл по ранее отфильтрованному массиву.
#set($phrase1=$!filtered.get($!i).get('Phrase1')) – вытягиваем значение для первой переменной, например заголовка.
#set($phrase2=$!filtered.get($!i).get('Phrase2')) – вытягиваем значение для второй переменной, например текста.
#set($phrase3=$!filtered.get($!i).get('Phrase3')) – вытягиваем значение для третьей переменной, например кнопки.
-->
<!--#end#end#end--> – закрываем цикл внизу письма.

Обратите внимание, что цикл должен открываться в начале письма, а закрываться в конце письма. Открытие и закрытие цикла должно происходить на одном уровне иерархии кода html.

Создаем финальную конструкцию, которая и выведет контент в письмо

Закрываем цикл внизу письма

Раскроем подробнее значение некоторых переменных из кода выше:

#set($phrase1=$!filtered.get($!i).get('Phrase1')) – создаем переменную $phrase1.

$!filtered.get($!i).get('Phrase1') – подставляем переменную из таблицы, где содержится первая нужная фраза:

Подстановка переменной из таблицы

Далее $phrase1 вставляем в нужное место в письме, где нужно вывести содержимое из таблицы.

Чтобы не нагромождать визуально макет письма большим количеством кода, можно в html-редакторе прописать необходимые значения с помощью синтаксиса присваивания:

Прописываем необходимые значения с помощью синтаксиса присваивания

Если в версии письма требуется добавить разные изображения, в редакторе кода необходимо вставить Velocity-выражение в атрибут src.

Добавление изображения

Вместо ссылки на картинку следует указать:

$!filtered.get($!i).get('img'),

где 'Img' – название столбца, который содержит ссылку на соответствующее изображение.

С помощью синтаксиса можно задавать различные условия выведения контента. В нашем случае происходит проверка атрибута в поле “Локаль”, в зависимости от которого подставляется текст на нужном языке:

Условия выведения контента в письме

Таким образом, email будет полностью состоять из динамического контента, и макеты для других языков создавать не нужно.

В заключение

По этой инструкции маркетолог сумел самостоятельно настроить мультиязычную рассылку о глобальной акции на полмиллиона подписчиков из 23 стран. Для нее подготовили 2 таблицы: одна для языков с написанием текста слева направо, вторая — справа налево.

Благодаря такому методу время подготовки рассылки сократилось с 24 часов до 12 часов. Кроме того, удается избежать человеческих ошибок, которые могут происходить при ручной работе с большим количеством копий email и многочисленными сегментами аудитории. 

Вы хотите так же автоматизировать часть своих задач, чтобы работать эффективнее? Тогда пишите на info@esputnik.com, и наши специалисты с радостью подскажут, какие инструменты CDP eSputnik лучше всего закроют потребности вашего бизнеса.

Special Request Inline

5.0 из 5 на основе 1 оценок

Ксения Петрина

Email-маркетолог

Комментарии 0