=== Australcode Email Marketing ===
Contributors: australcode
Tags: newsletter, email marketing, subscribers, double opt-in, email campaigns
Requires at least: 6.5
Tested up to: 7.0
Requires PHP: 8.2
Stable tag: 1.1.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html

Self-hosted email marketing for WordPress — send newsletters from your own server, with double opt-in, one-click unsubscribe, and no monthly fees.

== Description ==

Australcode Email Marketing is a **self-hosted newsletter plugin**: it turns your WordPress site into a complete email marketing platform. Grow a subscriber list with a compliant subscribe form, confirm every contact with double opt-in, and send campaigns from your own server — unlimited subscribers, no monthly SaaS fee, no per-subscriber pricing.

Your subscribers, your campaigns, and your consent records live in your own WordPress database.

= Why self-hosted email marketing? =

* **Your data stays on your site.** Subscribers, consent logs, and campaign history are stored in custom tables in your WordPress database, exportable to CSV at any time.
* **No usage-based pricing.** The free plugin sends through your site's own email transport (wp_mail or your SMTP plugin) — the size of your list never changes what you pay.
* **One admin.** Forms, subscribers, campaigns, and settings live in wp-admin.

= Compliance built in =

* **Double opt-in** — subscribers confirm by email before they can receive campaigns.
* **Consent log** — date, source, and hashed IP recorded for every subscription.
* **One-click unsubscribe** with a standard List-Unsubscribe header — and a preference center where subscribers pick the lists they want instead of leaving altogether.
* **Physical mailing address** added to every email footer, as anti-spam law requires.

= The sending engine =

A queue built on WP-cron batches, throttles, and retries your sends so shared hosting stays happy. The free version sends through your existing email transport (wp_mail or any SMTP plugin); Pro adds high-deliverability transports for larger lists.

= Everything in free =

* Unlimited subscribers and unlimited lists.
* Subscribe form as a shortcode, a block, and a widget — theme-agnostic.
* Double opt-in with a full consent log.
* Preference center: subscribers choose which lists they stay on, or unsubscribe from everything in one click, with a List-Unsubscribe header.
* Broadcast campaigns: subject, template, rich-text body, send now or schedule.
* Audience segmentation — target by engagement, purchases (with WooCommerce), and subscriber fields.
* A/B subject line testing — split your list 50/50 across two subject lines.
* Self-hosted sending queue with batching, throttling, and retry.
* CSV import and export.
* WooCommerce checkout subscribe opt-in (when WooCommerce is active).

= WooCommerce (optional) =

The plugin is standalone and works on any WordPress site. When WooCommerce is active, it adds a consent-first subscribe opt-in at checkout so buyers can join your list in one click.

= Pro =

[Australcode Email Marketing Pro](https://email-marketing.australcode.io) adds scale and automation: high-deliverability transports (Amazon SES, Postmark, Mailgun, Brevo), automations (welcome series, abandoned cart, post-purchase, win-back), a visual block composer with unlimited saved templates, open and click tracking, and resend to non-openers.

= External services =

This plugin uses Freemius (freemius.com) for optional usage tracking, licensing, and Pro upgrades.

* **What it is**: Freemius provides the licensing, checkout, and update delivery for the Pro version, plus an optional "Contact Us" support channel.
* **What data is sent and when**: Nothing is sent without your action. If you explicitly opt in on the activation screen (you can skip it), your admin email address and site URL are sent to Freemius. If you activate a Pro license, your license key, site URL, and admin email are sent to validate the license and deliver updates. Opening the in-admin "Contact" page loads an external Freemius form whose URL includes your site URL and plugin identifiers.
* **Terms of Service**: https://freemius.com/terms/
* **Privacy Policy**: https://freemius.com/privacy/

The Pro version (sold and delivered by Freemius, not hosted on WordPress.org) can send your campaigns through a third-party email delivery provider that you choose and configure:

* **Amazon SES, Postmark, Mailgun, or Brevo** — only the provider you select is contacted.
* **What data is sent and when**: when the sending engine dispatches a campaign (or you press "Send test email"), the recipient's email address, the email subject and body, and your configured sender identity are sent to your chosen provider's API using the API credentials you entered. Nothing is sent to any provider until you configure it and pass its deliverability test.
* Amazon SES — Terms: https://aws.amazon.com/service-terms/ · Privacy: https://aws.amazon.com/privacy/
* Postmark — Terms: https://postmarkapp.com/terms-of-service · Privacy: https://www.activecampaign.com/legal/privacy-policy
* Mailgun — Terms: https://www.mailgun.com/legal/terms/ · Privacy: https://www.mailgun.com/legal/privacy-policy/
* Brevo — Terms: https://www.brevo.com/legal/termsofuse/ · Privacy: https://www.brevo.com/legal/privacypolicy/

== Installation ==

1. Upload the plugin to `/wp-content/plugins/` or install it from the Plugins screen.
2. Activate it.
3. Open **Australcode Email Marketing → Settings** and set your sender name, from address, and the physical mailing address required by anti-spam law.
4. Place the subscribe form on any page (shortcode, block, or widget) — activation creates a default "Newsletter" list for you, and you can add more under **Lists & forms**.
5. Send your first campaign from **Campaigns**.

Documentation and Pro: [email-marketing.australcode.io](https://email-marketing.australcode.io)

== Frequently Asked Questions ==

= Does it need WooCommerce? =
No. It works on any WordPress site. WooCommerce is an optional integration that adds a subscribe opt-in at checkout.

= Where do my subscribers live? =
In custom tables in your own WordPress database. You can export everything to CSV at any time.

= How does it send email? =
Through a self-hosted queue that batches, throttles, and retries over your site's email transport (wp_mail or your SMTP plugin). Pro adds Amazon SES, Postmark, Mailgun, and Brevo for larger lists.

= How is this different from a hosted email service? =
It runs entirely on your WordPress site: your list and consent records stay in your database, sending goes through a transport you control, and there is no monthly or per-subscriber fee for the core plugin.

= Will my emails land in spam? =
Deliverability depends on your sender domain. Use an SMTP plugin or a transactional provider, and set up SPF, DKIM, and DMARC for your domain — see the [deliverability guide](https://email-marketing.australcode.io/docs/deliverability). The plugin covers the list-hygiene side: double opt-in, one-click unsubscribe, a List-Unsubscribe header, and your physical address in every footer.

= Is it GDPR / CAN-SPAM friendly? =
The compliance basics are built in and always on: double opt-in, a consent log (date, source, hashed IP), one-click unsubscribe with a preference center, and a physical mailing address in every footer. Lawful processing for your business remains your responsibility.

= Can I import subscribers from another tool? =
Yes — CSV import (and export) is part of the free version.

= Can subscribers choose what they receive instead of unsubscribing? =
Yes. The unsubscribe link opens a preference center where they tick the lists they want to stay on. Someone who only wants to leave your promotional list keeps getting your product updates instead of disappearing from every list at once. One-click unsubscribe from everything is still there for anyone who wants it.

= Does it slow my site down? =
Sending runs in the background through a WP-cron queue with batching and throttling tuned for shared hosting. You can lower the batch size in Settings if your host limits outgoing mail.

= What does Pro add, and what does it cost? =
High-deliverability transports (Amazon SES, Postmark, Mailgun, Brevo), automations, a visual block composer, open/click tracking, and resend to non-openers. (Audience segmentation and A/B subject testing are free.) Licenses are annual — see [email-marketing.australcode.io](https://email-marketing.australcode.io) for pricing.

== Screenshots ==

1. Dashboard — confirmed subscribers, pending double opt-in confirmations, and the sending engine at a glance.
2. Compose a campaign — subject, template, rich-text body, send now or schedule.
3. Subscribers — status, lists, and the consent record for every contact.
4. Lists & forms — create lists and embed the subscribe form with a shortcode, block, or widget.
5. Settings — sender identity, the physical mailing address for the footer, double opt-in, and batch size.
6. The subscribe form on the front end — theme-agnostic, rendered by the shortcode, block, or widget.

== Changelog ==

= 1.1.0 =
* Added: the preference center now lets subscribers choose which lists they want, instead of only offering to unsubscribe.
* Added: one-click copy button for the subscribe form shortcode on the Lists screen.
* Fixed: saving Settings could wipe stored sending credentials when a Pro licence had lapsed.
* Fixed: campaigns can no longer be sent without the mailing address that anti-spam law requires in the footer.
* Fixed: a campaign delivered with failures is no longer shown with the green "success" badge.
* Fixed: the Upgrade screen showed a purchase pitch to people who had already bought a licence.
* Fixed: the confirmation, unsubscribe and preference pages now have a page title and are excluded from search engines.
* Fixed: accessibility — locked template details no longer fall below the minimum contrast ratio.
* Fixed: choosing "Schedule" without picking a date said "Campaign scheduled." while the campaign stayed a draft and was never sent. It now saves your draft and asks for the date.
* Fixed: the Upgrade screen and the readme described the Pro composer as "drag & drop"; it is a visual block composer with keyboard-friendly controls, and it is now named accurately everywhere.
* Fixed: the Upgrade screen now tells a lapsed licence to renew instead of offering to buy again.
* Fixed: on block themes the confirmation, unsubscribe and preference pages came out with no page title, so the browser tab showed the raw link including the unsubscribe token.
* Fixed: the send confirmation dialog counted the whole list even when a segment was selected, so it could ask you to confirm sending to far more people than the campaign would actually reach.
* Fixed: a single subscriber row with an unrecognised status could take down the whole Subscribers screen.
* Fixed: accessibility — the subscribe form fields now carry proper labels for screen readers instead of relying on the placeholder.

= 1.0.1 =
* Audience segmentation and A/B subject testing are now part of the free version.

= 1.0.0 =
* Initial public release: subscriber lists with double opt-in and a consent log, subscribe form (shortcode, block, widget), broadcast campaigns with scheduling, audience segmentation, A/B subject testing, self-hosted sending queue (batching, throttling, retry), unsubscribe and preference center with List-Unsubscribe, CSV import/export, and an optional WooCommerce checkout opt-in.

== Upgrade Notice ==

= 1.1.0 =
Subscribers can now pick which lists they want instead of only unsubscribing, and campaigns can no longer go out without the mailing address the law requires. Recommended for everyone.

= 1.0.1 =
Audience segmentation and A/B subject testing are now free.
