Listmonk Newsletter Signup
A standalone newsletter sign-up form backed by a self-hosted Listmonk instance. Checks whether an email is already subscribed before registering it. Independent of WordPress user accounts/registration.
★ 0stars
0forks
Install
No release zip yet. The repository archive installs, but the folder name will carry the branch suffix and updates will not flow:
wp plugin install https://github.com/giodc/listmonk-newsletter-signup/archive/refs/heads/main.zipA standalone newsletter sign-up form for WordPress, backed by a self-hosted Listmonk instance. This is NOT a "sync" plugin — it has nothing to do with WordPress user accounts or registration. It only powers a newsletter opt-in form, and checks Listmonk first so an email is never registered twice.
Installation
- Upload the
listmonk-connectorfolder via WordPress Admin -> Plugins -> Add New -> Upload Plugin (using the zip), or drop the folder into wp-content/plugins/. - Activate "Listmonk Newsletter Signup".
- In Listmonk, go to Admin -> Users -> New and create a dedicated API user (do NOT reuse your personal admin login). Copy its username and the generated API token.
- In WordPress, go to Settings -> Listmonk Newsletter and fill in:
- Listmonk URL (e.g. https://lists.example.com)
- Auth Method: "API Token" for Listmonk v4+, "Basic Auth" for older installs
- API Username / API Token
- List ID(s) - comma separated, found under Lists in Listmonk admin
- Click "Test Connection" to confirm WordPress can reach the API.
- (Optional) Tick "Enable ALTCHA" to add a self-hosted, privacy-friendly proof-of-work captcha (https://altcha.org) to the sign-up form. No third-party account or API key is needed — WordPress generates and verifies the puzzle itself. A signing key is auto-generated the first time you save settings.
- Place the shortcode wherever you want the sign-up form: [listmonk_subscribe_form] Optional attributes: [listmonk_subscribe_form button_text="Join the list" show_name="no"]
What it does
- Renders a small email (+ optional name) opt-in form via the [listmonk_subscribe_form] shortcode.
- On submit (AJAX, no page reload):
- If ALTCHA is enabled, verifies the visitor solved the proof-of-work puzzle (server-side, cryptographic check — no external API call).
- Looks up the email in Listmonk (subscribers.email = ...).
- If found: tells the visitor they're already subscribed. No duplicate is created.
- If not found: creates a new Listmonk subscriber on the configured list(s).
- Includes a basic honeypot field for spam protection, plus optional ALTCHA.
- Exposes a public PHP function, listmonk_connector_ensure_subscribed( $email, $name ), in case you'd rather wire your own custom form markup to it instead of using the shortcode.
About the ALTCHA integration
- ALTCHA (altcha.org) is a free, open-source, GDPR-friendly captcha alternative based on proof-of-work rather than image/text puzzles.
- This plugin implements the classic SHA-256 challenge/response scheme entirely in PHP with no Composer dependency: WordPress generates a challenge (a salted hash plus an HMAC signature), the front-end widget brute-forces the answer, and WordPress verifies the signature and solution again on submit.
- The widget's JavaScript is loaded from the public jsDelivr CDN by
default. If you'd rather avoid loading any third-party script, download
altcha.min.js from https://github.com/altcha-org/altcha and use the
lmc_altcha_widget_script_urlfilter to point at your own copy, e.g.: add_filter( 'lmc_altcha_widget_script_url', function() { return get_stylesheet_directory_uri() . '/js/altcha.min.js'; } ); - The signing key is stored in the
lmc_settingsoption and never leaves your server. Use the "Rotate secret key" checkbox on the settings page if you ever need to invalidate it.
What it deliberately does NOT do
- It does not hook into WordPress user registration, login, or profile updates. WordPress accounts and Listmonk subscribers are treated as completely separate concepts.
- It does not import/export or two-way sync any existing WordPress users or Listmonk subscribers in bulk.
Notes
- The plugin never sends a WordPress login password to Listmonk. Use a Listmonk API user created specifically for this integration, and rotate its token if you ever suspect it's exposed.
- "Double opt-in" in the settings controls whether new subscribers are marked confirmed immediately or left pending Listmonk's normal opt-in email flow, depending on how your Listmonk lists are configured.