Markus Michalski FAQ

Newsletter Management: Tracking and statistics

Newsletter tracking in three modes (off, anonymous, personal with consent), statistics dashboard, per-newsletter numbers and data retention with cleanup commands for Sylius

Deutsche Version

Back to overview

Newsletter Management: Tracking and statistics

This documentation always describes the latest published version.

This page explains what the plugin measures about opens and clicks, where you see the numbers and how long which data is kept. Sending itself is covered on Composing and sending.

Tracking modes

You set tracking per channel: admin sidebar, MMKreativ Plugins, Newsletter management, field Tracking in the settings form. The default is Off.

Mode What is measured What is stored
Off Nothing. No pixel and no link rewriting. Nothing
Anonymous (counters only) Opens and clicks as counters per newsletter, link and day One row per newsletter, day and target holding a number. No recipient, no IP, no cookie, no time finer than the day.
Personal, with the subscriber's consent The same counters for everybody, plus individual opens and clicks, but only for subscribers who agreed with their own, optional checkbox Additionally per event: subscription, type (open or click), link and time. No IP, no user agent, no cookie.

Even anonymous tracking has to be named in your privacy policy. Personal tracking all the more, where the subscribers' consent comes on top.

How it works

Tracking only applies to a real send, never to a preview or a test mail.

graph TD
    A["Sending starts"] --> B["Store the HTML links in the link table"]
    B --> C["Per mail: replace links with tracking URLs"]
    C --> D["Append an invisible pixel"]
    D --> E["Recipient opens the mail"]
    D --> F["Recipient clicks a link"]
    E --> G["Pixel request counts one open"]
    F --> H["Click counts, redirect to the stored URL"]

Personal tracking in detail

Honest limits of the numbers

Anonymous opens and clicks are counters, not unique people. Someone who opens a mail three times counts three times. The values per delivery can therefore exceed 100 % and are not open or click rates in the usual sense.

Statistics in the admin

Statistics dashboard

You open the dashboard with the Statistics button in the title bar of the newsletter settings. At the top you choose All channels or a single channel.

Section Content
Key figures Number of confirmed, pending and unsubscribed subscribers, and the confirmation rate: the share of signups that were ever confirmed (double opt-in)
Subscribers over time Last 12 months, per month: new signups, confirmed, unsubscribed and net growth (confirmed minus unsubscribed)
Latest newsletters The last ten newsletters that are sending or were sent (status Sending, Sent or Cancelled) with Delivered (of recipients), Failed, Unsubscribes, Opens and Clicks

The table only shows opens and clicks for newsletters sent with tracking switched on. A dash means nothing was measured.

Numbers per newsletter

Once sending has started, a newsletter's detail page shows a Statistics section:

Data retention

Two cleanup commands delete old data. Both belong in a daily cron job.

15 3 * * * cd /path/to/shop && php bin/console mmd:newsletter:subscription:purge
20 3 * * * cd /path/to/shop && php bin/console mmd:newsletter:tracking:purge

You set the retention periods per channel in the newsletter settings:

Setting Default Allowed Deleted by
Keep unsubscribed subscriptions for (days) 1095 (3 years) 30 to 3650 mmd:newsletter:subscription:purge
Keep unconfirmed signups for (days) 30 7 to 365 mmd:newsletter:subscription:purge
Keep tracking counters for (days) 365 30 to 3650 mmd:newsletter:tracking:purge
Keep personal tracking events for (days) 90 7 to 730 mmd:newsletter:tracking:purge
Command Option Effect
--- --- ---
mmd:newsletter:subscription:purge --older-than=<days> Overrides both retention periods for every channel. Must be a positive number.
mmd:newsletter:tracking:purge --older-than=<days> Overrides both retention periods for every channel. Must be a positive number.

What is deleted and what is not: