Триггерные цепочки: Что такое триггерные цепочки и для чего они нужны.

Содержание

Триггерные цепочки | REES46

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

Управление цепочками

Зайдя в раздел «Триггерные цепочки», вы увидите список всех созданных цепочек и первичную информацию по ним.

По умолчанию показывается статистика по отправленным сообщениям за последние 14 дней.

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

Таблица со списком цепочек:

НазваниеОписание
НазваниеКликабельное название цепочки, при клике по которому можно перейти в статистику и настройки
НастройкиПереход в настройки цепочки
ПереключательВключает/выключает отправку сообщений
Сообщений отправленоКоличество отправленных сообщений
CTRПроцентное соотношение уникальных переходов из сообщений к числу отправленных
С покупкамиКоличество сообщений с покупками
Создать копиюСоздает копию цепочки
В архивУдаляет цепочку в архив

Вкладка «Настройки»

В данную вкладку выведена единственная настройка для всех цепочек — Включение/выключение тихого режима.

Настройка нужна для того, чтобы приостановить работу цепочек в определенный промежуток времени.

Например, если пользователь был на сайте вечером, цепочки не сработают ночью и триггерное письмо придет ему утром.

Создание цепочки

Чтобы создать новую триггерную цепочку, нужно нажать на кнопку «Создать» в верхнем правом углу.

Вас перекинет на вкладку «События», где вы сможете выбрать предустановленные события для срабатывания цепочки.

Принцип работы

Конечная цель триггерной цепочки — взаимодействие с пользователем после того, как он покинул сайт.

На сайте он может совершать различные действия, которые служат событием для запуска триггерной цепочки.

В REES46 доступны по умолчанию 19 событий для запуска цепочки.

Список событий:

НазваниеОписание
Просмотр товараПользователь посмотрел карточку товара
Добавление в корзинуПользователь добавил товар в корзину
Просмотр категорииПользователь просмотрел товары в определенной категории
ПокупкаПользователь совершил покупку
Выполнен поисковый запросПользователь искал товар через поиск на сайте
Очистка корзиныПользователь очистил корзину от товаров
Подписался на рассылкиПользователь оставил свой email в форме подписки
Отписался от рассылкиПользователь отписался от рассылок
Открыл страницуПользователь открыл определенную страницу
Зашел на сайтПользователь зашел в новой сессии на сайт
Открыл массовую рассылкуПользователь открыл определенную рассылку
Перешел из массовой рассылкиПользователь перешел на сайт из определенной рассылки
Товар снова в наличииВ фиде обновилась информация о наличии товара, на который ранее подписался пользователь
Цена на товар сниженаВ фиде обновилась информация о скидке на товар, на который ранее подписался пользователь
Цена на товар в корзине сниженаВ фиде обновилась информация о скидке на товар, который ранее пользователь добавил в корзину
Цена на товар в избранном сниженаВ фиде обновилась информация о скидке на товар, который ранее пользователь добавил в избранное
Оставил отзывПользователь оставил отзыв о товаре через сервис отзывов REES46
Добавление в избранноеПользователь добавил товар в избранное
Удаление из избранногоПользователь удалил товар из избранного
Статус заказаВ системе REES46 изменился статус заказа

Обратите внимание

Указанные выше события используются как для запуска цепочки, так и для её остановки.

Если предоставленного списка событий недостаточно, то интернет-магазин может передавать свои события и делать настройку цепочек по ним.

Пользовательские события добавляются в настройках магазина.

После выбора нужного события, нажимаете «Создать триггер» и задаете начальные настройки:

  • Название и событие для прекращения запущенной цепочки.

Настройка цепочки

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

В REES46 сделаны настройки по умолчанию по всем указанным выше событиям, но вы можете менять правила на свое усмотрение.

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

Нажав на синий кружок, вы можете добавить 4 блока на выбор.

Обратите внимание

Для работы триггерной цепочки не обязательно добавлять все 4 блока.

Цепочка будет работать при наличии минимум одного блока — Сообщение:

Название блокаОписание
ПаузаВыставляется задержка по времени перед отправкой сообщения
УсловиеВыставляются условия отправки сообщений на основе данных пользователей
СообщениеВыбирается заранее созданный шаблон сообщения, email или веб пуш
A/B тестСоздание A/B теста, в этом случае аудитория делится пополам и сравниваются показатели

Обратите внимание

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

Важно

Чтобы пользователь не получал много писем из цепочек на основе своих действий, по умолчанию выставлено ограничение на отправку не более одного письма в день из всех запущенных триггеров.

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

Завершив настройки, нажимаете «Опубликовать» и цепочка запущена в работу.

Статистика

После того, как вы запустили цепочку, пользователям начинают отправляться соообщения и идет накопление статистики.

В REES46 статистика в триггерных цепочках собирается двумя способами:

  1. Есть общая статистика по цепочке с момента её создания.
  2. Есть статистика по каждому сообщению внутри цепочки.

(Сообщение – это шаблон электронного письма или шаблон веб-пуша)

Обратите внимание

Когда в запущенной цепочке редактируется, либо заменяется ранее созданное сообщение, то в отредактированном/новом сообщении статистика начнет собираться с нуля.

Вся накопленная статистика старого сообщения не переносится на новое.

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

Чтобы зайти в статистику цепочки, нужно кликнуть на её название.

НазваниеОписание
ОтправленоКоличество отправленных сообщений
ОткрытоКоличество открытых сообщений
ПереходКоличество уникальных пользователей, перешедших по ссылке
ОтпискаКоличество отписавшихся пользователей в рассылке
ПокупкаКоличество покупок из рассылки
ЖалобаКоличество жалоб на спам
Hard bounceКоличество недоставленных писем, которые изначально невозможно доставить (ошибка в адресе email)
Soft bounceКоличество недоставленных писем, которые изначально можно доставить, но в текущей рассылке не доставили (переполненный почтовый ящик у пользователя)

Обратите внимание

При наведении курсора на email или веб пуш, вам будет доступна статистика по выбранному письму.

Это удобно в том случае, если вы запустили A/B тест и сравниваете, какая версия письма лучше по показателям.

Отчет

Можно скачать csv отчет, предварительно выбрав временной период.

НазваниеОписание
emailEmail адрес пользователя
platformПлатформа, с которой пользователь заходил на сайт
sent_atДата и время отправки письма
deliveredСтатус доставки письма
openedСтатус открытия письма
clickedСтатус перехода из письма
purchasedСтатус покупки из письма
complainedСтатус жалобы на спам
hard_bounceСтатус о невозможности доставить письмо (ошибка в адресе email)
soft_bounceСтатус о невозможности доставить письмо (переполненный почтовый ящик у пользователя)
unsubscribedСтатус отписки от рассылок
hbq_spamСтатус попадания письма в спам
error_statusСтатус ошибки
diagnostic_codeДиагностический код

Триггерные цепочки — REES46

Увеличивайте выручку и средний чек магазина — автоматически и без программистов.

Создавайте серии email-рассылок и пушей, чтобы выполнить любую задачу маркетинга: возобновить брошенный заказ, допродать или убедить подписчика сделать первую покупку.

Получить доступ Запросить демо

Готовые сценарии

Включите нужные, один раз отредактируйте содержимое и автоматизируйте допродажи, реактивацию клиентов, работу с брошенными корзинами.

  • Брошенная корзина
  • Брошенный поиск
  • Смотрел, но не купил
  • Товар снова в наличии
  • Благодарность за заказ
  • Цена на товар снижена
  • Самое интересное за месяц
  • Регулярная покупка

Цепочки лучше рассылок

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

Напиши и собери

Чтобы сделать цепочку, нужно всего две вещи.

Задать логику

Выберите, при каких условиях клиенты получат письма и пуши. Это делается за минуты в визуальном редакторе.

Написать письма

Подготовьте контент электронных писем или пушей — это то, что ваши клиенты будут получать в рассылке.

Программировать без программиста

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

Условия и развилки

Решите, в каком случае запустится и остановится вся триггерная цепочка или отдельная рассылка.

Отправка по таймеру

Поставьте задержку, после которой будет уходить сообщение.

Любой канал

Выберите email или пуш и какое именно сообщение отправить в этом случае.

Транзакционные письма

Оповещайте покупателей о статусе заказа, начислении бонусов или любом другом событии — автоматически. Отслеживайте статистику в личном кабинете.

Performance-подход

Вы сможете тестировать разные сценарии и получите полную прозрачную отчетность по работе инструмента.

Отслеживайте KPI всей цепочки

Вы увидите полную картину по отправкам, открытиям, кликам, покупкам из цепочки, отказам и отпискам.

Смотрите детальный отчет

Узнайте, где «слабое звено» во всей цепочке сообщений, а какие письма работают хорошо.

Запускайте A/B-тест

Просто добавьте развилку в нужном месте, чтобы сравнить несколько сценариев.

Оставляйте лучший вариант

Вы увидите подробные результаты теста и поймете, какой сценарий работает лучше.

Считайте прибыль

Видите не просто результаты рассылки, но и объем выручки, которые принес этот инструмент за любой период.

Кейсы

Истории о том, как наши клиенты увеличивают ключевые показатели.

Кейс «TechnoDom»

Нетипичное использование товарных рекомендаций в магазине техники и электроники

Читать кейс →

Кейс «OK Beauty»

Как работает с email-маркетингом OK Beauty: сегменты, автоматизация, +10,2% выручки

Читать кейс →

С нами уже работают

Посещаемость:

менее 50К в месяц
  • Товарные рекомендации
  • Самообучающийся поиск
  • Настраиваемые попапы
  • Триггерные цепочки
  • Email-рассылки
  • Веб-пуш рассылки
  • Мобильные пуши
  • SMS-рассылки
  • Транзакционные рассылки
  • Каскадные рассылки
  • Детальные отчеты
  • Отзывы о товарах
  • Встраиваемые скрипты
  • Динамический сегментатор

Посещаемость:

от 50К в месяц
Все функции тарифа L, плюс:
  • Уникальные промокоды
  • NPS 360°
  • CRM
  • CDP
  • RFM
  • ROPO отчеты
  • Управление баннерами
  • Продвижение товаров на витрине
  • Персонализация листинга категории
  • Омниканальная аналитика
  • Сервис коротких ссылок
  • Доступ к сырым данным
  • On-premise
  • Ретаргетинг в Яндексβ
  • Персональный менеджер
  • Приоритетная техподдержка

Руководство разработчика триггеров ATLAS | Основы меню триггера

  • Введение
  • Терминология
    • L1
    • HLT
      • Определение цепи
      • Расшифровка имени цепочки и допустимые значения
      • Специальный код подписи
      • Генерация потока управления
  • Как добавить цепочку триггеров
    • Подготовка алгоритмов и шагов
  • Как проверить свои изменения

Введение

Меню триггеров ATLAS состоит из нескольких сотен цепочек триггеров, которые используются во время сбора данных. Каждая цепочка определяет критерии отбора
при первом и высокоуровневом триггере для одной или нескольких физических сигнатур.

Пакет TriggerMenuMT содержит триггерное меню запуска 3 и конфигурацию цепочки
и заменяет пакет Run-2 TriggerMenu. Он предназначен для определения цепочек с точки зрения их имен, потоков,
группы пропускной способности и скорости и другие свойства, чтобы настроить их с точки зрения шагов и последовательностей внутри
шаги и построить поток управления.

Общие сведения о группе меню и ее организации можно найти на
TriggerMenuInformation твики.

Более подробную информацию см. в тематических руководствах в разделе «Меню триггера для экспертов».

Терминология

Существует довольно много терминологии, связанной с этой темой, которую нижеследующее должно немного прояснить. Некоторые из них основаны на
Глоссарий триггеров
который содержит еще много определений для поиска. Ниже будут определены только те из них, которые относятся к этому разделу.

  • Меню триггера : Список всех возможных цепочек триггеров и их свойства (например, поток, группа скорости/пропускной способности и т. д.) и их конфигурация.
    Меню могут быть определены в зависимости от цели сбора данных (например, протон-протонные столкновения, тяжелые ионы, космическое меню).
  • Набор предварительных масштабов меню триггера : Определяет состав активных цепочек триггеров с точки зрения их предварительных масштабов для начального элемента L1 и выбора HLT.
    Для одного меню может быть много предварительных настроек, например. определение набора триггеров для данного шага яркости.
  • Ключ предварительной шкалы (PSK) :
  • Супермастер-ключ (SMK) :
  • Цепочка триггеров : Каждая цепочка триггеров идентифицируется уникальным именем (см.
    Соглашение об именах Run 3
    ) с такими свойствами, как один или несколько потоков, группа скорости и пропускной способности, назначенные ему прескалы. В большинстве случаев
    триггерные цепочки заполняются элементами L1, которые, если они удовлетворены,
    запускает обработку HLT.
    HLT-конфигурация цепи состоит из одного или нескольких шагов.
  • Шаг : Шаг цепочки представлен классом ChainStep . Каждый шаг состоит из списка последовательностей меню . Каждая последовательность меню выполняется для одного объекта решения, поэтому в цепочках одиночных решений будет только одна MenuSequence на шаг. Разделение на этапы позволяет избежать дальнейшей обработки, если на более раннем этапе будет принято (быстрое) отрицательное решение. Это также позволяет (для всего события) ранний отказ, если нет цепочек, проходящих данный шаг.
  • Последовательность меню : Каждая последовательность меню состоит из одного алгоритма InputMaker, за которым следуют алгоритмы реконструкции и завершается одним алгоритмом проверки гипотез.
  • Алгоритмы реконструкции : См. раздел Алгоритмы реконструкции
  • Алгоритмы гипотез : См. раздел об алгоритмах гипотез
  • Поток управления (CF) : Настраивает граф выполнения, состоящий из секвенсоров Athena, которые логически собирают выполнение алгоритмов. Секвенсоры Athena представляют узлы потока управления. Алгоритмы фильтрации используются для разрешения или пропуска выполнения данного узла. Это приводит к досрочному завершению пути выполнения, если триггеры не принимаются.
  • Поток данных (DF) : выполнение планировщика Gaudi основано на потоке данных, что означает, что порядок выполнения определяется доступностью дескрипторов данных.
  • Алгоритм фильтрации HLT : Это фильтр последовательности области интереса ( RoRSeqFilter ), который фильтрует решения HLT и влияет на поток управления.
  • InputMakerAlg / EventViewCreatorAlg : Он наследуется от InputMakerBase и запускает последовательность, создает коллекции для первого RecoAlg, распространяет решения на HypoAlg; EventViewCreator , кроме того, создает EventViews.
  • Athena Sequencer (AthSequencer) : Последовательность, используемая для сбора алгоритмов, которые необходимо запустить в последовательности меню, при этом все алгоритмы уже настроены и подключены через дескрипторы данных. Он должен включать алгоритм InputMaker, обеспечивающий соответствующий объект, необходимый для начала реконструкции на шаге. В случае обработки в EventView может потребоваться дополнительный алгоритм EventViewVerifier для распространения объектов из EventvView на предыдущем шаге. Секвенсеры настроены на формирование либо И или ИЛИ статуса своих детей и вернуть это как их собственный статус. Они могут быть сконфигурированы двумя способами, параллельными или последовательными, в зависимости от того, как дочерние элементы разрешено выполнять. В потоке управления HLT у нас есть две основные конфигурации: последовательная И ( seqAND ) и параллельная ИЛИ ( parOR ). seqAND немедленно возвращается, как только любой дочерний элемент возвращает False, и не выполняет никаких оставшихся дочерних элементов.

Пакет TriggerMenuMT разделен на два подкаталога:

  • L1 для сведений о конфигурации L1 и
  • HLT для конфигурации HLT триггерных цепочек.

Функция generateMT в GenerateMenu.py обрабатывает генерацию конфигурации меню для L1 и HLT.

L1

Описание компонентов LVL1 – далее.

HLT

Создание конфигурации меню триггера HLT можно резюмировать в следующих шагах:

  • Все цепочки, определенные в данном меню (например,
    Physics_pp_run3_v1.py )
    считываются в большой список.
  • Для каждой цепочки создается словарь
    DictFromChainName.py .

    • Название сети должно соответствовать
      Соглашение об именах Run 3, которое отражено в терминах разрешенных подстрок в
      ПодписьDicts. py .
  • Затем словари цепочки подготавливаются для передачи соответствующему коду подписи для создания конфигурации шага цепочки. Это означает, в частности:
    • Комбинированные цепочки: Словарь делится по сигнатурам комбинированной цепочки и отправляется на соответствующий код подписи. Затем возвращенная конфигурация будет объединена с учетом стратегии объединения, указанной в определении цепочки.
    • Цепочки одного типа подписи с более чем одной ветвью (например, HLT_mu6_mu8): словарь с обеими частями цепочки передается в соответствующий код подписи, аналогично случаю цепочки с кратностью больше 1 (например, HLT_2mu6). Множественности затем обрабатываются в соответствии с конкретными настройками в данной сигнатуре.
  • Словари отправляются на соответствующий код подписи. Обработка пошаговой настройки зависит от подписи и не будет здесь обсуждаться. Код подписи отправляет обратно объект Chain , который определен в
    MenuComponents. py , чтобы содержать имя цепочки HLT, элемент L1, заполняющий цепочку, и список шагов цепочки.
  • Конфигурация всех объектов цепочки затем добавляется в список и передается потоку управления через makeHLTTree функция.
    • Обратите внимание: в качестве дополнительного шага необходимо выполнить слияние объектов Chain для комбинированных цепочек, это все еще необходимо реализовать в потоке управления.

Разделы ниже содержат более подробную информацию о шагах для разработчиков.

Определение цепочки

Определение цепочки в меню основано на namedtuple , определенном в
ChainDefInMenu.py с некоторыми назначенными значениями по умолчанию. Это может быть изменено, поэтому, пожалуйста, обратитесь к файлу для получения актуальной информации.

Расшифровка имени цепочки и допустимые значения

Расшифровка имени цепочки не изменилась по сравнению с предыдущим. версия, реализованная в Run 2, основана на той же концепции. Допустимые значения для каждой подписи определены в
ПодписьDicts.py .
Пример словаря для цепочки типа HLT_e3_etcut1step_L1EM3 :

 { "L1item": "L1_EM3",
        "счетчик цепей": 1,
        "chainMultiplicities": ["1"],
        "chainName": "HLT_e3_etcut1step_L1EM3",
        "chainParts": [ { "IDinfo": "",
                              "L1элемент": "",
                              "L2IDAlg": "",
                              "addInfo": ["etcut1step"],
                              "caloInfo": "",
                              "chainPartName": "e3_etcut1step_L1EM3",
                              "этадиапазон": "0эта250",
                              "eventBuildType": "",
                              "дополнительный": "",
                              "изоинформация": "",
                              "лхИнфо": "",
                              "кратность": "1",
                              "подпись": "Электрон",
                              "порог": "3",
                              "триггер": "е",
                              "trkInfo": ""}],
        "groups": ["RATE:SingleElectron", "BW:Electron"],
        "подпись": "Электрон",
        "подписи": "",
        "поток": ["Основной"],
        "топ": [],
        "topoStartFrom": Ложь }
 

Большая часть информации извлекается кодом DictFromChainName из самого имени цепочки, например. тип подписи, элемент L1 и специальные поля chainPart.
Однако некоторая информация должна быть указана в определении цепочки, например, например. группы пропускной способности и скорости, а также стратегию слияния (здесь не показаны, так как это одноэлектронная цепочка). Ключ chainParts представляет собой список подкаталогов, специфичных для подписи, которые будут содержать больше записей в случае цепочек с несколькими ответвлениями.

Ключи словаря могут свободно выбираться каждой подписью. Обязательно удалите устаревшие строки. Объяснение значения каждой подстроки можно найти
здесь — еще не настроено — указывая на Run2 twiki.

Специальный код подписи

Каждая подпись имеет подкаталог в
TriggerMenuMT/python/HLT/. Структура кода подписи будет объяснена
мюонная подпись.
Внутри каталога есть два файла, обычно необходимых для среды TriggerMenuMT:

В каталоге сигнатур могут быть дополнительные файлы, в примере с мюоном у нас есть дополнительно:

  • MuonSetup. py : Настройка всех различных алгоритмов, которые необходимы для реконструкции мюонов (включая подготовку данных, L2 и ЭФ)
  • MuonSequenceSetup.py : содержит различные последовательности, необходимые для выполнения шагов, в том числе инструмент для создания, гипо и гипо
  • MuonMenuConfig.py : Конфигурация для алгоритмов L2, которая будет перемещена в код автономной конфигурации мюона.
    Как правило, эти дополнительные файлы должны быть сведены к минимуму.

Очень важное замечание, которое следует добавить здесь, заключается в том, что при подготовке последовательностей требуется проверка, чтобы увидеть, были ли они уже объявлены с помощью RecoFragmentsPool.retrieve(XXXAthSequence, flags) , который автоматически проверяет, совпадают ли последовательность уже создана, и возвращает ссылку на нее.

Генерация потока управления

Затем поток управления генерируется на основе объекта Chain , который был передан из специального кода подписи, содержащего конфигурацию шагов цепочки. Это происходит в функции makeHLTTree , который находится в HLTCFConfig.py и использует дополнительные функции в MenuComponents.py

Как добавить цепочку триггеров

Чтобы добавить новую цепочку триггеров, выполните шаги, описанные ниже. Сначала вам нужно будет подготовить шаги с точки зрения алгоритмов, прежде чем вы сможете добавить их как часть цепочки триггеров в TriggerMenuMT. Иногда вы можете пропустить шаг, если, например. алгоритмы уже готовы.

Подготовка алгоритмов и шагов

  • Создание HypoAlg, унаследованного от HypoBase, см. пример
    TrigL2CaloHypoAlgMT
  • Создать HypoTools, например
    TrigL2CaloHypoToolInc
  • Настройте HypoTools как в
    TrigL2CaloHypoTool.py
    Обратите внимание, что требуется определенный формат, например TrigL2CaloHypoToolFromName(name, conf)
  • Создать конфигурационный файл, в который включены и настроены все последовательности меню, пример в
    MuonMenuSequences. py
    Создайте функцию для создания любой последовательности и создайте экземпляры алгоритмов, следуя этой логике:

    • Алгоритмы извлечения признаков, необходимые для создания автономных объектов, подлежащих обработке гипотетической программой, со всеми их конфигурациями
    • EventViewCreatorAlgorithm, необходимый для запуска в представлениях, в качестве альтернативы добавьте один InputMaker
    • Гипо
    • Импорт HypoTools
    • Последовательности:
      • AthSequencer, содержащий алгоритмы, работающие в представлениях, настроенных как параллельное ИЛИ, например: sequenceView = parOR(name, [alg or seq])
      • AthSequencer со всеми алгоритмами извлечения признаков, сконфигурированными как последовательное И: пример: mysequence =seqAND(name, [alg or seq])
      • MenuSequence, например: MenuSequence( Sequence = fastCaloAthSequence, Maker = fastCaloViewsMaker, Hypo = theFastCaloHypo, HypoToolGen = TrigL2CaloHypoToolFromName)

Когда все алгоритмы настроены и готовы, вы можете добавить цепочку в меню. Для триггеров в разработке это
Dev_pp_run3_v1.py

  • Убедитесь, что вы определили цепочку в правильном списке сигнатур со всеми необходимыми параметрами, взгляните на базовый класс в
    ChainDefInMenu.py
  • Убедитесь, что все строки имени вашей цепочки соответствуют соглашению об именах и перечислены в
    ПодписьDicts.py
  • Проверьте соответствующую логику в вашем каталоге сигнатур и при необходимости выполните шаги, необходимые в этой конкретной цепочке. Обычно это делается, например.
    MuonChainConfiguration.py
  • Добавить управление словарем верхнего уровня, которое передается в
    «Сгенерировать MuonChainDefs.py».

Чтобы добавить или активировать новую подпись в TriggerMenuMT, выполните следующие действия:

Как проверить ваши изменения

См. раздел Тестирование изменений кода в этом руководстве.


Триггерная застежка — Etsy.de

Etsy больше не поддерживает старые версии вашего веб-браузера, чтобы обеспечить безопасность пользовательских данных.

This entry was posted in Ключевые слова