Product

Microsoft 365 Mailboxes for Cold Email at Scale

A second outbound surface that is structurally independent from Gmail — different IPs, different reputation graph, different recipient-side trust profile, from $2.50/mailbox on annual billing.

StackMail Editorial
StackMail editorial team
Updated
12 min read

Why Microsoft 365 for cold email (not just Gmail)

The default cold email stack for the last five years has been Google Workspace, full stop. Gmail dominates B2B inboxes, the Workspace admin console is friendlier than Microsoft's, and the IP reputation infrastructure is more forgiving for new senders. So why bother with Microsoft 365 at all?

The honest answer is provider risk. Anyone running cold email at any meaningful scale has watched Google tighten its policies in waves — the 2024 sender-requirements update for bulk senders, the ongoing Postmaster Tools sensitivity tuning, the periodic Workspace-tenant suspension sweeps. When Google flags your sending pattern across the IP range your tenants share with thousands of other senders, you lose capacity instantly. If 100% of your fleet is Google Workspace, that is a business-down event. If 30-40% is on Microsoft 365, your campaigns keep firing.

The second reason is recipient-side reputation. Outlook's spam-filtering stack (Exchange Online Protection, plus Defender for Office 365 on most enterprise tenants) evaluates senders independently of Gmail's grader. A mailbox that has earned Outlook trust through warmup is a different asset from a mailbox that has earned Gmail trust. On B2B lists where 30-50% of recipients are on Microsoft 365 themselves — which is most enterprise-heavy lists — sending from M365 picks up a small same-platform deliverability lift. It is not magical and it is not the dominant factor, but it compounds over a 90-day program.

The third reason is IP diversification at the network level. Microsoft 365 outbound flows through Microsoft-owned IP ranges in datacenters operated by Microsoft, with completely separate blocklist correlation from Google's outbound space. A spam-trap hit on Gmail does not propagate to your Outlook mailboxes. A blocklist listing for a Google range does not affect Outlook delivery. The two surfaces fail independently, which is the entire point of running them in parallel.

The cost argument used to be that Microsoft 365 mailboxes were more expensive to provision and harder to automate. That is no longer true. With CSP-tier automation, an M365 tenant takes 8-15 minutes to spin up, DNS publishes automatically, and the per-mailbox cost is the same as Google Workspace at $2.50/mailbox/month. There is no economic reason not to run both.

What you get per Microsoft 365 mailbox

Every mailbox StackMail provisions is a real Microsoft 365 Business Basic seat issued inside a tenant registered in your business name. There is no transactional email API in the loop, no shared-tenant sublease, no multi-tenant relay. You get the actual product Microsoft sells:

  • 50GB mailbox storage — full Outlook quota, not a stripped-down transactional alias.
  • Outlook on the web, Outlook desktop (Windows and Mac), Outlook mobile — the full Outlook client surface, not a webmail wrapper.
  • Microsoft 365 admin console access — you are the global admin on the tenant, you can add users, change passwords, configure mail flow rules, and pull audit logs directly from Microsoft.
  • Exchange Online with full mail flow — sends throughsmtp.office365.comfor SMTP orgraph.microsoft.comfor OAuth, no proxy layer.
  • OneDrive for Business (1TB) and Microsoft Teams — included in Business Basic, useful if you also need a real workspace footprint behind the mailbox.
  • Calendar, contacts, and shared mailbox support — same as any normal Microsoft 365 user.
  • Tenant data residency choice — US, EU, UK, Canada, or APAC depending on the region you select at provisioning time.
  • 99.9% uptime SLA from Microsoft — the underlying SLA is contractual, same as any direct M365 customer.

Sending limits and tenant economics

Microsoft publishes a hard limit of 10,000 external recipients per mailbox per 24-hour rolling window, with a per-minute throttle around 30 messages and an Exchange Online send-quota of 10,000 messages per day. Those numbers are the ceiling for what a properly-warmed mailbox is technically allowed to do — they are not the operating range for cold email.

For cold email specifically we recommend 30-50 sends per mailbox per day during the first 90 days post-warmup, and 50-75 per mailbox per day after that only if engagement metrics stay healthy (open rate above 35%, bounce rate under 3%, reply rate above 1.5%). The reason the safe-sending range sits an order of magnitude below the technical ceiling is that Microsoft's reputation grading penalizes mailboxes that send near the cap with low engagement far more aggressively than Google does. An M365 mailbox sending 200 cold emails per day with a 15% open rate will be throttled or suspended within 2-3 weeks. The same mailbox sending 40 emails per day with a 40% open rate runs indefinitely.

The economic implication is straightforward. If you need to send 1,000 cold emails per day from Microsoft 365, you do not buy two mailboxes and push them to 500/day. You buy 25 mailboxes and run each at 40/day. The arithmetic at $2.50/mailbox/month works out to $62.50/month for 1,000 daily sends — substantially cheaper than the cost of a single suspended tenant requiring full reprovisioning, and orders of magnitude cheaper than the campaign damage from a mid-flight throttle.

The tenant-level limit is more interesting at scale. Microsoft enforces tenant-wide outbound caps that are roughly 30 times the per-mailbox limit, which means a tenant with 25 mailboxes has effectively unlimited headroom for cold email volume. The constraint is per-mailbox, not per-tenant. This is why we cap each tenant at ~25 mailboxes — past that point, the next mailbox you add does not get more headroom, and a tenant suspension takes more of your fleet down at once.

OAuth vs SMTP — which to use with sequencers

Microsoft has been deprecating Basic Auth and SMTP AUTH on new tenants since October 2022. On any M365 tenant created after that date, SMTP AUTH is disabled by default and must be explicitly re-enabled at the tenant level (which we do during provisioning if your sequencer needs it). The strategic direction from Microsoft is clear: programmatic email access should go through Microsoft Graph API with OAuth 2.0 tokens, not legacy SMTP credentials.

For sequencers that support OAuth — Instantly, Smartlead, Saleshandy, Apollo, Outreach, Reply, Lemlist, Woodpecker — use OAuth. The connection is more reliable, it survives password rotations, it does not break when Microsoft re-tightens SMTP AUTH policy, and it lets the sequencer use Graph endpoints that have higher per-minute throughput than the SMTP relay.

For sequencers that only support SMTP — Quickmail, Mailshake, some self-hosted setups — we enable SMTP AUTH on the tenant and surface per-mailbox SMTP credentials in the StackMail dashboard. This works fine. The only tradeoff is that if Microsoft rolls another wave of Basic Auth restrictions, SMTP-connected mailboxes are at higher risk of needing reconnection than OAuth-connected ones.

A common mistake is mixing the two on the same mailbox — connecting via OAuth in one sequencer and SMTP in another. Microsoft Graph and SMTP AUTH count separately against the throttle limits, but reputation signals are aggregated, so you are effectively doubling your sending footprint without doubling your headroom. Pick one auth method per mailbox.

DNS automation — MX, SPF, DKIM (DKIM2), DMARC for Outlook

Email authentication is what separates a deliverable mailbox from a deliverable spam-folder placement. For Microsoft 365 there are five records that must be correctly published at your domain registrar before sending starts. StackMail publishes all five automatically when you connect a domain — you can verify them with our free SPF checker, DKIM checker, and DMARC checker.

MX records: Microsoft 365 mail flow points at [yourdomain]-com.mail.protection.outlook.com with priority 0. We publish this automatically when the tenant provisions.

SPF: The required record is v=spf1 include:spf.protection.outlook.com -all. If you also send from another platform (Mailgun, SendGrid, etc.) we merge the includes — the -all hard-fail policy is what tells receiving servers to reject any mail from your domain that did not originate from Microsoft.

DKIM (selector1 and selector2): Microsoft uses a two-selector DKIM setup with automatic key rotation. We publish both CNAMEs at provisioning: selector1._domainkey and selector2._domainkey, each pointing to the tenant's DKIM zone at [tenant-id].onmicrosoft.com. Microsoft rotates which selector is active every few weeks; both must remain published. We also support the newer DKIM2 (RFC 6376bis) signing path that some Microsoft tenants are already migrating to — same publish flow, longer keys (2048 bit by default).

DMARC: We publish v=DMARC1; p=none; rua=mailto:dmarc@stackmail.io; pct=100 for the first 30 days so we can collect aggregate reports without affecting delivery. After 30 days of clean reports we recommend stepping to p=quarantine to prevent third-party spoofing of your domain. Strict p=reject is appropriate at month 3+ once you are confident no legitimate downstream system relies on your domain in the From header.

For agency setups managing many domains, see our domain and DNS setup guide and the more comprehensive cold email infrastructure guide.

Pricing at 10/30/100/300 mailboxes — real $ vs InboxKit and Primeforge

Per-mailbox pricing matters most past the 30-mailbox mark, where the gap between providers compounds into hundreds or thousands of dollars per month. Here is what a Microsoft 365 cold email setup actually costs at the four common scale points, with annual billing where each provider offers it.

Monthly cost comparison for Microsoft 365 mailboxes across StackMail, InboxKit, and Primeforge at 10, 30, 100, and 300 mailbox volumes.
MailboxesStackMail (annual)InboxKitPrimeforgeStackMail savings
10$31/mo ($3.10/mbx)$39/mo ($3.90/mbx)$35/mo ($3.50/mbx)~$96-$390/yr
30$81/mo ($2.75/mbx)$99/mo ($3.30/mbx)$95/mo ($3.17/mbx)~$168-$216/yr
100$250/mo ($2.50/mbx)$250/mo ($2.50/mbx)$295/mo ($2.95/mbx)~$0-$540/yr
300$750/mo ($2.50/mbx)$897/mo ($2.99/mbx)$885/mo ($2.95/mbx)~$1,620-$1,764/yr

Pricing as of 2026-05-04, annual billing where available. Verify current pricing on each provider's site before purchase. See the deeper InboxKit alternative analysis, Primeforge alternative, and StackMail vs Primeforge head-to-head.

Bulk provisioning workflow

The common cold email setup is 30-100 Outlook mailboxes spread across 5-15 domains, all needing identical configuration. Doing this by hand inside the Microsoft 365 admin console would take 3-5 days. The StackMail bulk-provisioning flow takes about 30 minutes for 100 mailboxes including DNS publication and warmup activation.

You start by uploading a CSV with domain names, mailbox prefixes (e.g. first.last, first_initial+last), display names, and the data residency region for each tenant. We support generated naming patterns if you do not want to pre-author every address. The CSV schema is in the dashboard with an example file.

Our automation then runs the provisioning sequence for each domain in parallel: buy or import the domain, create the M365 tenant, assign Business Basic licenses, create all mailboxes inside the tenant, publish MX/SPF/DKIM/DMARC records, register the Microsoft Graph application for OAuth, enable SMTP AUTH if requested, and start warmup. Each tenant takes 8-15 minutes wall clock; running 5 in parallel finishes a 50-mailbox order in under 20 minutes.

The dashboard shows tenant grouping (which mailboxes share which tenant, for blast-radius reasons), domain assignment, warmup progress per mailbox, and sequencer-connection state. Agencies running per-client workspaces can isolate each client's tenants and DNS into a separate workspace inside StackMail — see agency setup for that workflow.

Microsoft 365 vs Google Workspace — when to mix

The honest answer is that you should run both for any cold email program above 1,000 sends per day. Below that threshold the operational overhead of managing two providers may not be worth the diversification benefit. Above it, the cost of a single-provider outage is too high to ignore.

The default split we recommend is 60-70% Google Workspace, 30-40% Microsoft 365. Google still wins on three things that matter: deliverability to consumer Gmail recipients (which is most B2B in 2026 because everyone uses Gmail for work-adjacent addresses), policy stability within a campaign cycle, and warmup velocity. Microsoft wins on three different things: enterprise recipient trust, IP-range independence from Google, and being a backup when Google policy shifts mid-quarter.

For lists weighted toward Microsoft-heavy industries — financial services, healthcare, government, manufacturing, large enterprise — shift toward 50/50 or even 40/60 favoring Microsoft. The same-platform recipient trust factor on these lists produces measurable inbox placement gains. For lists weighted toward startup/SaaS/consumer-tech, stay at 70/30 favoring Google.

The mistake is running 100% of either provider when your volume is over 1,000/day. That is the configuration where a single provider-side flag becomes a campaign-down event. Compare provider details directly on the Google Workspace mailboxes page.

Sequencer integrations

Microsoft 365 mailboxes provisioned through StackMail connect to every major sequencer via OAuth or SMTP. One-click bulk-connect is supported for Instantly and Smartlead; other sequencers take per-mailbox OAuth in their normal connection flow. Full list and connection guides on the integrations page.

Migration playbook (5 steps)

If you already have Microsoft 365 mailboxes on InboxKit, Primeforge, Mailforge, or another provider, here is the practical migration sequence. Plan a 14-21 day overlap so new mailboxes warm up before you cut over — this is true regardless of which provider you switch from.

  1. 1. Export your current mailbox inventory

    Export the CSV of mailboxes, domains, sequencer connections, and warmup state from your current provider. You will reuse the domain list and the sequencer mapping; warmup history does not transfer (this is true across all providers — warmup state lives in each provider's engine).

  2. 2. Decide on a transition window

    Either finish the current campaign, pause for 48 hours, then transition; or provision new StackMail M365 mailboxes in parallel, warm them for 14-21 days, and rotate them in as the old mailboxes age out. Recommend the parallel approach for any setup over 30 mailboxes.

  3. 3. Provision matching capacity in StackMail

    Sign up at stackmail.io, pick the plan that matches your current tier (Starter for 10 mailboxes, Growth for 30, Pro for 100, Custom past 300), and start the bulk provisioning flow with your domain list. We create the tenants, publish DNS, and start warmup. Wall clock: 30 minutes for 100 mailboxes.

  4. 4. Reconnect sequencers via OAuth

    In your sequencer (Instantly, Smartlead, Saleshandy, Apollo, Outreach, Reply), disconnect the old mailboxes and add the StackMail mailboxes via the bulk OAuth flow. For Instantly and Smartlead specifically we have a one-click bulk-connect helper that loads all M365 mailboxes from the workspace at once.

  5. 5. Cancel the old provider

    Once StackMail mailboxes are warmed and connected, cancel the old provider. You own the underlying Microsoft 365 mailboxes inside the old tenants in your name — they stay live unless you explicitly delete them. New StackMail mailboxes get StackMail's warmup and dashboard going forward.

See provider-specific migration notes: InboxKit alternative, Primeforge alternative, Instantly alternative, or browse the full alternatives hub.

Microsoft 365 cold email setup checklist

Eight-step checklist for setting up Microsoft 365 mailboxes for cold email correctly from scratch. StackMail automates steps 2 through 7; step 1 and step 8 are the parts you control. The full guided version with screenshots is in the Microsoft 365 setup guide.

  1. Pick domains and confirm DNS access

    Buy or import the domains you will send from. You need DNS write access at the registrar level (Namecheap, Cloudflare, GoDaddy, Porkbun, etc.) so StackMail can publish MX, SPF, DKIM, and DMARC records automatically. Plan one domain per ~10-15 mailboxes for safe distribution.

  2. Provision the Microsoft 365 tenant

    StackMail creates one M365 tenant per domain by default, registered in your business name with you as global admin. Provisioning takes 8-15 minutes per tenant including license assignment.

  3. Publish SPF, DKIM, DMARC, MX records

    Our DNS automation publishes Microsoft's MX (the protection.outlook.com endpoints), SPF (include:spf.protection.outlook.com), both DKIM CNAMEs (selector1 and selector2), and a DMARC record at p=none for the first 30 days, then we recommend stepping to p=quarantine.

  4. Create mailboxes and assign licenses

    We bulk-create mailboxes from a CSV or generated naming pattern. Each mailbox gets a Microsoft 365 Business Basic license, which includes 50GB mailbox storage, full Outlook web and desktop, and OneDrive.

  5. Enable OAuth (or SMTP AUTH) for sequencers

    For OAuth sequencers we register the Microsoft Graph application and consent to the required scopes during provisioning. For SMTP-only sequencers we enable SMTP AUTH at the tenant level, which is disabled by default on new M365 tenants since 2022.

  6. Warm up for 14-21 days

    Connect the mailboxes to StackMail's warmup engine. Warmup ramps from 5 to 40 sends per mailbox per day over 14-21 days using a network of real inboxes that read, reply, mark-as-important, and remove from spam. Do not skip this.

  7. Connect to your sequencer

    Bulk-connect via OAuth in Instantly, Smartlead, Saleshandy, Apollo, Outreach, or Reply. SMTP-only sequencers (Quickmail, Mailshake) take per-mailbox credentials we surface in the dashboard.

  8. Start sending at 30-50/mailbox/day

    First 30 days, hold each mailbox at 30-50 sends per day with engagement-aware throttling. Step to 50-75/day in month 2 only if your open rate is above 35% and bounce rate is under 3%.

Once mailboxes are connected, verify deliverability with the free inbox placement test before going live. For warmup tuning details see the email warmup guide.

Frequently asked questions

How many Microsoft 365 tenants do I get, and do my mailboxes share a tenant?

By default we provision one Microsoft 365 tenant per domain, with up to roughly 25 mailboxes per tenant before we recommend splitting. This matters for blast radius: if a single tenant gets throttled or flagged, only the mailboxes inside that tenant are affected. For agencies running 100+ mailboxes, we automatically distribute mailboxes across multiple tenants on different domains so a single suspension never takes out your entire fleet. You can see the tenant grouping for every mailbox in the StackMail dashboard, which most providers in this category do not currently expose.

Should I use OAuth or SMTP to connect Microsoft 365 mailboxes to my sequencer?

Use OAuth if your sequencer supports it (Instantly, Smartlead, Saleshandy, Apollo, Outreach, Reply all do). OAuth is more reliable because Microsoft has been progressively deprecating Basic Auth and SMTP AUTH for new tenants since 2022, and on tenants where SMTP is enabled there is a daily cap of 10,000 recipients per mailbox. OAuth uses Microsoft Graph API for sending, which is the modern path and what Microsoft itself recommends for programmatic email. Use SMTP only when your sequencer does not support OAuth — and expect to enable SMTP AUTH on the tenant during provisioning, which we handle automatically.

What are Microsoft 365's actual sending limits, and what do you recommend for cold email?

Microsoft's default tenant limits are 10,000 external recipients per mailbox per 24 hours, with a rate limit of roughly 30 messages per minute. Those are the hard ceilings, not the safe operating range. For cold email we recommend 30-50 sends per mailbox per day per cohort during the first 90 days, then ramp to 50-75/day if engagement metrics stay healthy. Going above 100/mailbox/day on a cold M365 mailbox is where most suspensions originate. The protection is volume distribution across many warmed mailboxes, not pushing any single mailbox harder.

How likely is a Microsoft 365 tenant to get suspended, and what happens if it does?

Suspensions on properly-warmed mailboxes are uncommon but not zero — Microsoft is more aggressive than Google about flagging high-volume outbound from new tenants, especially in the first 30 days. The most common triggers are sending faster than the warmup curve, low engagement (under 5% open rate), high bounce rate (over 5%), or spam-trap hits. If a tenant is suspended, you have two options: appeal through the Microsoft 365 admin console (works in roughly 60% of cases within 24-72 hours) or migrate the mailboxes to a fresh tenant. Because mailboxes are issued in your name, you keep ownership in either case.

Are Microsoft 365 IPs different from Gmail IPs? Does it actually help deliverability?

Yes. Microsoft 365 outbound mail flows through Microsoft-owned IP ranges (primarily in 40.92.0.0/15, 40.107.0.0/16, 52.100.0.0/14, and the protection.outlook.com infrastructure), which are entirely separate from Google's outbound IPs. This matters for two reasons: (1) IP-level blocklist correlation between providers is essentially zero, so a Gmail IP issue does not propagate to your M365 mailboxes; (2) recipient mail servers grade Microsoft and Google IPs independently, and corporate Outlook tenants on the recipient side often give M365 senders a small trust bump. The deliverability uplift is real but modest — usually 2-4 percentage points of inbox placement on B2B lists where the recipient is also on Microsoft.

Can I get EU data residency on Microsoft 365 mailboxes?

Yes. When you provision an M365 tenant through StackMail you can pick the data residency region (US, EU, UK, Canada, or Australia/Asia-Pacific). For GDPR-sensitive workloads we default to EU residency for European customers, which means mailbox data, DNS metadata, and authentication logs all sit inside Microsoft's European datacenters. The billing entity for StackMail is {LEGAL_NAME}; we sign DPAs on request for EU and UK customers and the underlying Microsoft DPA covers tenant-level processing.

Do I actually own the Microsoft 365 mailboxes if I cancel StackMail?

Yes. Every Microsoft 365 mailbox is provisioned inside a tenant registered in your business name, with you as the global admin. We are the Cloud Solution Provider on record, which means we handle billing and provisioning automation, but the tenant and mailboxes belong to you. If you cancel StackMail, you can transfer the CSP relationship to another reseller or take direct billing with Microsoft — the mailboxes, domains, and historical mail data stay live. Same model as Google Workspace via a reseller. We will help with the export.

Should I mix Google Workspace and Microsoft 365 mailboxes in one campaign?

Yes, for any campaign sending more than 1,000 emails per day. The reason is provider-level diversification: if Google flags your sending pattern, your M365 mailboxes keep firing, and vice versa. We recommend a 60/40 or 70/30 Google to Microsoft split for most B2B cold email programs, weighted toward Google because Gmail still dominates B2B inboxes. For lists heavy on enterprise (where Outlook usage is higher), shift toward 50/50. StackMail provisions both inside one dashboard so you can manage the split without a second account or second invoice.

What is the maximum daily volume per mailbox I should plan for?

For cold email, the safe ceiling is 50 sends per mailbox per day after a full 14-21 day warmup. This is well under Microsoft's 10,000-recipient hard limit, but it is the threshold above which suspension risk and engagement decay accelerate. To send 1,000 cold emails per day you should plan for 20-25 fully warmed M365 mailboxes, not 1-2 mailboxes pushed hard. The volume math always works out cheaper at $2.50/mailbox/month than the cost of a single suspended tenant.

Are there policies I should be aware of around cold email on Microsoft 365?

Microsoft's Acceptable Use Policy prohibits unsolicited bulk email — the same rule every major provider has. In practice, B2B cold email that is properly authenticated (SPF/DKIM/DMARC aligned), targets business addresses, includes a working unsubscribe, complies with CAN-SPAM and GDPR (legitimate-interest basis with one-click opt-out), and stays within reasonable volume is what enforcement actually looks at. We provide a setup checklist that aligns to this. We do not recommend or support spam, list scraping, or unsolicited consumer email — those will get tenants suspended fast regardless of provider, and the cost shows up in your retention curve, not just the policy.

Ready to add Microsoft 365 to your cold email stack?

Real Outlook tenants, automated SPF/DKIM/DMARC, OAuth and SMTP support, sequencer-ready in 14-21 days. From $2.50/mailbox/month on annual billing.

No credit card to start10-minute setupYou own the mailboxes