About this plugin
My Newsletter is a lightweight WordPress newsletter plugin focused on a practical use case many site owners need immediately:
- Send a campaign to WordPress users.
- Send a campaign to commenters (optionally only commenters from a specific post).
- Import and manage your own mailing list (CSV/TXT upload, simple XLSX upload, or paste emails).
- Queue the campaign and process it in the background (batch sending).
- Include unsubscribe links in every message.
- Track basic campaign progress in the admin area.
- Optional file logging for troubleshooting large sends.
- Optional built-in SMTP settings (with SMTP test) (no external SMTP plugin required).
- Save and load reusable email templates (v2.5.0).
- Manage templates (edit/rename/duplicate/delete) from My Newsletter → Templates (v2.6.0).
- Import/export templates as JSON for backup and migration (My Newsletter → Templates) (v2.6.1).
This plugin is intentionally simple and WordPress-native:
- Email sending uses wp_mail() (https://developer.wordpress.org/reference/functions/wp_mail/).
- Background processing uses WP-Cron (https://developer.wordpress.org/plugins/cron/).
- File uploads in the admin import flow use wp_handle_upload() (https://developer.wordpress.org/reference/functions/wp_handle_upload/).
Mailing list import & management (v2.3.0)
My Newsletter lets you import and manage your own subscriber list:
- Import subscribers via CSV/TXT upload, simple XLSX upload, or copy/paste.
- Preview the first rows before writing to the database.
- Choose merge behavior: Update existing or Skip existing.
- Built-in list tools: search, export CSV, delete selected, delete all matching search, and delete by domain.
- Suppression list (unsubscribed): view/export and remove suppression (admin-only).
Important: You are responsible for ensuring you have a lawful basis/consent to email imported contacts, and every campaign must include a working unsubscribe option.
Then, when composing a campaign, choose Mailing list (imported) as the recipient source.
Core functionality
-
Campaign composer (admin screen)
- Create a newsletter subject and HTML content.
- Use the WordPress editor for message body content.
- Choose recipient source:
- Users + Commenters
- Users only
- Commenters only
- Commenters on a specific post
- Mailing list (imported)
-
Background queue processing
- Recipients are queued in custom plugin tables.
- Sending runs in batches through WP-Cron (instead of trying to send everything in one browser request).
- Reduces the risk of timeouts and broken sends on slower hosting.
-
Test email before full campaign
- Send a test message to any email address from the composer screen.
- Uses the same rendering path and unsubscribe footer logic as real sends.
-
Secure unsubscribe links
- Every email includes an unsubscribe URL.
- Unsubscribe tokens use an HMAC-based signature (derived from WordPress salts; see wp_salt() https://developer.wordpress.org/reference/functions/wp_salt/).
- Unsubscribed addresses are stored and skipped in future campaigns.
-
0)
- Save the current subject + content as a template.
- Load a saved template into the composer to reuse it for a new campaign.
- Templates are stored locally on your site (not sent anywhere).
-
Template variables (placeholders)
- {{site_name}}
- {{site_url}}
- {{recipient_name}}
- {{recipient_email}}
- {{unsubscribe_url}}
-
Settings screen
- From name
- From email
- Reply-To (optional)
- Max emails per cron run (batch size)
- Footer HTML (appended to outgoing emails)
- Logging (optional)
-
3)
- Enable logging in Settings → Logging.
- View, download, and clear logs in My Newsletter → Logs.
- Logs are stored in wp-content/uploads/my-newsletter/wpnl.log.
-
Basic campaign tracking
- Shows recent campaigns in admin.
- Displays queue progress (total / sent / failed / queued).
User Guide (v2.3.3)
1) Quick start (5–10 minutes)
- Install and activate the plugin.
- Go to My Newsletter → Settings and set:
- From name
- From email (prefer an address on your domain)
- Go to My Newsletter (campaign composer) and send a Test email to your own address first.
- Create a campaign:
- Enter Subject
- Enter Message (HTML supported via the editor)
- Choose recipients (Users / Commenters / Mailing list)
- Click Queue & Start Sending (wording may vary by screen)
If you don’t see progress, read the “WP‑Cron” section below.
1B) Email templates (Save / Load) (v2.5.0)
On the My Newsletter campaign screen you can reuse content without retyping:
- Write your Subject and Content (or load an existing template).
- To save: enter a template name and click Save Email Template.
- To load: choose a template from the dropdown and click Load Email Template.
g. “Welcome email”, “Promo template”), then adjust the final message before queuing.
1C) Manage Templates (v2.6.0)
Use My Newsletter → Templates to manage your saved templates:
- Add New to create a template from scratch.
- Edit to update the template name (rename), subject, or body.
- Duplicate to quickly create a variation.
- Delete to remove a template you no longer need.
Templates are local to your site and can be loaded into the campaign composer using Load Email Template.
2) Settings explained (My Newsletter → Settings)
-
From name / From email
Used as the sender identity in outgoing messages. org/reference/functions/wp_mail/).
-
Reply‑To (optional)
If you want replies to go to a different inbox than “From”.
-
Max emails per cron run (batch size)
Limits how many emails each WP‑Cron run tries to send. Smaller batches reduce timeouts on shared hosting.
org/plugins/cron/).
-
Footer HTML
Appended to every message. Best practice is to include:
- your site name,
- a short reason why the recipient is receiving the email,
- and an unsubscribe link (the plugin can insert {{unsubscribe_url}} ).
-
3)
Enable logging when troubleshooting unexpected queue behavior or mail failures.
- Go to My Newsletter → Settings → Logging and enable the log file.
- Re-run sending (WP-Cron or “Run queue now”).
- Open My Newsletter → Logs to view, download, or clear the log.
log.
3) Creating a campaign (My Newsletter → Campaigns)
- Subject: what recipients will see.
- Message body: use the editor; HTML is allowed.
- Placeholders: you can personalize using:
- {{recipient_name}}, {{recipient_email}}
- Recipients: choose one:
- Users (WP users)
- Commenters (emails from approved comments)
- Commenters for a specific post
- Mailing list (imported)
Then click the action button to queue recipients and start sending.
4) Recipient sources: what exactly is included
-
Users
user_email ). org/apis/wpdb/).
-
Commenters
org/reference/functions/get_comments/).
-
Commenters on a specific post
Same as Commenters, but filtered by post ID.
-
Mailing list (imported)
Uses subscribers stored by this plugin in its own table. This list is independent from WP users/comments.
5) Mailing list import (My Newsletter → Mailing List)
You have two import methods: Upload file or Paste.
5A) Upload (CSV/TXT)
Best and most reliable method.
Recommended columns
* email (required)
* name (optional)
CSV example
email,name
com,Ana
com,Marko
The plugin will:
* accept comma/semicolon/tab-delimited CSV (delimiter auto-detected),
* accept a header row if it contains email,
org/reference/functions/is_email/),
* deduplicate by email during the import batch,
* skip emails that are already unsubscribed.
Export from Excel / Google Sheets
* Export to CSV. XLSX support exists, but CSV is safer for complex sheets.
5B) Upload (XLSX)
XLSX support is intentionally minimal to keep the plugin lightweight.
Requirements:
* First worksheet (sheet1)
* Column A = email
* Column B = name (optional)
* If cell A1 contains “email”, that row is treated as header and skipped
If your XLSX is more complex, export to CSV first.
5C) Paste emails (copy/paste)
Paste supports:
* one email per line,
* comma/semicolon separated emails,
com>,
* 2-column lines: email,name or name,email (comma/tab/semicolon).
Examples:
com
com,Marko
com
com
After import, the screen shows:
* imported count,
* invalid count,
* duplicate count,
* skipped unsubscribed count.
5D) Import workflow (Preview + merge rules)
- Go to My Newsletter → Mailing List.
- Upload a file (CSV/TXT/XLSX) or paste emails.
- Click Preview import.
- Confirm you have lawful basis/consent (required).
- Choose merge behavior:
- Update existing (recommended): update name/source/updated_at for existing emails.
- Skip existing: only add new emails.
- Click Import now.
After import, you can export and clean the list using:
* Export subscribers CSV,
* Delete selected (bulk),
* Delete all matching search,
g. com ).
6) Viewing and managing the list
In My Newsletter → Mailing List, you can:
* see the total subscriber count,
* search by email or name,
* browse paginated results,
* export subscribers as CSV,
* delete selected subscribers (bulk),
* delete all subscribers matching the current search (with confirmation),
g. com ) for quick cleanup.
In Mailing List → Suppression list, you can:
* view unsubscribed emails (suppressed),
* export suppression list as CSV,
* remove suppression (admin-only) if you need to re-subscribe someone manually.
7) WP‑Cron and reliable background sending
This plugin uses WP‑Cron to send queued emails in batches. WP‑Cron runs on site visits (traffic).
org/plugins/cron/).
For reliable sending on production:
php at a fixed interval.
org/plugins/cron/#what-is-wp-cron.
Admin tools:
* In My Newsletter → Settings, use Run queue now (admin-only) to process one batch immediately for testing/troubleshooting.
* The Settings screen includes ready-to-copy cron examples (curl/wget) for common hosting setups.
8) Deliverability (what matters most)
org/reference/functions/wp_mail/).
Deliverability depends on your mail transport and DNS.
If you care about inbox placement:
* Use an SMTP provider (or transactional email service).
* Use a sender on your own domain.
* Configure SPF/DKIM/DMARC (vendor-specific docs).
9) Compliance and consent (your responsibility)
The plugin provides unsubscribe links, but it does not enforce consent or double opt‑in.
You must only email people you have a lawful basis to contact and you must honor opt‑outs.
- FTC CAN‑SPAM overview: https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business
- EU GDPR overview (lawful basis, consent, etc.): https://commission.europa.eu/law/law-topic/data-protection/reform/what-does-general-data-protection-regulation-gdpr-govern_en