Every test run gets its own inbox. Signup links, OTP codes and receipts land in it within seconds — parsed, extracted and ready to assert on. Nothing is ever delivered to a real person.
const inbox = await mailqa.inboxes.create({ name: 'signup' });
const link = await mailqa.waitForLink({ inbox: inbox.id });
await page.goto(link); // no sleep(). no flake.// how it works
Three steps and no infrastructure. Point your app at mailQA once, and every email it sends becomes data your tests — and your team — can read.
await mailer.send({
to: inbox.address,
subject: 'Verify your email' })const link = await
mailqa.waitForLink({ inbox })
await page.goto(link)// why mailqa
waitForLink() and waitForCode() resolve the moment mail lands — typically well under a second. Your suite stops polling a mail log and hoping.
mailQA captures and stops. A misconfigured staging environment cannot email a customer through it — on any plan, ever.
Stay on SendGrid, Postmark, SES or Resend. Send to anyone@your-org.mailqa.io — or point SMTP at the sink — and nothing else changes.
Rendered HTML, plain text, raw .eml, headers and auth verdicts, streamed to the dashboard as they arrive. Everyone in the org sees every inbox.
Create an inbox from your test and automate the entire email workflow. The first 14 days are free.
// in your test suite
One import. The test creates its own inbox, drives your app normally, and gets the email back as data — no shared mailbox, no sleep(), no message left over from the last run.
const inbox = await mailqa.inboxes.create({ name: 'signup' });
await page.goto('https://example.com/signup');
await page.fill('[name="email"]', inbox.address);
await page.click('button[type="submit"]');
const link = await mailqa.waitForLink({ inbox: inbox.id });
await page.goto(link);
await expect(page.getByText('Email verified')).toBeVisible();
// the dashboard
Messages appear the instant they arrive — no refresh. Keep sending through SendGrid, Postmark, SES or Resend with your real templates, point the recipient at anyone@your-org.mailqa.io, and every message lands here exactly as production would send it.
// pricing
Every plan starts with a 14-day free trial. Cancel before it ends and you pay nothing — and there is no mail infrastructure to tear down either.
No servers. No DNS. No mail infrastructure to run — and nothing ever delivered by mistake.