Руководство по Gmail Markup
Что такое Gmail Markup
Gmail Markup, или Гугл-разметка — это дополнительный код, благодаря которому почтовые и поисковые службы понимают, какая информация содержится в письме или на сайте. С помощью кода вы выделяете самую важную информацию, а Гугл выводит эти данные на первый план.
Gmail Markup — часть проекта schema.org. Это совместная разработка Гугла, Яндекса и Yahoo, чтобы унифицировать семантическую разметку в HTML5. Другими словами, компании объединились, чтобы создать такие метаданные, которые поисковикам удобно считывать. Инициатива касается всего контента в интернете, но мы рассмотрим только письма.
Зачем нужен Gmail Markup
Предположим, вы — фанат певицы Монеточки. Ваш запрос в поисковике выглядит так: «концерт Монеточка Москва». Это и есть ключевые слова, по которым Гугл покажет вам подходящие сайты. Этого недостаточно, чтобы показать, где и когда будет проходить концерт. Используя Gmail Markup, организатор может указать поисковику или почтовому клиенту, где прописаны дата, время и адрес.
Без Gmail Markup ваше письмо затеряется среди остальных. С Gmail Markup письмо занимает в четыре раза больше места и выделяется за счёт плашки с картой. К тому же компании, которые используют Gmail Markup, получают преимущество в поиске.
Кому стоит размечать письма
- Кафе, туристическим агентствам, гостиницам, компаниям, организующим мероприятия и прокат — для подтверждения бронирования, выставления счетов.
- СМИ, блогам, соцсетям, форумам — для подборки статей в дайджест.
- Ретейлу и логистике — для отправки уведомлений, трекинга посылок.
- B2B-компаниям — для планирования встреч и отправки приглашений в календарь.
Форматы разметки
Предположим, вы анонсируете конференцию. Шаблон разметки можно взять прямо из инструкции Гугла, раздел Reservations, страница Event.
У нас есть выбор между двумя форматами: Microdata и JSON-LD. В чём разница:
- Microdata основан на HTML и может быть инлайновым, то есть его можно прописать в каждом теге или встроить отдельно, между тегами <head>.
- JSON-LD основан на языке JavaScript, поэтому код пишется отдельно в теге <script>, между тегами <head>.
Подробнее о форматах читайте в статье Яндекса.
Для примера мы выберем JSON-LD, потому что его рекомендует Гугл и организация, разрабатывающая стандарты для интернета — W3C. JSON-LD поддерживают Яндекс.Почта, Gmail и Inbox.
Так как JSON-LD расположен не в теле письма, а в хедере, не привязывайте контент к Гугл-разметке. Тем более почтовики, не поддерживающие JSON-LD, уберут этот код из письма, как раньше делали со встроенными в хедер стилями. Главную информацию — название мероприятия, дату, время и адрес — выносите наверх, а в самом письме расскажите о программе конференции.
Подробный разбор кода
<script type=“application/ld+json”> { | Разметка состоит из пары «ключ»: «значение», после каждой пары ставится запятая. Вложенная структура в ключах заключается в {}. |
“@context”: “http://schema.org”, | В каждой разметке — своя структура и ключи. Чтобы их понять, нужен словарь. Разметка использует словарь со schema.org. |
“@type”: “EventReservation”, | Тип словаря. Для бронирования есть варианты: EventReservation, FlightReservation, LodgingReservation, RentalCarReservation, FoodEstablishmentReservation. |
“reservationNumber”: “E123456789”, | Код, номер или идентификатор бронирования. |
“reservationStatus”: “http://schema.org/Confirmed”, | Подтверждение или отмена регистрации “http://schema.org/Cancelled”. |
“underName”: { | Для кого бронируем. |
“@type”: “Person”, | “Person” или “Organization”. |
“name”: “John Smith” }, | Имя указывать обязательно. |
“reservationFor”: { | Для чего бронируем. |
“@type”: “Event”, | Варианты: BusinessEvent, ChildrenEvent, ComedyEvent, DanceEvent, EducationEvent, Festival, FoodEvent, LiteraryEvent, MovieShowing, MusicEvent, SaleEvent, SocialEvent, SportsEvent, TheaterEvent, VisualArtsEvent. |
“name”: “Foo Fighters Concert”, | |
“startDate”: “2027–03-06T19:30:00–08:00”, | Время в формате ISO 8601. |
“location”: { “@type”: “Place”, “name”: “AT&T Park”, “address”: { “@type”: “PostalAddress”, “streetAddress”: “24 Willie Mays”, “addressLocality”: “San Francisco”, “addressRegion”: “CA”, “postalCode”: “94107”, “addressCountry”: “US” } | Где пройдёт мероприятие или располагается организация. |
} | Закрываем ключ “reservationFor”. |
} </script> | Закрываем ключ “reservationFor”. |
Как сделать разметку из обычного текста
Разметку можно сделать из обычного текста, без прописывания ключей и значений, а результат отправить себе на почту. Для этого нужны:
- текст приглашения;
- мастер разметки Structured Data Markup Helper;
- приложение «Скрипты» от Гугла.
Мы записали скринкаст, чтобы показать, как это выглядит на практике.
- Откройте Structured Data Markup Helper, выбирайте тип разметки и вставьте обычный текст или HTML.
- Добавьте ключевую информацию из текста в структуру разметки. Мастер покажет обязательные ключи и дополнительные поля, которые можно добавить в разметку. Если в тексте разметки нет какого-то обязательного значения, например, номера бронирования, его можно добавить вручную по кнопке Add Missing Tags.
- В приложении «Скрипты» создайте проект с файлом для кода через меню File → New → HTML file. Имя можно указывать любое, у нас это Code.gs.
- Скопируйте код из Structured Data Markup Helper и вставьте его между тегами <head>. Если в мастере разметки вы писали обычным текстом и забыли про теги, получится обычный Gmail Markup, а нам нужен HTML.
- Чтобы отправить результат себе на почту, добавьте в Code.gs код:
function testSchemas() {
var htmlBody = HtmlService.createHtmlOutputFromFile('имя_HTML_файла').getContent();
MailApp.sendEmail({
to: Session.getActiveUser().getEmail(),
subject: 'Test email markup - ' + new Date(),
htmlBody: htmlBody,
});
}
Нажмите Run. Во всплывающем окне разрешите отправку имейла и разметка придёт на ваш адрес.
Как найти ошибку в коде Gmail Markup
Если не пользоваться Structured Data Markup Helper, а прописывать пары «ключ: значение» самостоятельно, есть риск ошибиться. Проверит правильность Гугл-разметки, найти ошибки и рекомендуемые к заполнению поля можно через валидатор Email Markup Tester.
Мы сгенерировали письмо в Structured Data Markup Helper, но не избежали ошибок: не указали reservationStatus и неверно поставили время. Поля reservationStatus в Structured Data Markup Helper не было, и оно никак не повлияло на письмо. А ошибка с датой ощутима. Получилось, будто мероприятие будет 18–19 апреля, то есть два дня вместо одного. Чтобы избежать такого, указывайте дату в формате ISO 8601 с часами, минутами, секундами и часовым поясом: «2027–03-06T19:30:00–08:00». Несмотря на эти две ошибки Gmail Markup работает.
Помимо ошибок, валидатор выдал рекомендации:
- Изменить статус резервирования. Для этого нужна отдельная ссылка и время модификации, которые указываются в modifyReservationUrl и modifiedTime.
- Добавить информацию об организаторе в поле Performer.
Требования к отправителю
1. Настроенная DKIM или SPF-запись на сервере
DKIM — текстовые файлы с публичным и секретным ключом на вашем домене, SPF — текстовый файл, перечень IP-адресов, с которых отправляются письма. По этим записям почтовый сервис проверяет, что письмо пришло именно от вашего домена. Настройка сервера — это тема отдельной статьи. Прочитайте инструкцию по настройке DKIM или SPF в Яндексе.
2. Не меньше 100 отправленных писем ежедневно
Вы должны отправлять со своего домена больше 100 писем каждый день в течение нескольких недель.
3. Уровень спама ниже 0,1%
Гугл не говорит точную цифру, ограничиваясь туманной формулировкой: очень низкий уровень спама. Мейлчимп утверждает, что уровень жалоб должен быть меньше 0,1%. Когда вы отправляете рассылку достаточно долго, жалобы будут всегда, но их не должно быть много. Множество жалоб означает, что получатели не понимают, почему они получают эту рассылку и когда подписались на неё.
4. Письмо должно быть транзакционным
Все письма с разметкой должны быть транзакционными — это письма, которые ждут пользователи. Рекламные письма рассылать нельзя, но отличить их от транзакционных сложно даже крупным поисковикам. Поэтому Гугл ориентируется на уровень жалоб и отписок. Это справедливо: получатели чаще жалуются на рекламу, чем на транзакционные письма.
Мы не рекомендуем экспериментировать с рекламными рассылками. В случае неудачи Гугл исключит ваш домен из белого листа и разметка перестанет работать, бонусом могут возникнуть проблемы с доставляемостью.
5. Ваш домен есть в белом листе Gmail Schema
Если всё остальное в порядке, можно подавать заявку на белый лист.
Отправьте готовое письмо с Gmail Markup со своего почтового сервера на schema.whitelisting+sample@gmail.com. По нему Гугл смотрит, как вы хотите использовать разметку и не собираетесь ли вы рассылать спам. Разметка должна быть максимально подробной и полной. Если сомневаетесь, будете использовать RSVP-действие в рассылках или нет — добавляйте.
После отправки письма заполните форму и ждите ответа. Гугл обрабатывает заявки по мере их поступления, поэтому сколько это займёт времени, предсказать невозможно.
Почему Gmail Markup не работает
1. Вы отправили письмо не через Гугл-скрипт
Мейлчимп и другие почтовые сервисы по умолчанию добавляют свою подпись DKIM. Гугл сравнивает домены в почте и если они не совпадают, отключает разметку. У личного аккаунта указаны @gmail.com и домен для DKIM-записи, а у Мейлчимпа — mail120.suw17.mcsv.net.
2. Сервер не настроен
Если рабочий сервис не настроен или настроен не полностью, то домен из DKIM не совпадает с доменом отправителя. Гугл сравнивает их, видит различия и отключает разметку. Чтобы избежать этого, сначала настройте DKIM или SPF, подайте заявку в Гугл, дождитесь одобрения и только тогда запускайте рассылку.
Можно ли отправлять письма с Gmail Markup клиентам
Да, если ваш домен добавят в белый лист. Частично о том, как это сделать, написано в руководстве. Для этого нужны Python и Google Cloud.
А вы внедряли Gmail Markup у себя? Поделитесь опытом.