Skip to content
Facteur
FRGet started

Migration

Migrate from Mailtrap

Email and SMS testing hosted in France, where the number of inboxes does not depend on the subscription tier and SSO is not reserved for the top of the range. Here is what switching changes in your tests, line by line.

  • Unlimited inboxes from the Team plan
  • Volume bought separately, in packs valid for a year
  • Data in France, billed in euros, DPA online

Moving from Mailtrap to Facteur happens in your tests, not in a contract: the client changes, the manual waiting goes, and the one-time code arrives already extracted. Nothing is transferred, and both services run side by side for as long as the switch takes.

What you gain is the model: unlimited inboxes and SAML SSO from the Team plan, volume bought separately, and data that stays in France.

What makes a team move

The inbox count stops being a tier

With them, the plan decides how many sandboxes you open. A team that wants one inbox per branch finds out quickly: the volume holds, and it is the inbox counter that triggers the upgrade.

SSO does not cost a change of range

SAML is included from our Team plan. It is often IT’s only line item, and it should not decide the rest of the bill.

No more artificial waiting in tests

One call blocks until the message lands, then hands back the body, the links and the code already extracted. The polling loops and the sleeps leave your suites.

A quota per inbox, with its alert

A runaway test eats the whole organisation’s capacity with nobody seeing it before the invoice. A per-inbox ceiling and an alert threshold settle it at the source.

Translating your tests

The Mailtrap client lists an inbox’s messages, then asks for the body; waiting for the right one to have arrived, and finding the code in it, is left to you. Here it is one call that waits and hands the message back in pieces.

testing.messages.get() + waiting → messages.waitFor()

login.spec.tsMailtrap
const client = new MailtrapClient({
  token: TOKEN, accountId: ACCOUNT_ID, testInboxId: INBOX_ID,
});

// The message has to have arrived first.
await new Promise((r) => setTimeout(r, 5_000));

const messages = await client.testing.messages.get(INBOX_ID);
const text = await client.testing.messages.getTextMessage(
  INBOX_ID, messages[0].id,
);

const code = text.match(/\b\d{6}\b/)?.[0];
login.spec.tsFacteur
import { Facteur } from '@facteur-eu/sdk';

const facteur = new Facteur({ apiKey: process.env.FACTEUR_API_KEY });

// Blocks until it arrives. No sleep, no retry.
const message = await facteur.messages.waitFor({
  inbox: INBOX_ID,
  sentTo: address,
  wait: 30_000,
});

const code = message.otp;

The Mailtrap code above follows their own published example; the sources are at the foot of this page. Ours runs as written.

The migration, step by step

Nothing is transferred: test messages regenerate on your suite’s next run. Both services can run side by side until everything is green.

  1. 1

    Create an account and an inbox

    Every inbox gets its own subdomain, and any address ending in it is accepted from the first message. There is nothing else to provision.

  2. 2

    Point your sends at the inbox

    Where Mailtrap captures your application’s SMTP traffic, your scenarios now write to a public address of the inbox: the message travels the real sending path, the one a user would see.

  3. 3

    Replace the calls in the tests

    Listing the messages, and the sleep before it, become a single messages.waitFor() that blocks until arrival and hands back the body, the links and the code already extracted.

  4. 4

    Run the suite, then cancel

    Keep both accounts until the suite is green: there is no data to export and no DNS to switch, so nothing forces the pace.

The switch, at a glance

FacteurMailtrap
InboxesUnlimited from the Team planSandbox count set by the plan
SAML SSOIncluded from the Team planReserved for higher plans
Message volumeBought separately, in stacking packsSet by the subscription tier
Per-inbox quotasYes, with overage alertsNot documented
Transactional sendingNo, we only receiveYes, a dedicated product
HostingFrance, billed in eurosOutside France, billed in dollars
DPADownloadable onlineOn request

Where this page’s claims come from

mailtrap.io/pricing/

Frequently asked

How much work is the migration from Mailtrap?

Mechanical work: replace the client, write to the inbox’s addresses instead of the SMTP capture, remove the sleeps. There is no data to transfer and no DNS to switch, and both services run side by side until the suite is green: the migration goes file by file, without a stop.

Is Facteur more cost-effective than Mailtrap?

Absolutely as soon as you need more than a single test box. Mailtrap caps sandbox counts and restricts SAML SSO to high-tier plans. At Facteur, inboxes are unlimited from the Team plan (€39/month), SSO is included natively, and volume is purchased flexibly based on actual usage.

What happens to the messages already received at Mailtrap?

They stay there. They are test data: they regenerate on your suite’s next run, and that is exactly what makes this migration light: there is nothing to export.

Why choose Facteur over a transactional sending service for testing?

Mailtrap blends sandbox testing with production sending infrastructure. Facteur is 100% focused on the test experience: real public addresses, instant blocking waits, OTP extraction and unified SMS testing in a French hosted environment, with zero risk to your production domain.

Where is the test data hosted?

In France, at OVHcloud, and billing is in euros. The sub-processor register and the DPA are published on the site, without having to ask for them.

Other comparisons: Mailisk · MailSlurp · Mailpit · Mailosaur

Your first inbox in two minutes

The free plan asks for no card. If you are switching tools, the steps fit on one page and can be tried on a single test.