FAQ
Is Corndog really free?
Yes. One edition, everything switched on, no licence key and no licensing code in the plugin. The "which code sent this email" feature that the WordPress plugin this one answers to sells as a premium add-on is the centrepiece here.
Does it log Commerce, Formie and Freeform emails too?
Yes — and anything else. Corndog hooks Craft's mailer at the level every one of those goes through,
so system messages, Commerce order emails, Formie and Freeform notifications, the Contact Form
plugin, a craft.app.mailer call in a template, a queue job and a console command all land in the
same log, each attributed to whatever sent it.
What can't it see?
Anything that does not go through Craft's mailer: a plugin calling PHP's mail() directly, a
JavaScript form posting to a third-party service, or a transactional email your delivery provider
sends on its own schedule. Craft cannot see those either — it is not a limitation Corndog could
remove.
Does it change the emails?
Only if you ask it to. Out of the box it reads the message and stores it. Turning on click tracking rewrites links; turning on open tracking adds an image; the delivery overrides change recipients or stop the send. Every one of those is off by default, and the log records the message as it actually went out, not as it was originally composed.
Will it slow sending down, or break it?
Nothing in the capture path is allowed to throw. Every entry point wraps its work and warns into Craft's log rather than letting an error escape, because a logging plugin that can stop a password reset going out is worse than no logging plugin. The cost is two small queries per email.
Does it phone home?
No. Corndog makes no outbound request of its own, ever. The only network traffic involved is the email your site was already sending — and, if you switch on tracking, the recipient's own mail client loading an image from your site.
Is open tracking legal?
That depends on where you and your recipients are, and it is your decision rather than a plugin's —
which is why both tracking switches are off until you turn them on. In the EU and UK, tracking
whether an identified person opened an email is generally processing personal data and usually
needs consent. If you switch it on: say so in your privacy policy, leave unsubscribe links alone
(they are excluded by default), and remember you can exclude any individual link with
data-corndog-ignore.
What does it store about people?
Whatever was in the email, which is usually the recipient's address and name, plus the IP of whoever triggered the send. IP addresses are blurred by default — the last octet of an IPv4 address, the last 80 bits of an IPv6 one — and can be switched off entirely. Bodies, headers and attachment details can each be turned off too, and retention is capped by days and by row count so the log does not become an archive by accident.
If you handle a deletion request, deleting the log rows is a search and a delete on the log screen; deleting a row deletes its tracking events with it.
Are open and click rates accurate?
Click rates are close to accurate: a click is a real request from a real browser. Open rates are a floor and nothing more. Mail clients block images, proxy them, or prefetch them — Apple's Mail Privacy Protection loads every image the moment a message arrives, whether anybody read it or not. Corndog reports what happened rather than modelling what it thinks happened.
Can I use it to stop a staging site emailing customers?
Yes, and that is one of the reasons it exists. Stop sending logs every message in full and
delivers none of them; Send everything to replaces every recipient with one address. Put either
in config/corndog.php under a staging key and it cannot be left on in production by accident.
Does it work in the queue and on the console?
Yes. A send from a queue job is logged with its job class and a queue context; a send from a console command records the command line that triggered it.
How big does the log get?
A row without a body is roughly a kilobyte; with an HTML body it is as big as the email. The defaults keep 60 days and cap the table at 5,000 rows, which is a few tens of megabytes for a typical site. Both are settings, and the list screen never loads a body — so a large log stays a fast screen.
How is this different from Craft's own test email?
Craft's test email answers "did the transport accept a message addressed to me". Corndog's answers
that too, and then keeps the message: the transport it used, the headers it carried, the
Message-ID the server returned, and the exact error if it failed — the things you need when the
question is not "does mail work" but "what happened to this one email on Tuesday".
What happens if I uninstall it?
Both tables are dropped and the log goes with them. Nothing else changes: Corndog never alters how your site composes mail, so removing it leaves the site sending exactly what it sent before.