Module documentation

Newsletterové kampaně

Newsletterová kampaň je naplánovaná hromadná rozesílka konkrétního obsahu definované skupině odběratelů. Modul `/newsletter-job` slouží k tomu, aby obsluha mohla kampaň připravit, spustit, sledovat její průběh v reálném čase a následně vyhodnotit, jak si vedla. Od jednorázového transakčního e-mailu se kampaň liší především tím, že běží dávkově s rychlostními limity — každá minuta odchází jen určitý počet zpráv — aby se zabránilo blokování ze strany poštovních serverů a neklesla doručitelnost ostatních zpráv z dané domény. Modul navazuje na **Newsletter** jako zdroj odběratelů a na **E-maile...

Last updated 24 April 2026

Newsletterová kampaň je naplánovaná hromadná rozesílka konkrétního obsahu definované skupině odběratelů. Modul /newsletter-job slouží k tomu, aby obsluha mohla kampaň připravit, spustit, sledovat její průběh v reálném čase a následně vyhodnotit, jak si vedla. Od jednorázového transakčního e-mailu se kampaň liší především tím, že běží dávkově s rychlostními limity — každá minuta odchází jen určitý počet zpráv — aby se zabránilo blokování ze strany poštovních serverů a neklesla doručitelnost ostatních zpráv z dané domény. Modul navazuje na Newsletter jako zdroj odběratelů a na E-mailer jako infrastrukturu odesílání; bez obou těchto součástí by kampaň neměla komu ani čím doručit.

Přehled kampaní

Tabulka kampaní sdružuje běžící i dokončené rozesílky a poskytuje obsluze okamžitý přehled o tom, kolik příjemců už bylo obslouženo a kolik jich ještě čeká ve frontě. Klíčovým prvkem je vizuální ukazatel průběhu ve sloupci Progress, protože velká kampaň s nízkým limitem na minutu může snadno běžet i několik dní — a administrátor potřebuje během jednoho pohledu vědět, zda má ještě smysl zasahovat.

Jednotlivé sloupce sdělují:

  • Předmět zprávy — text předmětu e-mailu; odkaz vede na detail kampaně.
  • Progress — vizuální ukazatel postupu odesílání (čekající vs. odeslané).
  • Start odesílání — čas, kdy byla kampaň fakticky spuštěna.
  • Max / min — rychlostní limity, tedy maximální počet zpráv za minutu a za den.
  • ID runneru — identifikace procesu, který kampaň aktuálně obsluhuje.
  • Celkem / Odesláno / Čekající kontaktů — rozdělení příjemců podle stavu doručení.
  • Data — časové značky vložení, poslední aktualizace a dokončení.

Tabulka se automaticky obnovuje každých 20 sekund. Dokončené kampaně v seznamu zůstávají a lze je kdykoli otevřít pro nahlédnutí do statistik, srovnání s předchozími rozesílkami nebo inspiraci při přípravě nových.

Životní cyklus kampaně

Kampaň prochází předvídatelnou posloupností fází od přípravy obsahu až po finální statistiky. Každá fáze má svůj vizuální identifikátor ve sloupci Progress i v záhlaví detailu, takže obsluha na první pohled ví, jestli má ještě do kampaně zasáhnout, nebo ji nechat běžet. Oddělení přípravy, naplánování a samotného odesílání umožňuje dopředu vše zkontrolovat — obsah, publikum i limity — a spustit rozesílku až v okamžiku, kdy si je obsluha jistá.

  1. Příprava — obsluha vytvoří obsah (předmět, HTML, přílohy) a vybere publikum.
  2. Naplánování — nastaví se čas startu a rychlostní limity.
  3. Spuštění — systém postupně zařazuje odběratele do fronty runneru.
  4. Odesílání — runner dávkově posílá jednotlivé e-maily, aktualizuje stav a zaznamenává otevření.
  5. Dokončení — všichni příjemci byli obslouženi nebo obsluha kampaň ukončila ručně.

Rychlostní limity kampaně

Každá kampaň má dva nezávislé limity, které řídí, jak rychle se zprávy dostanou do schránek příjemců. Důvodem jejich existence je ochrana reputace odesílací domény — kdyby systém vypálil tisíce zpráv během pár sekund, poštovní servery by to vyhodnotily jako spamovou vlnu a další zprávy by začaly odmítat nebo filtrovat do spamu. Limity tak nejsou jen technické opatření, ale součást dlouhodobé strategie doručitelnosti.

Konkrétně se nastavuje:

  • Maximální počet zpráv za minutu — výchozí hodnota je 30; zabraňuje krátkodobému zahlcení odesílacího serveru.
  • Maximální počet zpráv za den — volitelný strop, který dává obsluze kontrolu nad celkovým denním objemem.

Systém si navíc automaticky přizpůsobuje doporučenou rychlost podle dominantního poskytovatele e-mailových schránek v cílovém publiku: pro Gmail doporučuje až 6 zpráv za minutu (Gmail je nejpřísnější), pro Resend 50 zpráv za minutu a pro ostatní poskytovatele 30 zpráv za minutu.

💡 Při prvním použití nové odchozí domény se vyplatí nastavit výrazně nižší limity a postupně je v následujících kampaních zvyšovat. Poštovní servery hodnotí nové odesílatele přísněji a rychlý nástup objemu může vést k okamžitému zařazení na blacklist.

Runner — proces rozesílky

Runner je interní pracovní proces, který kampaň fyzicky obsluhuje — tedy vyzvedává z fronty jednotlivé příjemce, odesílá jim zprávy a zaznamenává výsledek. Každá běžící kampaň má právě jednoho runnera, identifikovaného ID ve sloupci tabulky. Aby systém odhalil situace, kdy runner spadne nebo zamrzne, posílá runner pravidelně takzvaný heartbeat signál — pokud signál přestane chodit, kampaň se automaticky uvolní a může ji převzít jiný runner (například po restartu systému). Díky tomu nedochází k zaseknutí kampaně kvůli technickému výpadku jediného procesu.

Runner v průběhu práce:

  • Přebírá kampaň podle vyjednaného ID a pravidelně posílá heartbeat signály.
  • Připárovává kontakty do fronty po dávkách podle rychlostního limitu a plánovaného času.
  • Odesílá e-maily přes nakonfigurované SMTP, vkládá tracking pixel a odhlašovací patičku.
  • Aktualizuje stav každého odběratele (datum odeslání, počet neúspěšných pokusů, případnou chybovou hlášku).

Maximální počet neúspěšných pokusů u jednoho kontaktu je 5. Po jejich vyčerpání se příjemce přeskočí a označí jako neodeslaný, aby kampaň nezamrzla na jedné problematické adrese a zbytek seznamu dostal zprávu včas.

Akce nad kampaní

V detailu kampaně i v kontextovém menu řádku jsou k dispozici akce, kterými obsluha řídí kampaň v průběhu jejího životního cyklu. Pro většinu situací stačí Start a Zastavit; speciální akce jsou určené pro řešení chybových stavů nebo pro kontrolované experimenty. Díky jejich kombinaci lze kampaň dočasně zmrazit, obnovit po výpadku nebo nechat vyčistit frontu před novou iterací.

  • Start — spustí kampaň, nastaví čas startu a uvolní ji do fronty runnerů; slouží i pro obnovení po manuálním zastavení.
  • Pozastavit (pause) — uvolní aktuálního runnera, kampaň zůstává v běhu, ale dočasně nikdo nerozesílá.
  • Obnovit (resume) — po pauze obnoví heartbeat a zruší příznak „dokončeno"; runner ji znovu převezme.
  • Zastavit / Zrušit (stop / cancel) — označí kampaň jako dokončenou, uvolní runnera a zastaví další odesílání.
  • Opakovat (repeat) — resetuje všechny již odeslané příjemce a spustí kampaň znovu; každý příjemce tak dostane zprávu podruhé.
  • Zkusit znovu neúspěšné (retry failed) — vynuluje počet pokusů u selhavších kontaktů a nastaví kampaň zpět do běhu.
  • Vyčistit čekající (clear pending) — smaže všechny dosud neodeslané příjemce bez chyby.
  • Zobrazit statistiky / Zobrazit log — otevře detailní přehled doručení a technických událostí.

⚠️ Akce Opakovat je destruktivní ve smyslu zákaznické zkušenosti — příjemci dostanou tutéž zprávu ještě jednou. Používejte ji pouze tehdy, víte-li, že první pokus skutečně selhal. Pro zopakování jen chybových odeslání slouží cílenější akce Zkusit znovu neúspěšné.

Tracking otevření a geolokace

Do každé odesílané zprávy systém automaticky vkládá malý neviditelný obrázek — takzvaný tracking pixel. Když příjemce zprávu otevře, jeho poštovní klient pixel načte ze serveru a systém tím zaznamená, že ke zhlédnutí došlo. Ze stejného HTTP požadavku získá i přibližnou geolokaci a IP adresu, takže lze z analytiky vyčíst, kde a kdy příjemce zprávu četl. Tyto údaje pomáhají vyhodnotit nejen celkový dopad kampaně, ale i vhodný čas odesílání pro danou geografickou skupinu.

U každého otevření se ukládá:

  • Datum a čas otevření — přesný okamžik načtení pixelu.
  • IP adresa — ze které bylo zobrazení provedeno.
  • Geolokace — stát, případně město, odvozené z IP.
  • Opakovaná otevření — počet, kolikrát stejný příjemce zprávu otevřel.

Kromě otevření systém u každého odběratele kampaně sleduje také počet pokusů o doručení, datum úspěšného odeslání a případnou chybovou hlášku SMTP serveru.

ℹ️ Tracking pixel funguje pouze v poštovních klientech, které načítají externí obrázky. Někteří příjemci mají tuto funkci z důvodu ochrany soukromí vypnutou (typicky Apple Mail Privacy Protection), takže statistika otevření je orientační — skutečný počet čtenářů bývá vyšší než naměřený.

Detail kampaně

Kliknutím na předmět se otevře detail kampaně rozdělený do funkčních sekcí, jejichž uspořádání odpovídá typickému pracovnímu postupu — od kontroly obsahu přes průběžné sledování až po závěrečnou analýzu. Záhlaví zobrazuje barevně odlišený stav a tlačítka pro všechny dostupné akce, takže obsluha nemusí přepínat mezi obrazovkami.

  • Obsah kampaně — předmět, HTML obsah, přílohy a vložené obrázky.
  • Tabulka příjemců — seznam všech kontaktů s počtem pokusů, datem odeslání, IP adresou, geolokací a indikátorem otevření.
  • Statistiky doručení — součty odeslaných, doručených, neúspěšných a otevřených zpráv.
  • Log — technický záznam všech událostí jednotlivých runnerů.

Dokončení kampaně

Kampaň se automaticky dokončí, jakmile jsou všichni příjemci obslouženi — buď úspěšně odesláni, nebo po vyčerpání pokusů přeskočeni. Systém nastaví datum dokončení a uvolní runnera, čímž je výpočetní kapacita k dispozici pro další úlohy. Dokončené kampaně zůstávají trvale uloženy pro zpětnou analýzu a srovnání mezi jednotlivými rozesílkami v čase.

💡 Při opakovaných kampaních na stejné publikum se vyplatí sledovat zejména trend v počtu otevření a počtu odhlášení. Prudký nárůst odhlášení je signálem, že by bylo vhodné revidovat frekvenci zasílání nebo charakter obsahu — publikum přestává vnímat kampaně jako relevantní.

Build with the API

Every module shipped here is also exposed via the REST API.