New WordPress plugin now on the plugin directory

Email that arrives.
And explains itself when it doesn’t.

Transactional email for PHP, Laravel, WordPress and WooCommerce. Built and hosted in the UK, run by people who answer their own support email.

Every account reviewed by a person · usually within one business day
app.kapomail.com / msg_7bQ2n8xK
Bounced — permanent
to j.patel@btinternet.com · 14:02:14
What happened

The recipient address does not exist.

What to do

Suppressed automatically. Remove it from your database — this is the 8th bounce to @btinternet.com today, which usually means one stale imported segment.

550 5.1.1 <j.patel@btinternet.com>: Recipient address rejected: User unknown in virtual mailbox table
0%
Delivered to the inbox
0s
Median accepted to delivered
0
Median time to first email
0
Marketing campaigns, ever
The difference

Anyone can relay SMTP. The hard part is telling you why it failed.

Most providers hand you a code and leave you to it. That is fine until a customer says they never got their receipt and you are reading a 550 at midnight.

What you usually get
550 5.1.1
<j.patel@btinternet.com>:
Recipient address rejected:
User unknown in virtual
mailbox table
What we tell you
The address does not exist. We have suppressed it. This is the 8th bounce to this provider today — likely one stale imported segment rather than a wider problem.

The raw response is always one click away. We just do not make it the only thing you get.

What you get

Built for the things that actually go wrong

DNS that diagnoses itself

We show what your DNS actually returned, not just pass or fail. “Your host truncated the DKIM key at 255 characters” beats “verification failed” every single time.

Step-by-step for Cloudflare, GoDaddy, 123-reg, Namecheap and IONOS

A key per site, not per account

Every credential is bound to the domains it may send from. A key leaked from one WordPress site cannot send as anything else — even inside your own account.

Revoke one site without touching the other fifty-nine

Deferred is not bounced

A temporary delay and a dead address are different things. Confusing them makes you delete real customers. We never do.

A sandbox that cannot escape

Sandbox keys are stored and shown in your activity feed, and never handed to a mail server. No code path reaches a real inbox.

A person replies

Support answered by the people who built it. No tiers, no bots, no ticket that goes quiet for four days.

We tell you before it breaks, not after

Domain about to lose verification. Bounce rate creeping up. Plan limit approaching. Warnings arrive while there is still time to do something — because our thresholds are deliberately stricter than the inbox providers’ own.

Bounce rate 0.31% — above your 0.30% threshold
Provider only intervenes at 5.00%
Setup

Sending in about five minutes

Three DNS records, one key, one line of config.

Add your domain

We generate your DKIM keypair — ours, not a provider’s, so your records never change if we change engine.

Publish three records

Copied out with instructions for your specific DNS host. We check continuously and say exactly what is wrong.

Create a key

One per site or client. Shown once, stored hashed, revocable instantly.

Send

Change your mail config and you are done. Everything appears in your activity feed at once.

# .env — that is genuinely all of it
MAIL_MAILER=smtp
MAIL_HOST=smtp.kapomail.com
MAIL_PORT=587
MAIL_USERNAME=shop-prod-woo
MAIL_PASSWORD=kapo_live_7bQ2n8xK…
MAIL_ENCRYPTION=tls
MAIL_FROM_ADDRESS=orders@yourshop.co.uk

// then carry on exactly as before
Mail::to($order->email)->send(new OrderConfirmed($order));
TransactionalONLYno campaigns
Why we refuse work

We do not do marketing email.
That is precisely the point.

Newsletters and campaigns are where spam complaints come from, and complaints are what get a sending platform blocked. By refusing that traffic entirely, the mail that matters — your password resets and receipts — travels on a cleaner road.

Every account is read by a person before it can send. It is slower than a signup button, and it is the reason your mail arrives.

Our approval process, in one sentence
Questions

Things worth asking before you trust us

You are small. What happens when you are asleep?
Automation handles the night. Abuse detection suspends a compromised key in seconds without waiting for a human, alerts reach a phone rather than an inbox, and our status page runs on separate infrastructure so it stays up when we do not. Support hours are UK business hours, stated honestly rather than implied as 24/7.
What if I want to leave?
Export everything — messages, suppressions, templates — in one click, any time, with no retention period and no phone call. Our documentation includes a guide to moving to another provider. Making it easy to leave is why it is easy to start.
Where is my data held?
In the UK, with our company registered in England and Wales. Message bodies are kept 30 days by default and encrypted at rest; you can extend or shorten that. Our sub-processors are published, and we tell you before adding one.
Can I send marketing email if I am careful?
No, and please do not ask us to make an exception. Our Acceptable Use Policy prohibits campaigns, newsletters and cold outreach, and accounts are declined or closed for it. That rule is what protects everyone else’s delivery, including yours.
What happens if my site gets hacked?
We watch for volume spikes, unfamiliar recipient domains and a key suddenly used from a new network. When that fires we pause that one key automatically, leave everything else running, and email you what we saw. This is the most common incident there is, and it is designed for rather than hoped against.

Start with a domain and five minutes.

Apply today; most applications are answered within one business day.

Apply for access See pricing