v0.16.0
11 October 2026 Latest- Review-link click tracking. The review button in every real invitation now goes through a signed redirect (
GET /review-requests/r/<token>, HMAC over the log row id using the same secret as unsubscribe links) that stampsreview_log.clickedAton the first click and sends the customer on to the review page. Previews and test emails link straight to the review page. The Overview gains a Clicked (30d) tile with the click-through rate next to Sent. - Weekly report. Every Monday at 08:00 (server time) the worker emails last week's figures — invitations sent, review links clicked, orders skipped, failures, opt-outs — against the previous week, plus up to three next steps from the set-up checklist, through the plugin's own SMTP. A Weekly report card in Settings has the on/off switch, the recipient (defaults to the first channel reply-to, then the licence customer, then the trial-reminder address), the last/next send time, Send me a test and Preview. Endpoints:
GET/POST digest/settings,POST digest/send-test,GET digest/preview. - Set-up checklist at the top of the Overview (
GET setup): SMTP reachable, invitation email saved, business name and review page set, sending switched on, first invitation sent — each with a hint and a link to the right tab. Hide it once you are done; it comes back if an item comes undone. The same items feed the weekly report's next steps. - Admin navigation and dashboard widget. "Review Requests" appears in the Marketing section of the admin nav (star icon), and a dashboard widget (Dashboard → Add widget → Review Requests,
GET widget) shows the 7-day invitations sent, review links clicked and opt-outs with a link to the page. - Usage stats to the licence server.
invitesSent,reviewLinkClicks,invitesSkipped,invitesFailedandoptOutsfor the last 30 days are reported through both the evaluation client and the daily heartbeat, so renewal and win-back emails can say what the plugin did. Numbers only.
- Licence banners.
GET metanow includesnotice(trial ending, key expiring, evaluation ended),premiumFeatures,recentStatsandbuyUrl. The licensed banner shows the amber notice strip when one applies and reads "Renews automatically — current key valid until …" for subscriptions; the trial and free banners list what a licence includes and the 30-day figures so far. Every "needs a licence" failure (402 or alicence_required/premium-featurebody) is worded the same way in the admin, and 402 bodies carrybuyUrl. - Send log. A real send writes its
review_logrow assendingbefore the email goes out (so the email can carry that row's click link), then setssentorfailed.logSendreturns the row id. evalStats()reports the last 30 days (was all-timeinvitesSent).- Heartbeat jti. The daily heartbeat reads the key currently in force (
licenceKeyProvider), so an install licensed from the admin page or by the purchase claim no longer reportsunlicenseduntil restart — the licence server keeps its usage stats after purchase.