Зв'язатись
  • OpenCart
  • Продажі та конверсія
  • v1.0.3

Підписка з підтвердженням (Double Opt-In) для OpenCart

Модуль double opt-in для OpenCart: підписка активується лише після переходу за посиланням з листа. Запис згоди з IP і датою, відписка в клік, експорт CSV. Free до 200 підписників, Pro — без ліміту.

Завантажити Free
Pro · ліцензія назавжди Чим більше сайтів, тим дешевше кожен
Сумісність
OpenCart 4.0.2 – 4.1.x
PHP
7.4 і новіший
Ліцензія
два сайти, назавжди
Тріал
7 днів, без картки, один на сайт
Оновлено
26.09.2026
Або всі 173 Pro-модулів з All Access — 4 990 ₴ / рік

Що є в Free,
а що дає Pro

Безкоштовна версія працює без обмеження в часі. Pro додає решту функцій з таблиці.

Функція Free Pro
Підписка активується лише після переходу за посиланням із власної пошти ✔ ✔
Запис згоди: джерело, IP, user-agent, час заявки і час підтвердження ✔ ✔
Підпорядковує штатну галочку OpenCart у реєстрації та кабінеті ✔ ✔
Відписка в один клік з будь-якого листа ✔ ✔
Чотири листи: підтвердження, вітальний, нагадування, прощальний ✔ ✔
Грід підписників з фільтрами за станом, джерелом і періодом ✔ ✔
Експорт CSV з доказом згоди, UTF-8 з BOM ✔ ✔
Honeypot, підписаний штамп часу і ліміт заявок з однієї IP ✔ ✔
Автовидалення непідтверджених заявок за N днів ✔ ✔
Разовий імпорт наявних підписників — кнопкою, не на інсталяції ✔ ✔
Редагування текстів листів окремо для кожної мови магазину — ✔
Одне нагадування непідтвердженим за розкладом — ✔

Як це виглядає

Сторінка після переходу за посиланням із листа. Рендериться штатним шаблоном магазину, тож вигляд успадковується від вашої теми.
Сторінка після переходу за посиланням із листа. Рендериться штатним шаблоном магазину, тож вигляд успадковується від вашої теми.
Грід підписників: стан, джерело (форма / кабінет), IP, дата заявки і дата підтвердження — той самий доказ згоди, який їде в CSV.
Грід підписників: стан, джерело (форма / кабінет), IP, дата заявки і дата підтвердження — той самий доказ згоди, який їде в CSV.
Налаштування модуля в адмінці OpenCart 4.1: штатну галочку розсилки підпорядковано підтвердженню, термін дії посилання і сніпет форми для теми.
Налаштування модуля в адмінці OpenCart 4.1: штатну галочку розсилки підпорядковано підтвердженню, термін дії посилання і сніпет форми для теми.

Тріал стартує, коли ви попросите

Свіжий інстал — безкоштовна версія, нічого не вмикається само. Кнопка «Спробувати Pro 7 днів» → e-mail → ключ одразу у вікні і листом.

Один ключ — два сайти

Переносите магазин — відв’яжіть ліцензію на старому домені й активуйте на новому самі. Для студій — ключі на 5, 25 сайтів або без обмежень.

Технічні вимоги

  • OpenCart 4.0.2 – 4.1.x (версії для 3.x і 2.3 — у розробці).
  • PHP 7.4+ (працює і на 8.0–8.3).
  • MySQL/MariaDB з підтримкою InnoDB і utf8mb4.
  • Налаштована пошта магазину (Система → Налаштування → Пошта): модуль надсилає листи тим самим транспортом, що й решта магазину, — окремих доступів заводити не треба.

Історія версій

v1.0.3 Поточна 26.09.2026

Список підписників з фільтром знову відкривається на драйвері бази PDO.

v1.0.2

Посилання «підтвердити підписку» і «відписатись» більше не спрацьовують від поштового сканера.

v1.0.1

Куплена ліцензія для OpenCart працює безстроково.

Усі версії (4)
v1.0.0 Перший реліз

Повний цикл double opt-in, підпорядкування штатної галочки, чотири листи з редагуванням по мовах, грід підписників з доказом згоди, експорт CSV, нагадування і ретенція за розкладом, разовий…

Разом з Підписка з підтвердженням (Double Opt-In) для OpenCart купують

4 модулі одним замовленням — на 40% дешевше, ніж окремо

Набір «Старт магазину» Підписка з підтвердженням (Double Opt-In) Nova Poshta Premium LiqPay Telegram-сповіщення і Viber/SMS покупцям Потрібно більше — усі 173 модулі в All Access за 4 990 ₴.
3 790 ₴ назавжди замість 6 260 ₴ поштучно
Купити набір →

Повний опис модуля

Штатний OpenCart вважає згодою саму галочку. Покупець поставив «Підписатися на новини» під час реєстрації — і в базі одразу зʼявляється customer.newsletter = 1. Ні підтвердження, ні дати, ні сліду, звідки та згода взялася. Адресу, яку хтось вписав у чужу форму реєстрації, зі списку вже не прибрати, а довести, що людина справді погоджувалась, нічим.

Модуль перетворює цю галочку на заявку. Прапорець піднімається лише після того, як людина перейшла за посиланням із власної поштової скриньки — і саме тоді в базі зʼявляється запис про згоду з часом, джерелом та IP.

Як це виглядає для покупця

У підвалі (або там, де ви поставите форму) — поле e-mail, за бажанням поле імені й кнопка. Після відправки людина одразу бачить: «Майже готово — перевірте пошту і перейдіть за посиланням у листі. До того ми нічого вам не надсилатимемо».

У листі одна дія — посилання підтвердження. Після кліку відкривається сторінка магазину у вашій темі (використовується штатний шаблон common/success, тож вигляд успадковується від теми) з текстом «Підписку підтверджено». Слідом приходить короткий вітальний лист, у якому вже є посилання на відписку в один клік.

Якщо людина вводить адресу, яка вже підтверджена, вона бачить «Ця адреса вже підписана» — і жодного зайвого листа не отримує. Це навмисно: інакше будь-хто міг би засипати чужу скриньку «підтвердженнями», просто вводячи її у форму.

Що отримує адмін

Окремий грід підписників у налаштуваннях модуля: адреса, імʼя, стан (очікує / підтверджено / відписаний / помилка), джерело (форма, кабінет, адмінка, імпорт), мова, IP, дата заявки і дата підтвердження. Фільтри за станом, джерелом, адресою і періодом.

Кнопка «Надіслати ще раз» для тих, хто не підтвердив. Експорт CSV усіх підтверджених адрес — разом із доказом згоди (джерело, IP, обидві дати), у UTF-8 з BOM, щоб Excel не перетворив українські імена на кракозябри.

Лічильники по кожному стану на видноті, щоб було видно реальний розмір списку, а не «скільки колись поставили галочку».

Як це працює — крок за кроком

  1. Людина залишає адресу — у формі модуля або штатною галочкою при реєстрації чи в кабінеті.
  2. Створюється рядок у власній таблиці зі станом «очікує», токеном, IP, user-agent, мовою та джерелом. Якщо галочку поставили у штатній формі, модуль опускає customer.newsletter назад у 0 — доки згоди нема, її нема і в базі.
  3. Іде лист із підтвердженням мовою тієї версії сайту, з якої прийшла заявка.
  4. Перехід за посиланням переводить рядок у «підтверджено», ставить дату і піднімає штатний прапорець customer.newsletter, щоб решта магазину бачила ту саму картину.
  5. Через задану кількість годин тим, хто не підтвердив, іде рівно одне нагадування. Рядок позначається як «нагадано» незалежно від того, чи лист дійшов, — щоб мертва адреса не крутилася в циклі.
  6. Непідтверджені заявки, старші за N днів, видаляються самі. Адреса, яка не підтвердила, — не підписник, і тримати її вічно немає підстав.

Відписка працює в один клік із будь-якого листа: перехід за посиланням переводить рядок у «відписаний», опускає штатний прапорець і (за бажанням) надсилає коротке підтвердження, щоб у людини лишався письмовий доказ.

Що під капотом

Одна власна таблиця cc_news_subscriber: рядок на пару (магазин, адреса), зі станом, токеном і доказом згоди. Унікальний ключ по парі не дає задвоєнь, а повторна заявка від тієї самої адреси оживляє той самий рядок із новим токеном — тож посилання зі старого листа перестає діяти.

Токен — 48 шістнадцяткових символів із random_bytes. Один і той самий токен обслуговує і підтвердження, і відписку: після підтвердження він навмисно не змінюється, бо саме на ньому їде посилання «відписатися» в усіх майбутніх листах.

Захист форми — прихований honeypot поза потоком документа й поза табуляцією, плюс підписаний штамп часу (HMAC від параметрів інсталяції), який не переписати з боку клієнта. Штамп живий добу, тож форма переживає повне кешування сторінки. Додатково — ліміт заявок з однієї IP за годину і, за бажанням, штатна капча магазину.

Тексти листів живуть у бібліотеці, а не в мовних файлах: лист складається з трьох різних контекстів (вітрина, адмінка, запуск за розкладом), і мова листа — це мова підписника, а не мова поточного запиту. Порожнє поле шаблону завжди відкочується на вбудований текст, невідома мова — на англійську.

Модуль не чіпає жодного файлу ядра: працює через штатні події OpenCart і власні маршрути вітрини.

Як встановити

  1. Розширення → Встановлення розширень → завантажити zip.
  2. Розширення → Модулі → знайти «Підписка з підтвердженням (Double Opt-In)» → натиснути «+». На цьому кроці створюється таблиця й реєструються події та завдання за розкладом.
  3. Відкрити налаштування, увімкнути модуль і зберегти.
  4. Вставити форму в потрібне місце теми: {{ cc_newsletter }} у будь-якому Twig-шаблоні.
  5. Якщо в магазині вже є підписники зі штатною галочкою — натиснути «Імпортувати наявних підписників». Імпорт виконується один раз і тільки вручну: він заводить їх як підтверджених, бо магазин уже вважає їх підписниками, і ніколи не повертає тих, хто відписався.

Питання
про модуль

Не знайшли відповідь? Напишіть у Telegram — відповімо протягом робочого дня.

@catcode_support Налаштування, сумісність, активація
Чи зламається моя реєстрація?

Ні. Обробник подій обгорнутий так, що будь-яка помилка в ньому не доходить до покупця.

А якщо я не хочу, щоб модуль чіпав штатну галочку?

У налаштуваннях є перемикач «Не чіпати» — тоді працює лише власна форма модуля.

Що станеться зі старими підписниками?

Нічого, доки ви самі не натиснете кнопку імпорту. На інсталяції модуль не імпортує нікого.

Скільки живе посилання підтвердження?

За замовчуванням 72 години, налаштовується.

Чи видаляться дані при видаленні модуля?

Ні. Таблиця підписників навмисно лишається — це доказ згоди по кожній адресі.

Не той варіант, що шукаєте?

Робимо кастомні модулі під WordPress, WooCommerce, OpenCart і Shopify. Розкажіть про задачу — підготуємо оцінку.

Замовити кастомний модуль