Why a new domain's first emails land in spam
A new sending domain has no reputation, so mailbox providers judge its first messages on two things only: whether the domain proves who sent them, through SPF and DKIM, and whether the sending looks like a careful start or a sudden blast. When either one is missing, the first emails land in spam, test sends included.
This is a different problem from a sender whose placement slipped after months of good results. An established domain has a record that receivers can weigh against one bad send. A new domain has nothing on file, so every signal in its first sends counts for more. The inbox placement guide covers how placement works in general. This page covers the first week of a domain's life.
Filters are especially wary of new accounts that have not set up a sending domain, or sent enough volume to show that the sender is legitimate and the list is healthy. That holds for mailbox providers and for the safety checks inside sending platforms, Nitrosend's own included. A new domain has to earn the benefit of the doubt.
Causes to check, in order
Causes, the sign of each, and where to look
| Cause | The sign | Where to look |
|---|---|---|
| Domain not authenticated | SPF or DKIM shows none or fail in the message headers | Domain status in nitro_manage_domains |
| No sending history | Records pass, but even small sends reach spam at one provider | Provider reputation tools such as Google Postmaster |
| First send too large | The first campaign went to the whole list on day one or two | Recent send volume in nitro_get_insights |
| From address off the domain | The test was sent from an address that is not on your own domain | The From line of the test |
| Bounces and complaints early on | Bounce or complaint counts climb on the first sends | nitro_get_insights |
- The sending domain is not authenticated. The domain was added but SPF and DKIM are not yet published and verified, so receivers cannot tie the mail to the domain in the From line. It is the first thing to rule out, because unauthenticated mail from a domain with no history goes straight to the spam folder.
- The domain has no sending history. The records pass, but receivers have never seen mail from this domain. Receivers judge the domain on its own record, so a new domain starts from zero even when it sends through an IP with a long, clean record. That record has to be built from the domain's first sends.
- The first send was too large. A first campaign to the whole list is what a spammer with a fresh domain looks like. In one case Nitrosend flagged, a Free account on its second day was about to push 23,632 emails cold through a reputation that had no history at all.
- The From address is not on your domain. A test sent from an address that is not on your own domain looks unrelated to your brand, and a filter reads it that way. A test that goes out "not from your domain" can land in spam even when your real domain is fine.
- Early bounces and complaints. An imported list with old addresses produces bounces, and recipients who do not remember subscribing mark mail as spam. On a new domain there is no good record to absorb those signals, so a few of them weigh heavily.
The fix for each cause
Authenticate the sending domain
Add and verify the domain with nitro_manage_domains, the tool that adds, verifies and sets up DNS and DKIM authentication for sending domains. The same endpoints are available over the REST API at /v1/my/domains, from any of the supported languages, and through the Nitrosend CLI. Publish every record it returns, then recheck the domain until it shows as verified. A verified domain becomes a trusted sending domain, which is the first thing receivers look for. The SPF authentication guide explains what each record proves.
Build history before volume
Ramp the first sends. Send to a small group of recipients who know the brand, then widen the audience over the following days rather than sending everything at once. SPF and DKIM protect the domain's reputation, and a gradual start gives receivers a record to judge it by. The domain warm-up guide sets out the ramp in more detail.
A new dedicated IP needs the same careful warm-up as a new custom sending domain, so it does not shortcut the start. For most new senders, the shared IP's record is an asset and the domain is what needs building. Google's own view of that record is visible in Google Postmaster Tools, once the domain sends enough mail to show data.
Hold the campaign
Do not send a campaign while test sends are still landing in spam. Every extra message that reaches spam adds to the record the domain is trying to build. Fix placement first. Once a test reaches the inbox, send the planned campaign in smaller batches over several days rather than in one go.
Send from an address on the domain
Set the From address to an address on the verified domain, so the authenticated domain and the one recipients see are the same. Sending from your own domain also means readers see your brand and the delivery reputation is tied to your domain, rather than to a Nitrosend subdomain. Then send one test through nitro_send_message to an inbox you control and confirm SPF and DKIM pass in the headers.
Keep bounces and complaints low
Import only addresses that subscribed and still engage, using nitro_import_contacts, and keep known bad addresses on the suppression list at /v1/my/suppressions. Watch bounces and complaints after each send with nitro_get_insights. Nitrosend tracks bounce and complaint rates per domain and gates every send on the health of the domain it goes out on, so a domain that starts bouncing gets throttled or held while other domains keep sending. The deliverability rate guide explains what those numbers measure.
What to do next
Once the domain is verified and a test reaches the inbox, send the first real batch to your most engaged recipients and check where it lands. A seed check across the major providers, as set out in the inbox test guide, shows whether one provider is still filtering the domain.
On the Free plan you can start with 100 commercial recipients per rolling 24 hours, with 8,000 emails up front, then 500 a month. A verified domain and a clean list can raise that daily allowance, including on day one, which is why the pricing table shows a range rather than one number. Plan the first sends around the allowance you have.
After the first weeks, the work becomes keeping the record clean. The deliverability best practices that matter, and how sender score reflects them, are the next reads. For the wider picture of why mail is accepted but still filtered, see what email deliverability is.
Go deeper
Common questions
Usually because the domain is not yet authenticated, or it is authenticated but has no history yet. Check that both records, SPF and DKIM, pass in the test's headers, and that the From address is on your own domain. If the test still lands in spam with both passing, the domain needs a few days of small, steady sends.
There is no fixed number of days. Reputation builds from the domain's own sending, so small, steady sends to engaged recipients build it faster than a few large blasts. A new Free account starts at 100 commercial recipients per rolling 24 hours anyway, and the allowance rises with sender standing. Bounces and complaints in the first weeks set it back further than on an established domain.
No. Receivers judge the domain on its own record, so a dedicated IP does not give a new domain any history. A new dedicated IP also needs its own careful warm-up, just like a new domain, which means two records to build instead of one. For most new senders, a shared IP with a clean record is the better start.
No. Every message that reaches spam adds to the record the domain is building. In one case Nitrosend flagged, a Free account on its second day was about to push 23,632 emails cold through a reputation with no history. Hold the campaign until test sends reach the inbox, then start with a small batch.
Hand the check to an agent
Ask your agent in Claude, ChatGPT or Cursor, through the Nitrosend MCP server, to check the domain's status with nitro_manage_domains and pull bounces and complaints from recent sends with nitro_get_insights. Paste in the headers of a test that reached spam and it can point to the failing check, then plan the first sends in small batches.