• v0.3.2 22fc58a689

    UltimateByte released this 2026-05-23 23:54:14 +02:00 | 67 commits to main since this release

    Newsletter 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 on wp_users user_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 prunes tracking_events past lrob_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 (paginated newsletter_recipients view 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_all now 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