Simple Newsletter Documentation

Simple Newsletter turns your Joomla site into a self-hosted mailing list: a subscribe form on the front end, double opt-in confirmation, e-mail templates with placeholders, and batched sending that survives a PHP timeout. This page is the complete manual.

Contents

  1. What gets installed
  2. Requirements
  3. Installation
  4. Quick start
  5. Options reference
  6. Subscribers
  7. Templates and placeholders
  8. Starter layouts
  9. Sending a newsletter
  10. Send history and resuming
  11. The subscribe module
  12. A subscription page
  13. Unsubscribing
  14. Permissions
  15. Database tables
  16. Troubleshooting
  17. Updating and uninstalling

1. What gets installed

The package pkg_simplenewsletter.zip installs two extensions:

  • Simple Newsletter (com_simplenewsletter) — the component, with its administrator screens and the front-end endpoints that handle confirmation and unsubscribe links.
  • Simple Newsletter Subscribe (mod_simplenewsletter) — the site module holding the subscribe form.

It also creates four database tables and one example template called Default newsletter, so there is something to look at immediately.

In the administrator you will find Components → Simple Newsletter with four screens: Subscribers, Templates, Send Newsletter and Send History.

2. Requirements

  • Joomla 5.1 or newer, including Joomla 6
  • PHP 8.1 or newer
  • MySQL or MariaDB
  • A working mail setup in Global Configuration → Server → Mail

No cron job and no external service are needed. If your contact form already delivers mail, so will this.

3. Installation

  1. Log in to the administrator as a Super User.
  2. System → Install → Extensions.
  3. On the Upload Package File tab, drop in pkg_simplenewsletter.zip.
  4. Wait for the success message.

If the install fails, the usual cause is an upload limit rather than the package: check upload_max_filesize and post_max_size in your PHP configuration, or use the Install from Folder tab after uploading the ZIP by FTP.

4. Quick start

Five minutes, in this order:

  1. Check the sender. Components → Simple Newsletter → Options → Sender. The default, Use Joomla Global Configuration, is usually correct.
  2. Publish the module. Content → Site Modules → New → Simple Newsletter Subscribe. Pick a position and publish.
  3. Subscribe yourself from the front end and click the link in the confirmation e-mail. This proves the whole opt-in chain works before you invite anyone.
  4. Look at a template. Templates → open Default newsletter, or create one and press Start from a layout.
  5. Send a test. Send Newsletter → pick the template → put your address in the test field → Send test. When that looks right, press Send Now.

5. Options reference

Components → Simple Newsletter → Options.

Sender

Sender settings Either Use Joomla Global Configuration (default) or Enter settings manually. The three fields below appear only in manual mode.
From name The name recipients see. Left empty, the Global Configuration value is used.
From email The address messages are sent from. Left empty, the Global Configuration value is used. It must be an address your SMTP account is allowed to send from.
Reply-to Where replies go. Left empty, replies go to the From address.

Whatever you choose here, the Send screen shows the address that will actually be used and where it came from, so there is no guessing.

Sending

Emails per batch Default 25. How many messages are sent per request. Lower it if your server times out; raise it on a fast host to finish sooner.
Add List-Unsubscribe header Default Yes. Adds the Unsubscribe control that Gmail and Outlook show next to your name. Leave it on: readers who can unsubscribe in one click do that instead of reporting spam, which protects your domain.
Keep recipient detail for (days) Default 30. Each send stores one row per recipient so you can see which addresses failed. Rows older than this are removed automatically when a send finishes. The summary line in the history is always kept. Set 0 to keep everything forever.
Pause between emails (ms) Default 0. Waits this long after each message. Use it when your host enforces an hourly sending limit — 200–500 ms is a common setting on shared hosting.

Opt-in

Ask for name Whether the subscription form on a menu item shows a name field. The module has its own setting for this.
Confirmation subject Subject of the confirmation e-mail. Left empty, a sensible default including your site name is used. Placeholders work here.
Confirmation email Body of the confirmation e-mail, edited in your normal Joomla editor. It must contain {confirm_link}, or nobody can confirm. Left empty, a plain built-in text is used.
Confirmation link validity (days) Default 7. After this, clicking the link issues a fresh one instead of confirming, and the visitor is told to check their inbox again. Set 0 for links that never expire.
Landing page The menu item visitors land on after confirming or unsubscribing. Left empty, they land on the site root. A short "thank you" article makes a better landing page than the front page.

6. Subscribers

Every address has one of four states:

Pending Signed up but has not clicked the confirmation link. Receives nothing.
Confirmed Clicked the link. Only these receive newsletters.
Unsubscribed Opted out. The row is deliberately kept rather than deleted, so the same address cannot quietly be added again by a later sign-up without a fresh confirmation.
Trashed Hidden from the default list. Use Delete to remove permanently.

From the toolbar you can:

  • New — add an address by hand. Setting it straight to Confirmed skips the opt-in e-mail, which is what you want when importing a list people already agreed to.
  • Actions — mark the selected rows Confirmed, Pending or Unsubscribed, resend the confirmation e-mail, or delete.
  • Export CSV — downloads the list as currently filtered and searched, with id, name, e-mail, state, sign-up date and confirmation date.

Search accepts a name or an e-mail address, or id:12 to jump to a specific row.

7. Templates and placeholders

A template is a reusable newsletter: a title (for your eyes only), a subject line, and an HTML body edited in your normal Joomla editor. Unpublished templates do not appear in the Send screen.

These placeholders work in both the subject and the body, and are replaced for each recipient at the moment the message is sent:

{name} The subscriber's name. Empty if they never gave one — so write "Hello {name}," rather than relying on it.
{email} The subscriber's e-mail address.
{unsubscribe_link} That subscriber's personal opt-out URL. Every newsletter should contain this. All six supplied layouts already do.
{confirm_link} The opt-in URL. Only meaningful in the confirmation e-mail in Options.
{sitename} Site name from Global Configuration.
{siteurl} Your site's root URL.
{date} Today's date, formatted for the site language.

The eye icon in the Templates list opens a preview rendered with sample data, so you can see the result without sending anything.

Two things worth knowing about e-mail HTML: mail clients ignore most modern CSS, which is why the supplied layouts use tables and inline styles; and images must be referenced by absolute URL, because a recipient's mail client cannot resolve a relative path on your site.

8. Starter layouts

In the template editor, Start from a layout opens a picker with six designs. Select one to preview it on the right, then Use this to insert it. If the body already has content you are asked to confirm first, and the subject is filled in only when you have not written one yourself.

Simple letterOne column, no images. Reads like a personal note.
Hero and call to actionDark banner, headline, short body, one prominent button.
Two-column roundupDated masthead with two story cards side by side.
Product gridFour tiles with price and button.
Event invitationDate badge, details block, RSVP button.
Minimal, text onlySerif type, hairline rules, no boxes. Tends to avoid the Promotions tab.

The layouts are ordinary HTML files in administrator/components/com_simplenewsletter/presets/. To add your own, drop in my-layout.html and add an entry to presets.json in the same folder.

9. Sending a newsletter

Components → Simple Newsletter → Send Newsletter.

  1. Choose a template. The preview pane on the right updates as you switch.
  2. Adjust the subject if you want something different from the template's own.
  3. Check the summary: how many confirmed recipients there are, the batch size, and the From address with a note saying whether it comes from Global Configuration or from this component's options.
  4. Send a test first. Put an address in the test field and press Send test. Placeholders are rendered, and if that address is already a subscriber its real token is used, so the unsubscribe link in the test is live.
  5. Press Send Now and confirm.

What happens then: a job record is created and one queue row is written per confirmed subscriber. Messages go out in batches, and the progress bar counts sent and failed as it goes. Each recipient's result is stored individually, so one rejected address does not abort the run.

Sending runs in this browser tab. Leaving the page stops it — but nothing is lost, see the next section. Cancel stops after the current batch; recipients not yet reached are simply left unsent.

10. Send history and resuming

Send History lists every newsletter you have sent, with its status and its sent / failed / total counts. Opening one shows each recipient, and for every failure the reason your mail server gave — an invalid address, a rejected sender, a full mailbox. Filter by Failed to see only the problems.

If a send was interrupted, the job stays in Running with recipients still queued. Both the Send screen and the history list then offer Resume, which picks up exactly where it stopped. Because state is tracked per recipient, nobody receives the message twice.

Housekeeping: per-recipient rows are removed automatically once a finished job passes the retention window set in Options, and Clean up detail rows in the toolbar does it on demand. Delete removes selected jobs and their rows entirely.

11. The subscribe module

Content → Site Modules → New → Simple Newsletter Subscribe.

Intro textA line above the form. HTML allowed.
Show name fieldWhether to ask for a name as well as an address.
Name requiredOnly shown when the name field is on. Asking for less gets you more sign-ups.
Button textDefaults to "Subscribe".
Button CSS classDefaults to btn btn-primary. Put your template's own button class here to match the rest of the site.
Form layoutStacked for sidebars, Inline for a footer strip.
Privacy noteSmall print under the button — a good place for a link to your privacy policy.

The form carries a hidden honeypot field that a human never fills in; submissions that fill it are silently accepted and discarded, so bots get no feedback. It also carries a Joomla CSRF token, which is worth knowing if you cache aggressively — see Troubleshooting.

12. A subscription page

If you prefer a dedicated page to a module, create a menu item of type Simple Newsletter → Subscription Form. It renders the same form full width. Whether the name field appears is controlled by Ask for name in the component Options.

This also makes a good Landing page target for confirm and unsubscribe links.

13. Unsubscribing

Every layout's footer contains {unsubscribe_link}, which resolves to a URL unique to that subscriber. Clicking it sets the row to Unsubscribed and shows a confirmation message on your landing page. Clicking it twice is harmless.

With Add List-Unsubscribe header switched on, messages also carry the RFC 8058 headers that make Gmail, Outlook and Apple Mail display their own Unsubscribe control next to the sender name. That control posts to a dedicated endpoint which answers immediately without redirecting, as the standard requires.

One consequence worth knowing: because the unsubscribe URL is a plain link, a security scanner that follows links in e-mail can occasionally unsubscribe somebody who never clicked. It is rare. If it matters to you, point the Landing page at an article that explains what happened and offers a link back to the subscribe form.

14. Permissions

Options → Permissions exposes the usual Joomla actions plus one of our own:

Access Administration InterfaceSee the component at all.
Create / Edit / Delete / Edit StateManage subscribers and templates.
Send NewsletterSeparate from editing. An editor can prepare templates without being able to send to the whole list.

15. Database tables

#__simplenewsletter_subscribersOne row per address, with state, token and timestamps.
#__simplenewsletter_templatesYour newsletters.
#__simplenewsletter_jobsOne row per send, with counts. Small, kept indefinitely.
#__simplenewsletter_queueOne row per recipient per send, pruned by the retention setting.

#__ is Joomla's table prefix token; on your site it becomes whatever prefix you chose at install.

16. Troubleshooting

Nothing arrives, and no error is shown

Check Global Configuration → Server → Mail → Send Mail. If it is off, Joomla sends nothing and reports no error. The Send screen warns you about this, but it is the first thing to check.

Messages are sent but land in spam, or fail with a rejection

Almost always the From address. If Joomla is sending through SMTP, most providers only allow the account's own address in the From field — sending as This email address is being protected from spambots. You need JavaScript enabled to view it. through an SMTP account belonging to This email address is being protected from spambots. You need JavaScript enabled to view it. gets rejected or silently dropped. The Send screen compares the two and warns when they differ.

Beyond that, deliverability is a domain matter rather than a software one: publish SPF and DKIM records for the domain you send from, and prefer authenticated SMTP over PHP mail.

The send stops partway through

A PHP timeout, or the tab was closed. Open Send Newsletter or Send History and press Resume. To stop it happening again, lower Emails per batch.

"Invalid token" when someone subscribes

The page holding the form was served from cache with a stale CSRF token. Exclude pages carrying the module from your page cache, or turn off Joomla's System - Page Cache plugin for them. This affects every Joomla front-end form, not just this one.

The confirmation e-mail arrives with {confirm_link} shown literally

The custom confirmation body in Options lost the placeholder, or an editor escaped it. Clear the field to fall back to the built-in text, then re-add your wording around a working {confirm_link}.

Confirmation links point at the wrong host

Links are built from your site's own root URL. If the site redirects between the bare domain and www, set the canonical form in Global Configuration so the links match it from the start.

An admin screen shows an error that persists after a fix

Joomla renders error pages with an HTTP 404 status, which browsers and server-side caches happily remember for that exact URL. Add &x=1 to the address to force a fresh request; if that works, the fix is fine and only the cached page was stale.

17. Updating and uninstalling

Updates arrive through System → Update → Extensions like any other Joomla extension — no download key and no account. You can also install a newer package over the old one; Joomla treats it as an upgrade and your subscribers, templates and history are untouched.

To uninstall, remove the Simple Newsletter package from System → Manage → Extensions. That removes the component and the module together.

Uninstalling drops all four tables, including your subscriber list. Export your subscribers to CSV first if there is any chance you will want them back.

Related Articles

About

Saint Art Designs is a freelance Joomla web developer specializing in modern, responsive, and secure websites.

  • Joomla Web Development Service
  • Joomla Web Design
  • Joomla Upgrade
  • Joomla SEO

Why Hire Me?

With over two decades of experience in Joomla development, I deliver high-quality, stable, and scalable websites.

Each project is approached with precision, clear communication, and a focus on long-term value.

Get a Quote

Online Profiles

Freelancer
Upwork
Linkedin
Facebook
Google Review

Contact Info