Email Delivery changelog

Every version, newest first, with the date it was released. Updates install from your Plugins screen.

Latest version 1.7.023 Oct 2026first released 14 Sep 2026

1.7.0

  • New Set the mail connection in wp-config.php. Define TRML_HOST, TRML_PORT, TRML_ENCRYPTION, TRML_USERNAME, TRML_PASSWORD, TRML_FROM_EMAIL, TRML_FROM_NAME or TRML_PROVIDER and the site sends that way, with the password never stored in the database. Settings shows those fields greyed with "Set in wp-config.php", saving or importing does not change them, and the test, the port finder and the daily sign-in check use them. On a network they apply to every site, and a must-use plugin can give one site its own.
  • Fixed A copy made with a search and replace of your domain now holds its email too. Most migration tools copy the database and then replace the live domain everywhere in it, which also rewrote the address Email Delivery had noted, so the copy took itself for the real site and emailed real customers. The address is now also kept in a form that replacement cannot change, and the notice names where the site was really set up.
  • Fixed A copy whose log table is missing no longer loses its email. A held message was refused with nothing kept. The table is now made again, and where the database will not allow that, the message is sent as usual and the notice says how many went.

1.6.0

  • New Copies of your site never email your customers. After a real move to a new address, your site's email waits until you confirm the move: press "This is the real site now" on the notice and what was held is sent, oldest first. A staging, development or local copy, or a clone at another address (until 1.7.0, except a clone whose domain was replaced with a search and replace), holds every message in the log instead of sending it, and the test email still goes. Settings has a switch to send as usual.
  • Improved Pages that send no email no longer ask the database for Email Delivery's settings. Its settings and alert are loaded with WordPress's own options, and the routine-email switches are read only when one of those emails is sent.
  • Improved No retry job every five minutes. A refused message is tried again at the time it is due, and nothing runs while nothing is waiting. The old five-minute job goes on update.
  • Improved Lighter admin screens. Email Delivery's screens no longer load WordPress's media library and colour picker, which none of them uses.
  • Improved Faster pages on sites in Spanish or French. The translations now also ship as PHP files, which WordPress 6.5 and later reads from PHP's code cache instead of reading the translation file again on every page. Measured on a French site with all fifteen of our plugins: 6.3 ms and 0.8 MB of memory less on every request. Older WordPress reads the translations as before.
  • Improved Opening the plugin's screens asks less of your server. To make switching tabs instant, the plugin loads its other screens in the background while you read the first one. It now loads at most four, the plugin's own tabs first, and none while the browser tab is in the background; a tab past the fourth loads as your pointer reaches it.
  • Changed The suggested privacy policy text says a message waiting to be sent again, or held while the site moves, is kept until it goes.
  • Fixed Use port no longer switches the daily sign-in check off for you. On a site set up before the daily check existed, pressing Use port after a test, or importing a settings file, saved the check as off and the Dashboard stopped offering it. Now only switching it on, or saving Settings with it off, answers the offer.
  • Fixed Other ports are promised only where they are tried. The Dashboard's Sign-in card and Send a test said other ports would be tried even with Encryption set to None or a mail server name that cannot be found. Now they say so only when ports will be tried, and a test that tries none says why in one line. wp email-delivery test --ports no longer says that a mail server whose name cannot be found answered.
  • Fixed Notes that should be hidden stay hidden. A hint or note a screen had hidden could still show, because the style that lays hints out outranked the browser's own rule for hidden things. Hidden things on the plugin's screens now always stay hidden.

1.5.0

  • New Send a test finds a port that gets through. When your host blocks the mail port and Encryption is TLS or SSL, the test tries up to three other ports your mail service publishes, for at most 15 seconds, and offers a Use port button for one that answers. Nothing changes until you press it; wp email-delivery test --ports does the same from the command line.
  • Improved The Dashboard points to the port finder. When the sign-in check could not connect and other ports could help, the Sign-in card links to Send a test.
  • Fixed An email that missed one address no longer hides an outage. A message refused for one stale address used up the day's alert email and Slack or Discord post, so when sending stopped altogether an hour later nobody was told until the next day. Each kind of problem now has its own once-a-day alert, and the notice always shows the more serious one.
  • Fixed A refused sign-in is no longer hidden by an email that missed an address. The daily sign-in check's alarm, email and post now replace a standing "did not reach every address" instead of being dropped.

Earlier versions

September 2026 31 versions

1.4.1

  • Changed A message your mail server took for some of its addresses and refused for others reads Partly sent, in amber, not Refused, in the log, the order's box, the spreadsheet and a personal data export.
  • Fixed Send it again on an order, and Send again in the log, no longer say "Could not send" when the email reached some of its addresses. The screen says whom it was sent to and what the server said about the rest, the order gets its note, and the order's box names who already has the email before you press.
  • Fixed Without a backup connection, a message the mail server took for some of its addresses is no longer tried again, so the customer no longer gets another copy on every retry. Correct the refused address and send the message again from its page.
  • Fixed The alert for a message that reached some of its addresses no longer says email is not going out, in wp-admin, on the Dashboard, by email and in Slack, Discord or web address alerts.
  • Fixed The log names a WooCommerce email's order by the order number WooCommerce shows, not its internal ID.
  • Fixed Searching the log for an address pasted as Jane Doe <jane@example.com> finds the messages sent to her, and a + in a searched address is kept when you change tab, page or download.

1.4.0

  • New An order's emails, on the order screen. With WooCommerce, each order's edit screen has an Emails about this order box listing the newest 50 emails WooCommerce sent about it since this update: for the customer or the shop, who it went to, when, and what the mail server said. Send it again resends the order email the way WooCommerce's own order actions do, and adds a note to the order.
  • Fixed With a backup connection set up, a message the mail server took for some of its addresses is no longer sent to all of them again. Its Send again opens the message's page, where the form starts with only the refused addresses, and a retry that reaches some addresses is recorded the same way.
  • Fixed One click can no longer send a message you already sent again to a corrected address back to the old address, and a Refused message being sent right now is no longer offered for one-click Send again in another tab.
  • Fixed A message being sent right now, or whose last try was cut off, says on its page that it may already have gone, and sending it again from there sends nothing if it went after the page opened.
  • Changed Delete in the log asks first, naming the message and saying when it is still waiting to be tried again. Opened in a new tab or from a saved link it deletes nothing.
  • Fixed Empty the log says how many messages waiting to be tried again go with it, and empties nothing if more are waiting by the time you answer.

1.3.3

  • Fixed Send again in the log no longer sends a second copy of a message the automatic retry, or the same button in another tab, sent in the meantime. The one-click Send again now checks the message when you press it: if it was delivered or tried again since the log opened, nothing is sent and the log says whether it went. A message shown as Trying again with no next attempt opens its page instead of sending at once.
  • Fixed Empty the log always asks first. Opened in a new tab, with the middle mouse button or from a saved link, it used to empty the log with no question. It now empties nothing that way, and the Log screen asks the question again.

1.3.2

  • Fixed The From Domain panel quotes the exact part of an SPF record to remove. It now shows any + or ? in front and any dot at the end, as your record writes it. Removing only what 1.3.1 named left a stray + or dot that receiving servers reject. A loop found before this update is checked again at the next daily check, and until then the panel offers Check now.
  • Fixed An SPF loop between your From subdomain and your main domain says what to change. The panel names the include of the subdomain to take out of the main domain's record, which ends the loop and keeps every server your main domain lists. Before, it said to ask whoever runs your main domain.
  • Changed A part of an SPF record that receiving servers cannot read shows as Needs a change. A + or a dot on its own, a dash pasted in place of -, or an address without ip4: in front makes receiving servers reject the whole record, so it no longer shows as Found. In your own records the panel names the record and the part in quotes; in a mail service's records it says to ask the service.

1.3.1

  • Fixed An SPF record that leads back to itself needs a change. It now shows as Needs a change instead of Found, and the From Domain panel names the part of your record to remove, or says to ask your mail service when the loop is in its own records. Until 1.3.2 the part it named left out any + or ? in front and any dot at the end, and a loop between a From subdomain and its main domain said to ask whoever runs the main domain.

1.3.0

  • New Check your sending domain. The Dashboard checks the SPF and DMARC records of the domain your emails are sent from, and the DKIM record for mail services that use a fixed name for it, and says in plain words what to add or fix for the service you use.

1.2.1

  • Fixed French counts zero in the singular. French writes "0 message", not "0 messages", and the plugin's French now counts the way WordPress's own French does.

1.2.0

  • New Failure alerts can also go to Slack, Discord or a web address of your own. When a message is refused or given up on, or the daily sign-in check warns, the plugin can post the alert from your own server to a Slack or Discord channel or to an https address you choose, at most once a day, so you hear about it even when email itself has stopped; switch it on in Settings > When it does not arrive, and try it with "Post a test alert" on Send a test. An address WordPress will not post to, such as one on a private network or an unusual port, is refused when you save it, and the saved address is kept scrambled and left out of an exported settings file. The address a failed message was for is left out of the alert unless you switch it on, and if you do, the privacy policy text the plugin suggests says so.
  • Changed Sites that send through Microsoft 365 with a password now see a warning on the Dashboard. Microsoft switches that sign-in off by default at the end of December 2026, and the warning says so, links to Microsoft's announcement and says what to do instead. It shows while your main or backup connection signs in to Microsoft 365 with a password, and goes once neither does.
  • Fixed Sending a test no longer leaves a stray word in the address bar. It used to add test_sent or test_failed there, which nothing on the screen explained. The result box on Send a test already says what happened.

1.1.0

  • New The mail server sign-in is checked every day. If your site sends through a mail service, the plugin now signs in to it once a day and straight out again, sending nothing, so a revoked password or a deleted key usually shows up on a wp-admin notice and in the alert email before a customer's email fails. It warns only after two bad checks in a row, ten minutes apart, and says whether the server refused the sign-in, offered none or could not be reached; the Dashboard has a Sign-in card with the last result, Send a test has a "Check the sign-in now" button, and wp email-delivery check does the same from the command line. It is on for new installs, and a site that already had the plugin keeps it off until you switch it on, from the offer under Worth doing next on the Dashboard or in Settings > When it does not arrive.
  • New Open any message in the log, and send it again. Click a message's subject in the log to see who it went to, any Cc and Bcc, which plugin sent it, which connection took it and what the mail server said. With "Keep the message itself as well" switched on (it is off by default), the message is shown too, with nothing in it allowed to run and pictures from other sites held back until you ask for them, and you can send it again to the same address or to the one the customer meant, with the log linking each new copy to the original. An email holding a password link, such as a password reset, only goes back to the address it was sent to, and the key in its link is hidden on the page.
  • Changed The warning that email is not going out now shows on this plugin's own screens too. It used to be left off all of them, Settings included, which is where you go to put it right; now only the Dashboard leaves it out, because its own banner says the same thing. It also looks like the rest of our notices now.
  • Fixed Your mail server sign-in stays hidden in the conversation on Send a test. A mail server that repeats the site's sign-in back when refusing it could leave it readable there, in a conversation the screen says is safe to paste into a support request, and it is hidden now. The step where the site switches on encryption, and the line where the server lists the sign-ins it accepts, no longer show as hidden when nothing was.
  • Fixed The log names the plugin that really sent each message. "Asked by" said WordPress on every row, WooCommerce's order emails included, and now names the plugin or theme that asked; the From address in the log's spreadsheet download is now the one each message really went out with, rather than this plugin's own setting. Messages logged before the update keep what was written then.
  • Fixed Send again, Delete and Empty the log say what they did. Each came back to the log with nothing on the screen, so you could not tell whether a message had gone again or a row had been deleted.

1.0.21

  • Fixed A message waiting to be tried again goes once, even when two runs reach it together. The five-minute retry and wp email-delivery retry now each take a message before sending it, so a message two runs reach at the same moment is sent once, not twice. The command also says how many messages it left to the other run.
  • Fixed A refused message waiting to be sent again no longer keeps its copy of the email for good. The daily tidy-up now gives up on a waiting message when "Keep a refused message and try again" is switched off, when it is older than the days you keep the log for, and when its last attempt was cut off part way and the message is a day old. Giving up deletes the copy unless "Keep the message itself as well" is on, and the row is then trimmed like any other. Nothing new is reported when this happens; the log shows the message as given up.
  • Fixed wp email-delivery retry tries every waiting message straight away. It used to send only the ones already due, so just after you fixed your mail server it could answer 0 messages sent while the queue sat waiting. It now says how many went, and warns how many failed again and how many were given up on.
  • Fixed wp email-delivery log --status refuses a word it does not know instead of listing every message, and --limit now prints exactly that many rows.
  • Fixed Licensing and updates run on the newest licence code among our plugins. With several of our plugins on one site, they all now use the newest licence code any of them carries, whatever order WordPress loads them in. The exception is while the first of ours that WordPress loads (usually the alphabetically first) is on a release from before this one: its older code serves them all until that plugin is updated. An older plugin of ours can also no longer stop this plugin's admin screens loading.
  • New Tools → Export Personal Data and Erase Personal Data include the email log. They find each message with the person's address on the To line or in a Cc, Bcc, Reply-To or From header, but not one that names it only in its body. An export lists when each was sent, its subject, what happened and which plugin sent it, without anybody else's address. An erasure deletes those messages and takes the address out of the last failure the wp-admin notice quotes; WordPress's own email telling the person it is done is then logged like any other.

1.0.20

  • Fixed A message your mail server takes for some addresses and refuses for others is no longer sent twice. Where a backup connection is set up, it used to go out again in full down the backup and be put in the retry queue as well, so everybody whose address worked got another copy of it on every attempt. The log row says it reached some of the addresses and quotes what the server said about the rest. (Until 1.4.0 the log's one-click Send again, a partial retry and a partial send through the backup could still send it again.)
  • Improved Filtering the log goes straight to the filtered page. Pressing Filter used to send a wasted request to the server first and only then load the page you had asked for.
  • New A "Check again" button on the licence screen. Renew your licence, or have it put right, and one press picks it up instead of waiting hours for the next automatic check. If the check cannot be made, the screen says why and changes nothing.
  • Fixed An activation that fails because our licence server could not be reached no longer wipes your key. The key you had entered, and the list of sites using it, were thrown away on any failed attempt, leaving you to go and find the key again. They are kept now until the server actually passes judgement on the key.
  • Fixed A key our licence server does not recognise can be typed over. The key box stays editable and the button still says Activate, instead of the screen offering nothing but "Deactivate this site" just after a notice told you to enter the key again.
  • Fixed Check again, Deactivate this site and Free work with the key box empty. None of the three reads what is in the box, but all three used to answer "Enter your licence key first." and make no request.

1.0.19

  • Fixed A message tried again arrives the way it was written. WooCommerce, and most plugins, hand WordPress the lines that say a message is HTML and who is copied in as one block of text, and only the list form survived being written to the log. So a retried order confirmation went out with nothing saying it was HTML, and the customer read the template as source code, with anyone on the Cc or Bcc line left off. Those lines are kept as they were sent now, and messages already waiting to be tried again are repaired as they go.
  • Fixed A message tried again carries the file that was attached to it. Only the file's name was kept, so a retried order confirmation went out without its invoice and was written down as sent. Where the file sits is kept while the message waits, two files attached on one line are kept as two, and when a file has gone from the server by the time the message goes, the log says which one instead of reading as a faithful copy. The location is shortened back to the file's name the moment the message goes or is given up on, unless you have switched on keeping the message itself.
  • Fixed Deleting the plugin now also clears away logs left behind by deleted network sites. A site deleted from a network while the plugin was switched on for that site alone left its log table behind in the database, because deleting a site never loads that site's plugins. Removing the plugin sweeps them away, and only after checking that the site really is gone.
  • Fixed Pressing "Check again" on the Updates screen looks for a new version straight away, even just after the site had trouble reaching us. One minute of blocked outbound traffic used to shut the button for every one of our plugins for a quarter of an hour.

1.0.18

  • Fixed Failed emails are retried from the start. On sites where the plugin was switched on from the command line or for a whole network, retries only began once somebody opened the dashboard.
  • Fixed Activating with older versions of WP-CLI no longer stops with a fatal error.
  • Fixed Switching the plugin off for a whole network stops its background jobs on every site, not only the main one.

1.0.17

  • Improved Fewer database queries on every admin page. Each of our plugins checks its licence on every admin screen, to know whether to show the licence notice, and read its saved licence and its "Remind me later" flag with a query each. With the whole range installed that was thirty separate lookups on every admin page, most of them for rows that do not exist yet. They are now read together in one query (on WordPress 6.4 or later). Measured on a test site with all fifteen plugins: the WordPress Dashboard went from 41 queries of ours to 12. A small value this plugin reads on every admin screen is also now loaded with the rest of the settings, rather than on its own.

1.0.16

  • New Switch off routine emails WordPress sends. A new panel, Settings → Emails WordPress sends, stops three kinds a busy site can do without: emails about automatic updates that worked (for WordPress, plugins and themes; an update that failed is still emailed), the administrator's copy of every new account, and the administrator's copy of every password reset. Each is sent as usual until switched off. The emails that tell somebody their own password or address changed are deliberately not offered, because they are how a person finds out their account was taken over. Checked on a test site by creating an account each way and reading this plugin's own log: with the switch off, WordPress sent the customer's email and the New User Registration email to the administrator; with it on, only the customer's.

1.0.15

  • Improved A download is made once, not twice. Pressing Export settings built the file twice: the admin's no-reload navigation fetched it first, found a file rather than a screen it could show, and then asked for it again the ordinary way. On a long list that was twice the wait, and twice the work for the server. Each download is now a single request. Measured in a browser: two requests per click before, one after.

1.0.14

  • New Download the log as a spreadsheet. A button on the Log screen saves what you are looking at, every page of it: the tab you are on and anything you searched for, with when each message went, who to, its subject, which plugin asked for it, what happened and what the mail server said. It is written a thousand rows at a time, so a long log downloads without running the site out of memory. A subject a stranger typed into a contact form to look like a spreadsheet formula is written as plain text, so opening the file never runs it. Tried in a browser: the Did not arrive tab downloaded only the refused message, and a subject of =1+1 arrived as text.

1.0.13

  • Fixed Switches that start on could not be switched off. Under Settings, "Use this address for every message", "Keep a refused message and try again", "Email somebody when sending stops working", "Keep a record of what was sent" and both "Sign in to the mail server" switches came back on after every save. A browser sends nothing for a switch that is off, and the plugin read that as "use the default", which for these is on. Each now saves the way you left it. Tried in a browser: switched off, saved, reloaded, and it stayed off.

1.0.12

  • New A backup connection. Settings → Backup connection: a second mail service, or the web server, tried for the same message the moment the main connection refuses it. A retry later is right for a busy server and no help to a customer waiting for a password reset when the mail service's password changed or it is down, so the backup is tried at once and WordPress is told the message went. The log marks such a message as sent, with what the main connection said, and the Dashboard counts them so the main connection gets looked at. When both refuse, both reasons go into one log line and the message is tried again as usual. Send a test now tests each connection on its own, and a backup that is the same web server as the main connection is not tried a second time. The backup's password is sealed like the main one and left out of settings files, and a mailer another plugin has put in place is left alone. Checked on a test site with real sends (nothing left the server): a refused main connection with a working backup, both refused, each test on its own, and no backup at all.
  • Fixed The password box was narrower than the boxes beside it. Under Settings, the mail service password box missed the styling every other box had, so it was drawn smaller and at WordPress's default look. It now matches the username box beside it.

1.0.11

  • Fixed Choosing a mail service filled nothing in. Under Settings → How email leaves, the "Which service" list says it fills in the settings below, and it did not: choosing Gmail left the mail server empty and the username and password notes unchanged. With the mail server empty, the site went on sending through the web server while the screen said Gmail. Choosing a service now fills in its mail server, port and encryption and says what its username and password are, and every value stays editable. Saving with a service chosen and the mail server still empty (a browser without JavaScript, an import, WP-CLI) fills them in the same way. Tried in a browser: Gmail, SendGrid and Postmark each fill in their own server, including after moving between screens without a page load.

1.0.10

  • Fixed Import settings stopped with an error instead of importing. Choosing a settings file on the Settings screen and pressing Import ended on WordPress's critical error page, because the button never handed the file over. It now imports the file and says so: "Settings imported.", or which part of the file could not be used and why. Found by a static check of every plugin's code, and tried end to end on a test site: export a file, import it back, read the message.

1.0.9

  • Improved One update check for all of our plugins on a site, instead of one each. Every plugin of ours used to ask our server about updates separately — fifteen requests in a row on a site with the whole range, twice a day and every time you press "Check again". The first plugin asked now asks for all of them at once, and the rest read the answer. Measured on a site with all fifteen: fifteen requests became one, and the whole check took a third of a second. If our server refuses or cannot be reached, every plugin waits the same fifteen minutes before trying again, rather than each trying in turn.

1.0.8

  • Fixed A wp-admin that would not load when our licence server could not be reached. Each of our plugins checked for its own updates, and if the server was unreachable each one waited out its own fifteen-second timeout — so a site with several of them could spend minutes on a single admin page, twice a day, for something entirely outside its control. The first one to find the server unreachable now says so for the whole site, and the others stand down until it is worth trying again. Measured on a site with fifteen installed: fifteen waits became one.

1.0.7

  • Fixed "Delete everything on removal" was leaving three rows behind. The removal list had drifted from the names the licence part of the plugin actually uses — it named two rows nothing has ever written, and looked for a third in the wrong place. Tested by putting all four rows in place and removing the plugin: nothing is left now.

1.0.6

  • Fixed "Empty the log" keeps asking on sites with a strict security policy. The question was written into the page in a way that some sites block for safety, which quietly removed it — so one click emptied the log with nothing in front of it.

1.0.5

  • Fixed "deleted automatically after 1 days" in the privacy notice now reads "after 1 day" when you keep the log for a single day. In Spanish and French as well.

1.0.4

  • Fixed A setting that is waiting on another one is readable again. A field held back until you switch something else on is dimmed, so it does not look identical to one you simply have not used — but it was dimmed so far that its label and explanation fell below the contrast a person with ordinary eyesight needs. Measured on the rendered screen at 2.55:1 against the 4.5:1 minimum, and now 4.75:1 and 5.02:1. The greying, the sunken background and the blocked cursor carry the rest of the signal.

1.0.3

  • Fixed It stopped asking the database whether its own table exists, over and over. Every part of the plugin checks before reading, which is right, but a single screen was asking ten separate times to establish something that cannot change while a page is loading. It now asks once.

1.0.2

  • Fixed The daily tidy-up no longer holds the table while it runs. Clearing old rows from the log was a single statement, however many rows matched. Measured on 300,000 of them: 6.63 seconds, and for all of it nothing else could write to the table. Worse, a host that cuts long queries off rolled the whole thing back — so nothing was deleted, there was more to delete the next day, and it quietly never caught up. It now goes a thousand rows at a time and stops after five seconds, leaving the rest for the next run.
  • Fixed Emptying the log is no longer a wait. The button ran one delete over every row, which on a large table left the screen looking like it had hung for several seconds. It now empties the table outright: 161,000 rows in under a third of a second.

1.0.1

  • Fixed A site deleted from a network no longer leaves its tables behind. WordPress asks every plugin for the tables it owns when a site is removed, and this one never answered, so its log stayed in the database for ever with nothing left to say which site it had belonged to. On a network that creates and removes sites regularly that is thousands of orphan tables and a database that stops fitting in its backup window. Deleting a site now takes its log with it.

1.0.0

  • New Send your site's email through a real mail service. Gmail, Microsoft 365, SendGrid, Mailgun, Postmark, Brevo, Mailjet, SMTP2GO, Amazon SES, Zoho, Fastmail, or any mail server of your own. Choosing one fills in the host, the port and the encryption, and says what that service's username and password actually are — which for most of them is not the thing you sign in with.
  • New A test that shows what the mail server actually said. Send one message and read the whole conversation, not the word "failed". The username and password are taken out of it before it is stored, so it is safe to paste into a support request.
  • New A record of every message this site sends. Who it went to, what it was called, which plugin asked for it, and whether the mail server accepted it. Searchable, with a tab for the ones that did not arrive. The message itself is not kept unless you ask for that.
  • New A refused message is kept and tried again. WordPress throws a message away when a mail server is briefly busy. This holds it and sends it again on a widening gap, then gives up visibly rather than quietly.
  • New You are told the day it stops working. A notice in wp-admin on every screen, and an email as well at most once a day. The notice comes first, because a plugin that only emails you when email is broken is a smoke alarm wired to the fuse that just blew.
  • New The mailbox password is sealed where it is stored. The key comes from your wp-config.php salts, which are not in the database — so a database dump on its own is no longer a mailbox somebody else can send from.
  • New WP-CLI, multisite, Spanish and French. wp email-delivery test, status, log and retry. Network activation sets up every site, including ones added later.

Pricing

Every plan includes every feature. Choose how many domains, and whether to pay yearly or once.

Pay yearly renews until you cancel

1 domain One year of updates and support
$19a year
5 domains One year of updates and support
$29a year
Unlimited domains One year of updates and support
$39a year

Pay once (lifetime) no renewals

5 domains Updates and support for as long as we publish it
$49once
Unlimited domains Updates and support for as long as we publish it
$69once
  • Every plan includes every feature. You choose only the number of domains.
  • 30-day refund, no reason needed. Refund policy
  • Licence key and download straight after payment, by Stripe.
  • A lapsed licence stops updates and support. It never switches a feature off.
  • Local, development and staging copies are free and do not count against your domains.
  • Yearly plans renew at the then-current price until you cancel. Cancel any time from your account.
  • Where tax applies it is calculated at checkout and shown before you pay.

Licence questions