Do the setup in this order: subdomains and stream separation, authentication per sending domain, a filtered list import, warm-up, then automations. Nearly every failed ecommerce email migration is the same story in different brand colours — a new platform connected on Monday, a full-list campaign sent on Tuesday, and placement that never recovers.
Decide the sending architecture first
Picking domains after you have connected the platform means re-authenticating everything later. Decide now:
| Stream | Suggested sender | Why separate |
|---|---|---|
| Transactional (receipts, shipping, password resets) | t.brand.com | Must never be affected by campaign complaints |
| Marketing campaigns and flows | mail.brand.com | Carries the complaint and unsubscribe load |
| Person-to-person and support | brand.com | Keep the root domain's reputation clean |
| Click/open tracking | links.brand.com (CNAME) | Links on your own domain, not a shared tool domain |
Two rules behind the table. Reputation is evaluated per sending domain, so a subdomain does not automatically inherit the root's standing — it has to be warmed on its own. And complaints follow the stream: if receipts and promotions share a domain, a bad campaign delays password resets.
Authenticate every sending domain
For each subdomain you will send from:
mail.brand.com. TXT "v=spf1 include:<your-platform>.example ~all" k1._domainkey.mail.brand.com. CNAME k1.dkim.<your-platform>.example. _dmarc.brand.com. TXT "v=DMARC1; p=reject; rua=mailto:dmarc@brand.com; adkim=s; aspf=s" links.brand.com. CNAME tracking.<your-platform>.example.
Then verify on a delivered message rather than in a DNS checker. Read the Authentication-Results header and confirm spf=pass, dkim=pass, dmarc=pass, with header.from aligned. Watch the SPF limits: 10 DNS-querying mechanisms and 2 void lookups, one SPF record per domain. Ecommerce stacks accumulate senders — platform, reviews tool, helpdesk, shipping notifications, loyalty app — and SPF overflow is the normal failure mode.
Note that DMARC is evaluated against the organisational domain by default, so a policy at _dmarc.brand.com covers subdomains unless you publish sp=. If you want campaigns under a looser policy while you set up, publish a subdomain policy deliberately rather than by accident.
BIMI is optional and comes later: it requires DMARC at enforcement plus a Verified Mark Certificate, and it does not improve placement by itself.
Import the list with rules, not optimism
An ecommerce list is three populations wearing one name, and they need different treatment.
| Segment | Treatment on day one |
|---|---|
| Purchased in the last 90 days | Safe to mail; your best warm-up fuel |
| Opened or clicked in the last 6 months | Safe to mail, after the engaged buyers |
| Checkout-only, never engaged with email | Hold back; a checkout is not a marketing opt-in in several jurisdictions |
| No activity for 12+ months | Hold back; one re-engagement attempt later, from a warmed domain |
| Imported, bought or scraped | Do not import |
| Previously hard bounced or unsubscribed | Suppress permanently, and verify the suppression carries across the migration |
Two migration-specific risks. First, suppression lists are what people forget to export; mailing someone who unsubscribed from your old platform is both a complaint and a legal problem. Second, "checkout opt-in" is usually a pre-ticked box or an implied consent, and treating it as a marketing subscription is where complaint rates come from.
Verify anything older than about six months before its first send — syntax and MX checks are deterministic and cheap, while SMTP probes are unreliable at Microsoft 365 domains, so hold catch-all and unknown verdicts back rather than mailing them.
Warm up while the old platform still sends
Do not cut over. Run both, shifting volume as the new domain earns standing. A workable four-week shape for a mid-size list, adjusted to your own volume:
| Week | New platform sends | Audience | Old platform |
|---|---|---|---|
| 1 | 5% of daily volume | Last-90-day buyers only | Everything else |
| 2 | 15–20% | Add 6-month engaged openers | Remainder |
| 3 | 40–50% | Add 12-month engaged | Remainder |
| 4 | 80–100% | Full engaged list | Transactional only, then off |
Rules while ramping: increase no faster than roughly 30–50% day over day, send transactional mail through the new domain from day one (it has the best engagement of anything you send), and treat 421/450 deferrals as an instruction to slow down rather than a bug to retry through. If complaint rate approaches 0.3% — Google's published threshold — stop increasing and fix the audience before continuing.
Build these automations first
In priority order, because each one sends to people who just raised their hand:
- Order confirmation and shipping updates. Highest engagement mail you will ever send, and it builds reputation for free.
- Welcome series, triggered on confirmed subscription. Two or three messages, first one within an hour.
- Abandoned cart. One reminder at about an hour, a second at 24 hours, a third only if your margins justify it. Suppress anyone who then purchases.
- Post-purchase. Delivery check-in, how-to content, review request timed to arrival rather than to order date.
- Win-back. One attempt for lapsed buyers, then suppression — not a permanent loop.
Only after these does a campaign calendar make sense. Flows send to engaged people, which is exactly what a young domain needs.
Segmentation that is worth the effort
Purchase recency, purchase frequency, product category, and lifecycle stage (never purchased / first purchase / repeat / lapsed). Four dimensions handle almost every ecommerce use case. Personalisation beyond a first-name merge means recommending from the category someone actually bought in — a merge tag that resolves to "Hi there," is worse than no greeting.
Sale events and volume spikes
Seasonal peaks are where ecommerce deliverability breaks, because they combine the highest volume of the year with the widest audience of the year. Plan backwards: start raising volume six to eight weeks before the peak, so the ramp lands gradually rather than as a 10x spike on one morning. Tighten the audience for the biggest sends rather than widening it, split a large send across several hours, and keep the deepest-discount messages for engaged segments.
What not to do
- Do not send a full-list campaign to announce the new platform.
- Do not point every stream at the root domain.
- Do not import a list "to clean later".
- Do not reuse a subdomain that previously sent badly; start a fresh one.
- Do not skip the plain-text part, the live-text footer with a postal address, or the
List-UnsubscribeandList-Unsubscribe-Postheaders. - Do not let HTML exceed about 100KB — Gmail clips the message and hides your unsubscribe link behind "View entire message".
- Do not judge the migration by delivery rate. Acceptance is not placement.
MailPilot covers the warm-up and measurement side of this plan: it warms mailboxes over OAuth (Gmail, Outlook) or SMTP/IMAP including SendGrid, Amazon SES, Mailgun and Postmark, checks SPF, DKIM and DMARC on delivered mail, tracks per-mailbox reputation daily, and measures real inbox placement per provider with a seed-inbox network — so you can see which subdomain is actually reaching the inbox during a migration instead of waiting for revenue to tell you.
Ready to reach the inbox every time?
Automated email warmup across real peer mailboxes. Live inbox placement monitoring. Free 7-day trial - no credit card required.
Start free trial