-
released this
2026-05-23 23:54:14 +02:00 | 67 commits to main since this releaseNewsletter alpha (still alpha — needs field testing)
Step 9 — tracking pipeline. Every outbound newsletter gets a per-recipient rewrite pass before send: image URLs and link hrefs are routed through HMAC-signed REST endpoints (
/wp-json/lrob-etk/v1/nl/track/{img,click}/<token>). Newsletters without any<img>get a 1×1 open pixel appended. Test sends (separate code path) bypass the pipeline entirely.Counters. Open + click events bump per-recipient (
newsletter_recipients.opens/clicks) + per-newsletter aggregate (opens_count/unique,clicks_count/unique) + per-subscriber lifetime stats (total_opened/clicked,last_engagement_at,sends_since_engagement). Mirror keys onwp_usersuser_meta for WP-user recipients.Cold-subscribers sub-tab in Subscribers admin filters by
sends_since_engagement >= threshold(default 5). Settings page exposes the threshold + an opt-in to count opens as engagement (off by default — Apple MPP server-side image loads inflate opens to ~100%). Daily retention cron prunestracking_eventspastlrob_etk_nl_tracking_retention_days(default 365).Also in this release
- Newsletter list polish from v0.3.1: sub-tabs (In preparation / Sent / Trash) with live counts, trash system (
wp_trash_post+ Restore + Empty-trash), recipients drawer (paginatednewsletter_recipientsview with status-filter chips + email/name search + cross-link to Logging entries on failed rows). Newly-created newsletters sort to the top. - Display fix:
NewsletterRepository::list_allnow selects the opens/clicks counter columns so the card actually shows what the tracking endpoint records. - fr_FR translations complete (1142 strings).
Still alpha — please report any issue on GitHub.
Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Newsletter list polish from v0.3.1: sub-tabs (In preparation / Sent / Trash) with live counts, trash system (