Proxy Mail QA

Marketing and offer emails

Test the offer, the coupon and the unsubscribe, not just the sign-up.

Sign up for an offer with a new test account and get its coupon with the discount and end date. Record what checkout did with it, catch one person claiming it twice, and make sure unsubscribing stops the marketing for good.

Free plan · Switch it on in Labs · Test sites only · Proxy Mail QA never clicks a link

How it works

From “sign up for 20% off” to checked.

  1. Sign up for the offer

    Switch on Marketing and offer emails in Account settings → Labs. Then use a new address on your staging site, and record what the form asked about marketing, including a box that started ticked.

  2. Get the coupon

    The coupon arrives with its discount, its end date and how long it took. Copy it, or let your test or agent wait for it.

  3. Use it at checkout

    Apply it on staging with test payments, then record whether it was accepted. An expired or reused coupon that gets accepted fails.

  4. Unsubscribe and watch

    Unsubscribe the way a person would, mark the address as unsubscribed, and any later marketing from that sender is flagged, however late it comes.

What you can test

Every email a customer gets after signing up.

Coupons

The code with its discount and valid-until date as the email states them, how many minutes it took to arrive, and a warning when the email never says when it ends.

Checkout results

Record what checkout said, and the result is judged. A coupon accepted after its end date, twice when it's one-time, or for a reused offer fails.

One offer per person

Mail to name+promo1@ and NAME@ reaches the same inbox. Sign up with each and see whether your app gave one person the welcome offer twice.

Unsubscribes that stick

Mark an address as unsubscribed from a sender. Any marketing email after that is flagged, with no time limit, while receipts and security emails keep arriving.

Rules by country

Give the account a country and record what it agreed to. Marketing is checked against the rules for the EU and EEA, UK, US, Canada, Australia, New Zealand, Switzerland, Japan, South Korea, Singapore and Hong Kong, each with its source.

Marketing email checks

A List-Unsubscribe header with an https address, one-click unsubscribe, an unsubscribe link in the email and preview text, on every marketing email.

Welcome series and drips

See every email in order with the time between them, and check a series arrived in order and on time from your tests.

Harmful attachments and spam

Attachments Gmail blocks or filters distrust, and a spam score out of 10 for each email, from the markers spam filters weigh, counted in Reports and run reports.

Receipts stay receipts

Every email is typed as sign-in, transactional or marketing, so a receipt with a discount code is never mistaken for marketing.

In your tests

An offer, checkout and an unsubscribe in one test.

The npm package, the Python helper and the REST API do everything the app does. Agents get the same through the MCP server, with ready-made prompts such as test_coupon_checkout and test_unsubscribe. Full details are in the developer docs.

Playwright with the npm package

offer.spec.ts
const submitted = new Date();
await page.getByRole('button', { name: 'Get 20% off' }).click();

// Offers often take minutes: this waits up to 10.
const coupon = await qa.waitForCode(address, { type: 'coupon', since: submitted, timeout: 600 });
expect(coupon.discount).toBe('20% off');

await page.getByLabel('Promo code').fill(coupon.value);
await page.getByRole('button', { name: 'Apply' }).click();
const result = await qa.recordCouponResult(address, 'accepted', { oneTime: true });
expect(result.check?.status).toBe('pass');

// Unsubscribe as a person would, then watch for more marketing.
await page.goto(await qa.waitForLink(address, { type: 'unsubscribe', since: submitted }));
await qa.markUnsubscribed(address, { service: 'acme.com' });

pytest with the Python helper

test_offer.py
from proxymail_qa import create_address, expect_no_email, now, wait_for_code


def sign_up_for_offer(page, email):
    page.goto("/offer")
    page.get_by_label("Email").fill(email)
    page.get_by_role("button", name="Get 20% off").click()


def test_welcome_offer_once_per_person(page):
    address = create_address()["address"]
    submitted = now()
    sign_up_for_offer(page, address)
    wait_for_code(address, since=submitted, type="coupon", timeout=600)

    # The same person as name+promo1@ (the same inbox): no second coupon.
    again = address.replace("@", "+promo1@")
    submitted = now()
    sign_up_for_offer(page, again)
    expect_no_email(again, since=submitted, type="code", subtype="coupon", timeout=300)

Safe by design

Your test does the clicking. Proxy Mail QA only reads.

  • It never clicks

    Proxy Mail QA never opens an unsubscribe link, confirms a subscription or checks out. Your test, your agent or you do that, in your own browser.

  • Test payments only

    Checkout tests run on staging with test cards or the platform's sandbox, never real card or personal details.

  • Agents get verdicts, not emails

    Agents get the coupon, its discount and end date, and check results. Never the email's text.

  • A test aid, not legal advice

    The rules by country name their official source and the date we checked it. For what your business must do, ask a lawyer.

  • Estimates say so

    Spam risk is an estimate from what an email shows. Inboxes also weigh the sender's reputation, which only they can see.

  • Test sites only

    For development, staging, QA, preview and local versions of apps you build or may test, never live ones, and never to claim offers on other sites.

FAQ

Questions

Does Proxy Mail QA click unsubscribe links?

No. It never opens a link in an email. It shows each unsubscribe link with Open link and Copy, and gives tests and agents the link, so you unsubscribe the way a person would.

Is this legal advice?

No. It's a test aid: it shows which emails don't match the rules as the official guidance describes them, so you can find a bug before it reaches real people. For what your business must do, ask a lawyer.

Can I use it to claim offers on other sites?

No. Creating accounts to collect sign-up bonuses or coupons from services you don't own is fraud, and it breaks our terms. These accounts are for testing your own offers in development, staging or QA.

Does it tell me whether my email goes to spam?

It gives each email a spam score out of 10, adding up the markers spam filters weigh, such as failing DMARC, no DKIM, an attachment Gmail blocks, a link shortener or marketing without one-click unsubscribe, and shows what adds to it. 5 or more means likely rejected or sent to spam. Reports and run reports count them. It's an estimate: inboxes also weigh the sender's reputation, which only they can see.

How long does an unsubscribe watch last?

As long as the address does. Any marketing email from that sender after the time you marked counts, whether it comes a minute or three weeks later, until you stop watching or mark the address as subscribed again.

More features

Test your next welcome offer end to end.

Create a free account, sign up for your offer with a new test address, and see the coupon, the checks and what happens when you unsubscribe.

Create a free accountOpen the app