Jump to content

Subscribe — Newsletter subscriptions with multiple lists, double opt-in, and full admin UI


Recommended Posts

Posted

Hi everyone,

I needed a solid subscription module for a client project — something that handles multiple lists, double opt-in, and plugs cleanly into order and contact forms via a PHP API. Nothing in the directory quite fit, so I built Subscribe.

It's been running in production on a few sites since March, so the edge cases are ironed out.

GitHub: https://github.com/mxmsmnv/Subscribe

What it does:

  • Multiple subscription lists with many-to-many subscriber relationships
  • Double opt-in with configurable HTML email ({confirm_url}, {unsub_url} placeholders)
  • Honeypot spam protection — no CAPTCHA needed
  • IP-based rate limiting (configurable threshold and time window)
  • One-click unsubscribe with unique token per subscription
  • WireMail provider selector — works with default, SMTP, Brevo, or any WireMail module

Admin UI (Setup → Subscribers):

  • Sidebar list switcher with subscriber counts
  • Add/toggle/remove subscribers, create/rename/delete lists
  • Search, status filter, pagination
  • CSV import, JSON/CSV export per list
  • Resend confirmation for pending subscribers

PHP API — drop it into any template, order form, or contact form:

$sub = $modules->get('Subscribe');
$sub->subscribe('user@example.com', $listId);

Hookable event for integrations (Telegram notifications, CRM sync, etc.):

$wire->addHookAfter('Subscribe::subscribed', function(HookEvent $event) {
    // $email, $listId, $subscriptionId
});

Ships with an Alpine.js form block ready to drop into any template.

Requirements: ProcessWire 3.x, PHP 8.0+

MIT License.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...