Blog Jekyll: Newsletter – MailerLite
Implementacja newslettera w architekturze Static Frontend + SaaS Backend (Jekyll, Chirpy, MailerLite).
Pomyślałem, żeby zrobić newsletter – więc tak zrobiłem.
Newsletter informuje o nowych wpisach na blogu – niezależnie od zewnętrznych platform społecznościowych.
Koncepcja
Założenia
Statyczny frontend + zewnętrzny backend do zapisu adresów i dystrybucji e-mail:
- Blog działa jako w pełni statyczny frontend.
- Obsługa zapisu i dystrybucja e-mail realizowana jest przez zewnętrzny backend (model SaaS).
- Adresy e-mail nie są przechowywane w repozytorium ani na serwerze bloga – tylko w systemie SaaS.
Sposób działania
- Powiadomienia wysyłane są każdorazowo po publikacji nowego wpisu.
- Przy zapisie włączony jest mechanizm double opt-in (potwierdzenie zapisu mailem).
- W każdej chwili można zrezygnować z subskrypcji, korzystając z linku w stopce wiadomości.
- Strony potwierdzające znajdują się w mojej domenie.
Wybór SaaS (Software as a Service)
Wybrałem MailerLite, ponieważ:
- Darmowy plan do 500 subskrybentów i 12 000 maili miesięcznie.
- Brak agresywnych elementów marketingowych.
- Prosty model działania.
- Możliwość eksportu bazy.
Architektura
Statyczny frontend + zewnętrzny backend:
- Frontend: Jekyll + motyw Chirpy (GitHub Pages)
- Backend: MailerLite
Implementacja
Proces zapisu
Proces zapisu wygląda tak:
W
_includes/topbar.htmlznajduje się link do strony z formularzem zapisu: https://blog.marcinszewczyk.net/newsletter/Formularz na tej stronie połączony jest z backendem (MailerLite).
Użytkownik wpisuje e-mail i wysyła formularz. Otrzymuje wiadomość z linkiem do potwierdzenia zapisu. Jednocześnie wyświetla się strona: https://blog.marcinszewczyk.net/newsletter-confirmation/
Użytkownik klika w link potwierdzający w mailu. Wyświetla się strona z potwierdzeniem zapisu: https://blog.marcinszewczyk.net/newsletter-confirmed/
Zewnętrzny backend robi swoje, a blog pozostaje w pełni statyczny.
Konfiguracja MailerLite
Ustawienia konta:
- Nadawca: Imię i nazwisko
- Adres: newsletter@marcinszewczyk.net
Domeny wysyłające:
Dodana domena wysyłająca wraz z rekordami uwierzytelniającymi (SPF/DKIM), dla poprawy dostarczalności.
Grupa subskrybentów:
Utworzona grupa: Blog Newsletter.
Formularze:
Utworzone dwa formularze:
- Form: PL
- Form: EN
W ustawieniach:
- zaznaczona opcja „Własna strona sukcesu”,
- włączony double opt-in,
- brak auto-confirm.
Integracja we frontendzie (Jekyll-Chirpy)
1. Skrypt
JavaScript dostarczony przez MailerLite, dodany w _includes/head.html:
1
2
3
4
5
6
7
8
9
<!-- MailerLite Universal -->
<script>
(function(w,d,e,u,f,l,n){w[f]=w[f]||function(){(w[f].q=w[f].q||[])
.push(arguments);},l=d.createElement(e),l.async=1,l.src=u,
n=d.getElementsByTagName(e)[0],n.parentNode.insertBefore(l,n);})
(window,document,'script','https://assets.mailerlite.com/js/universal.js','ml');
ml('account', '2151227');
</script>
<!-- End MailerLite Universal -->
Skrypt inicjalizuje globalny obiekt ml, wymagany do osadzania formularzy.
2. Strona newsletter w Jekyll-Chirpy
W pliku _pages/newsletter.md dodany formularz MailerLite:
1
<div class="ml-embedded" data-form="cY1WRm"></div>
Przepływ danych
- Użytkownik wpisuje e-mail.
- Formularz wysyła dane bezpośrednio do MailerLite.
- MailerLite:
- wysyła mail potwierdzający,
- zapisuje użytkownika w grupie,
- umożliwia wypisanie się.
Jekyll nie uczestniczy w przechowywaniu ani przetwarzaniu danych – blog pozostaje w pełni statyczny.
Podsumowanie
Blog ma newsletter będący prostym mechanizmem powiadomień o nowych wpisach.
Bez marketingu.
Bez automatyzacji sprzedażowych.
Prosto. Tyle, ile trzeba.