Proxy Mail QA

Test that one person gets one welcome offer

Most email providers deliver name+anything@ and NAME@ to the same inbox, so to many apps one person looks like several new customers, each with a welcome discount. Sign up with each version and see whether your app noticed.

Updated

The versions to try

Version Example Reaches
Plain k3f9x2@mailclub.dev The inbox
Plus-tag k3f9x2+promo1@mailclub.dev The same inbox
Capitals K3F9X2@mailclub.dev The same inbox

Any +tag works, and the inbox shows which version each email went to. Agents get the versions that deliver from get_address_variants.

Test it

  1. Sign up for the offer with the plain address and note the coupon.
  2. Sign up again with the plus-tag version, then with capitals, in a private window each time so no session carries over.
  3. Look at the inbox. Each email shows which version it went to. If a second coupon came, its offer_reuse check fails and the Accounts page warns that the welcome offer went out more than once.

The check also says whether the coupons differ (the app issued a new one each time) or are the same shared code, where it’s up to checkout to refuse a second use. Record what checkout did with coupon results: a coupon accepted for a reused offer fails.

In a test

offer-reuse.spec.ts
const tagged = address.replace('@', '+promo1@');
let submitted = new Date();
await signUpForOffer(page, address);
await qa.waitForCode(address, { type: 'coupon', since: submitted, timeout: 600 });

submitted = new Date();
await signUpForOffer(page, tagged);
// The same person: no second coupon should come.
await qa.expectNoEmail(tagged, { since: submitted, type: 'code', subtype: 'coupon', timeout: 300 });
expect((await qa.offers(address)).passed).toBe(true);

Agents get the same with get_address_variants, wait_for_code (kind coupon) and check_offers, and the test_offer_reuse prompt walks through it.

Try it on your next sign-up test

Free plan, no credit card. Create an address and watch the code or link arrive.

Create a free accountOpen the app

Questions

Do I need to switch anything on?

Yes, for now. Marketing and offer emails is in Labs: switch it on in the app under Account settings → Labs. It applies to your API keys and agents too; until then their marketing tools answer with an error that says so.

Do these versions really reach the same inbox?

Yes. Mail to name+promo1@ and NAME@ arrives at name@, as it does at Gmail, Outlook and most providers, so the test matches what real people can do.

What about Gmail's dots, like n.a.m.e@gmail.com?

Proxy Mail QA can't test those: on our domains, a dot makes a different address. If your app normalises Gmail addresses, test that rule with unit tests.

Should my app block +tags altogether?

Usually not: many people use them to sort mail. A common fix is to normalise the address when checking whether someone has had the offer, and keep the address they typed for sending.

Built your app with an AI tool? Pick yours