If you have ever said, “Our deliverability looks fine, opens are 45%”, I get it.
I used to say that too.
But opens are not an inbox placement test. They are not even a reliable signal anymore due to factors like false opens in Gmail, Apple MPP, Gmail image caching, security scanners, bots that click and “open” everything. Sometimes your own tracking pixel gets blocked and your opens tank even though you are sitting pretty in Primary.
So if you want to know whether your cold emails are actually landing in inbox (and which inbox, like Primary vs Promotions vs Spam), you need to test placement directly.
This post is the practical, slightly annoying, actually useful way to do it.
Not the “send an email to your friend and ask where it landed” method.
A real inbox placement test.
What inbox placement testing actually means
An inbox placement test answers questions like:
- Did my email land in inbox or spam?
- If inbox, did it land in Primary, Promotions, Updates, or “Other” tabs?
- Is placement different by provider? Gmail vs Microsoft vs Yahoo vs Proton, etc
- Is placement different by domain? gmail.com vs Google Workspace, outlook.com vs Microsoft 365
- Is placement different by content? Links, no links, plain text, HTML, images, tracking
- Is placement different by infrastructure? Domain, subdomain, IP pool (if relevant), sending tool, sending pattern
Notice what is not on that list.
Opens.
Opens are a behavior. Placement is a deliverability outcome.
And for cold email, placement is often the difference between “steady replies” and “why is everyone ignoring me”.
Why opens are a trap now (even if you love them)
A quick reality check:
1) Apple MPP inflates opens
Apple Mail Privacy Protection will prefetch images. That means it triggers your open pixel even if the human never looked at your email. Your open rate can look amazing while your reply rate is dead.
2) Security systems open your emails
Corporate filters and scanners check links and images. They open. They click. Sometimes within seconds.
3) Many clients block tracking pixels
So you can get the opposite problem too. Real humans read it, but you see no opens.
4) Gmail caches images
Depending on how your pixel is served, opens get weirdly sticky or duplicated.
So, opens can be useful as a “something changed” indicator. But they are not proof of inbox placement.
If you want proof. You test placement.
What you need for a “real” inbox placement test
Here is the basic kit.
A seed list (your test inboxes)
A set of inboxes across major mailbox providers, ideally including both consumer and business variants:
- Gmail (gmail.com)
- Google Workspace (custom domain on Google)
- Outlook.com / Hotmail
- Microsoft 365 (custom domain on Microsoft)
- Yahoo
- iCloud
- AOL (still shows up in B2C-ish lists)
- Proton (optional, but nice to have)
- Fastmail (optional)
You can buy seed list access from deliverability vendors, or build your own mini lab.
If you build your own, do not do the lazy version where all inboxes are new and empty. New inboxes behave differently. Some providers are more suspicious of “fresh” accounts. Try to age them a bit, subscribe them to normal stuff, make them look human.
Yes, it is tedious. Welcome to deliverability.
A consistent test methodology
If you send one email on Monday and another on Friday and change the copy, the links, the volume, and the sending domain… you did not run a test. You did a vibe check.
You need:
- Same sending identity (unless you are testing identity)
- Same audience type (seed list only, don’t mix with real leads)
- Same sending schedule and volume (unless you’re testing schedule)
- Controlled content variants
A way to record outcomes
You need to log:
- Provider
- Inbox vs Spam
- Tab placement (Gmail tabs)
- Timestamp delivered
- Any warnings (Gmail “Be careful with this message”, Outlook banners)
- Authentication results if visible (some inboxes show details)
- Header data (Message-ID, DKIM result, SPF result, DMARC alignment)
A spreadsheet is fine. A lightweight database is fine. Do not overcomplicate it.
A way to run the tests cleanly from your outreach stack
If you are sending cold email at scale, you want the test to reflect your real sending environment.
So run placement tests using the same platform, same sending accounts, same tracking settings, same domain setup.
If you use PlusVibe (plusvibe.ai), this is where it gets convenient because you can replicate your real cold outreach setup. Same inbox rotation, throttling, personalization style, and then isolate deliverability variables without building a separate Frankenstein stack.
The big mistake: confusing “delivered” with “inbox”
Most email tools will show “delivered”.
Delivered means: accepted by the receiving mail server.
It does not mean: placed in inbox.
It can be accepted and then routed to spam. Or quarantined. Or placed in Promotions. Or silently filtered to “Other”.
Inbox placement testing is about what happens after acceptance.
Step-by-step: how to run an inbox placement test that actually means something
We are going to do this in phases.
Not because it is fancy. Because it is the only way to learn anything from your results.
Phase 0: Freeze variables (stop changing everything)
Before you test, decide what stays constant for the test window:
- Sending domain
- From name
- From address pattern (like firstname@domain)
- Sending tool and tracking settings
- Warmup status (more on this soon)
- Daily volume during test (keep it modest)
If you are in the middle of ramping volume aggressively, pause. Or at least keep the test separate and consistent.
Phase 1: Validate your authentication and alignment (baseline)
Inbox placement testing without proper authentication is like testing a car on a flat tire.
You need these configured properly:
SPF
Make sure your SPF record includes all sending services. And that it does not exceed DNS lookup limits.
DKIM
Enabled for each sending domain. Confirm it passes.
DMARC
At least a monitoring policy (p=none) if you are early. Ideally aligned and moving toward enforcement once stable.
Alignment matters
DMARC “pass” is about alignment, not just SPF and DKIM existing.
You can have SPF pass but not aligned. Or DKIM pass but aligned to a different domain. That can still hurt.
What to do
Send one email to a Gmail seed and open “Show original” or “View message source” and verify:
- SPF: PASS
- DKIM: PASS
- DMARC: PASS
Also check that your visible From domain aligns.
If you cannot get to DMARC pass, fix this first. Do not skip it.
Phase 2: Build your seed list and label it
You want at least 20 to 50 seed inboxes if you can. More is better. But even 10 can reveal obvious issues.
For each seed inbox:
- Add a label or folder called “Placement Test”
- Create filters if helpful, but careful: filters can affect where mail lands. You want natural placement, not forced rules.
- If you do use filters, only use them to tag, not to move. In Gmail, “Apply label” is fine, “Skip inbox” is not.
Also, do not forward these to one central inbox. Forwarding changes headers and can change spam scoring.
Phase 3: Define your test matrix (what you are actually testing)
This is where most people mess up.
They test 12 variables at once, get mixed results, and learn nothing.
Pick a small matrix. Example:
Test A: Plain text, no links, no tracking
- Pure text
- No open pixel
- No click tracking
- No attachments
- 1 to 2 short lines, normal signature
Test B: Plain text with one link
- One link to your domain (not a bitly)
- Keep everything else the same
Test C: Your real cold email template
- Same copy you use
- Same personalization
- Same tracking settings
- Same unsubscribe footer if you use one
That is already enough to isolate whether your problem is “infrastructure and reputation” vs “content and tracking”.
If Test A goes to inbox and Test C goes to spam, you have a content or template issue, or tracking issue, or both.
If Test A goes to spam, you have a reputation, authentication, or sending behavior issue. Or you are blacklisted. Or your domain is burned.
Phase 4: Send the test correctly (volume and pacing matter)
Do not blast 50 seeds at once from a cold inbox. That can itself trigger filtering.
Here is a decent default for cold email style infrastructure:
- 1 email per seed inbox
- Spread over 30 to 60 minutes
- Use your normal sending tool so headers match reality
- Keep daily total volume low during tests, like under 30 to 50 per sending inbox, depending on your usual ramp
If you have multiple sending inboxes in rotation, test a few of them, not just one “good” one.
This is one reason teams like platforms such as PlusVibe. When you run multi inbox outbound, one inbox can be clean and another can be quietly degraded, and you will never notice unless you test across the rotation pool.
Phase 5: Measure placement (manually and via headers)
Now you check each seed inbox and record:
- Inbox vs Spam
- If Gmail: Primary vs Promotions vs Updates vs Forums
- If Outlook: Inbox vs Junk, plus any warnings
- Time to arrival
Also grab headers for a few samples
Especially from spam placements.
What you are looking for:
- Authentication results (SPF/DKIM/DMARC)
- Any obvious “X” headers indicating filtering
- The return path and envelope from domains
- Message-ID domain (sometimes tools use weird domains)
- List-Unsubscribe header presence (this matters more than people think)
This is where you stop guessing.
How to interpret results without lying to yourself
Here is a simple scoring approach you can use:
- Inbox (Primary): 2 points
- Inbox (Promotions/Other tabs): 1 point
- Spam/Junk: 0 points
Then:
- Score each provider separately
- Score each template separately
- Look for patterns
What “good” looks like
For a healthy cold email setup, you want:
- Gmail: mostly Primary or at least Inbox (some Promotions is normal)
- Microsoft: Inbox rate stable, low Junk
- Yahoo: usually decent if reputation is ok, but can be strict on domain signals
- iCloud: can be picky, often reacts to content patterns
If you are seeing 30% spam across multiple providers on Test A. That is not “content”. That is “you have a deliverability issue”.
Common placement patterns and what they usually mean
Pattern 1: Everything goes to spam, even plain text
Likely causes:
- Domain reputation is bad (new domain with no trust, or burned domain)
- Sending IP or shared infrastructure reputation (if applicable)
- SPF/DKIM/DMARC misconfiguration
- Over sending too fast too soon
- Your sending inboxes are not warmed up
- You are on a blacklist (or your links are)
Action:
- Fix authentication, verify alignment
- Slow down volume and ramp properly
- Run warmup on each inbox
- Consider moving cold outreach to a dedicated domain
- Check blacklist status (but don’t obsess, many modern filters are reputation based beyond public lists)
Pattern 2: Gmail is fine, Microsoft goes to Junk
Likely causes:
- Microsoft is more sensitive to certain HTML patterns and link tracking
- Inconsistent engagement history for that sender
- Missing List-Unsubscribe header can hurt in some contexts
- Overly “salesy” language triggers junk heuristics
Action:
- Test plain text or simpler HTML for Microsoft
- Reduce link tracking or use clean links
- Add proper unsubscribe mechanism and header
- Make copy less spammy and less template-like
Pattern 3: Plain text inboxes, but real template goes to spam
Likely causes:
- Too many links
- Link domains have poor reputation
- Aggressive personalization tokens that look like spam patterns
- Tracking pixel and click tracking issues
- Certain phrases trip filters (“quick question”, “following up”, “free”, “guarantee”, etc)
- Unbalanced text to link ratio
Action:
- Reduce links
- Use your primary domain for links, not random redirectors
- Turn off click tracking for cold email if needed
- Simplify template, remove heavy HTML
- Rewrite subject lines and first line
Pattern 4: Promotions tab, not Primary
This is not always bad.
But if you are doing cold outbound, Promotions can reduce visibility. Especially for busy inboxes.
Likely causes:
- Marketing-ish HTML
- Multiple links, logos, images
- Certain footer patterns
- Tracking
Action:
- Go more plain text
- One link max (or no links in first email)
- Remove images
- Keep formatting minimal
A real placement test example (what I would actually do)
Let’s say you have a new outbound domain: tryacme.com
You have 5 sending inboxes. You are sending 150 emails per day total, 30 per inbox. Replies are low. Opens are “high”. You suspect spam.
Here is the test plan:
Day 1: Infrastructure baseline
- Confirm SPF/DKIM/DMARC alignment on
tryacme.com - Send Test A to 30 seeds from Inbox #1 and #2 only
- No tracking, no links, plain text
Expected: mostly inbox. If not, stop and fix. Don’t keep blasting leads.
Day 2: Template check
- Send Test B and Test C to the same seeds, same schedule
- Compare placement across providers
If Test A is good and Test C is bad, you now know it is template or tracking.
Day 3: Inbox pool health check
- Send Test C from Inbox #3, #4, #5
- Same content, same pace
If Inbox #4 is junking and others are fine, you have an inbox-specific reputation issue. Usually warmup, sending history, or account flags.
This is where multi-inbox management tools matter, because you want to rotate intelligently and throttle, not just “spray and pray” across 20 inboxes. PlusVibe’s approach here is pretty much designed for this reality. Multiple inboxes, rotation, throttling, and deliverability focus, instead of pretending one inbox can handle everything forever.
Don’t ignore warmup, but don’t worship it either
Warmup is not a magic spell. It is reputation scaffolding.
If you do it badly, it can also create weird patterns.
A few notes that matter:
- Warm up each sending inbox, not just the domain
- Keep warmup realistic. Reply chains, natural text, not identical messages
- Do not warmup and then immediately ramp to 200 per day per inbox
- Monitor placement while ramping
If you are using a deliverability focused outbound platform (again, PlusVibe is in this category), you usually get a warmer that tries to simulate realistic behavior which helps. But you still have to ramp responsibly.
For more detailed strategies on email deliverability testing such as the ones outlined above, refer to this comprehensive guide on how to test email deliverability.
A quick note on seed list quality (it matters more than you think)
If your seed list is:
- all brand new Gmail inboxes
- all created from the same IP
- all logged into from the same browser fingerprint
- all empty and never used
Your placement results can be skewed.
Providers can treat those accounts differently. Some even flag them as suspicious recipients.
So, if you are serious, get a proper seed network from a deliverability vendor, or take time to age your own seeds.
And please, mix consumer and business inboxes. B2B deliverability is often more about Microsoft 365 and Google Workspace than gmail.com.
What about “Inbox placement tools” that give you a single score?
They can be useful.
But you still need to validate with your real stack and your real templates.
Also, many tools test from their own sending infrastructure, not yours, unless you integrate properly. Which means you can get a “great” score that does not reflect your domain reputation, your inbox rotation, your tracking settings, your actual message.
So use scores as directional. Not gospel.
The boring but important part: controlling for personalization
Personalization can change spam scoring.
Not because “personalization is bad”, but because:
- You might insert weird tokens (like
{{first_name}}) that sometimes fail and look broken - You might insert scraped company names with odd characters
- You might insert custom lines that include risky words like “invoice”, “payment”, “urgent”, etc
- You might change the structure enough that filters see inconsistency
For placement testing, keep personalization minimal and consistent.
Use one safe personalization token, like first name, and ensure it always renders.
Then do a separate test for your deeper personalization blocks.
Links are usually the culprit. But not always the way you think.
Some practical link rules for cold email placement tests:
- Avoid URL shorteners.
- Avoid redirect chains. Especially tracking redirects.
- Avoid sending to a domain that is not aligned with your sender identity.
- Prefer one clean link. Or none in the first email.
- If you must link, link to a high trust domain you control, with a clean page.
- Watch your link domain reputation. A burned tracking domain can ruin placement.
And yes, your calendly link can hurt sometimes. Not always. But it is not “neutral”.
Test it.
Images and HTML. The fastest way to Promotions or spam.
If you are doing cold outbound, you do not need heavy HTML.
Some tools default to pretty templates. Logos. Buttons. Multiple sections.
Looks nice. Also looks like marketing.
For placement testing:
- Use plain text first
- If you must use HTML, keep it minimal
- Avoid buttons. Use normal text links.
You are not sending a newsletter. You are sending a cold email that should look like a human wrote it quickly.
The “unseen” deliverability killers you should test for
1) From name patterns
Changing From name from “John from Acme” to “John” can change results. Some filters weigh “brand-y” From names.
Test it.
2) Subject line punctuation
Overuse of punctuation, title case, certain words. It matters.
3) Reply-To domain
If Reply-To is on a different domain, some filters dislike it. Especially if it feels deceptive.
4) Message threading
Some warmup and follow-up strategies rely on threading. That can help engagement but can also look artificial if abused.
5) Unsubscribe implementation
For cold email, you should have a clear opt out. Also consider a proper List-Unsubscribe header. Some providers and filters treat that as a trust signal.
PlusVibe and similar outbound platforms usually support unsubscribe handling. The detail you want to confirm is whether it also supports the header, not just a footer link.
How often should you run inbox placement tests?
Not once.
Deliverability is not a set-and-forget setting. Your reputation changes.
A practical cadence:
- Weekly: if you are scaling volume or launching new domains
- Biweekly: if stable and sending consistently
- Immediately: if replies drop suddenly, bounce rate increases, or you change templates, tracking, or infrastructure
Also test when:
- you add new sending inboxes
- you rotate in a new domain
- you change link domains
- you change sending schedule (like weekend sending)
- you move to a new outreach platform
A simple template for recording placement results (copy this)
Create a sheet with columns:
- Test date
- Sending inbox (john@domain)
- Sending domain
- Provider (Gmail, M365, Yahoo)
- Seed address
- Template variant (A, B, C)
- Subject
- Tracking on/off
- Links (none / 1 / 2+)
- Placement (Primary / Promotions / Inbox / Spam)
- Time to deliver (minutes)
- SPF result
- DKIM result
- DMARC result
- Notes (warnings, banners, weirdness)
After 2 to 3 test runs, patterns jump out.
If your inbox placement is bad, what to fix first (in order)
People love to rewrite copy first because it feels productive.
Sometimes it helps. Often it is not the root issue.
Here is the order I use:
- Authentication and alignment (SPF/DKIM/DMARC)
- Sending behavior (volume, ramp, throttle, consistency)
- Inbox health (warmup, account flags, aged inboxes)
- Link and tracking setup (click tracking, redirect domains)
- Template content and formatting (spammy language, HTML, structure)
- List quality (bad lists lead to bounces, complaints, and reputation hits)
- Infrastructure strategy (dedicated outbound domains, inbox rotation)
If you want to scale outbound without constantly thinking about this, you basically need a system that treats deliverability as a first class feature. This is the whole pitch behind PlusVibe. Warmup, verification, rotation, throttling, and campaign automation in one place, so you’re not duct taping 6 tools together and then wondering why Microsoft hates you.
The “real world” version: placement testing while you are actively sending campaigns
Sometimes you cannot pause campaigns. Fine.
Do this:
- Add a small number of seed inboxes to your live campaign list, like 5 to 10
- Make sure they are tagged so you can filter them out of reporting and follow-ups
- Monitor where those messages land, every day for a week
This is not as clean as a dedicated test send. But it reflects reality.
Important: Do not let seeds click or reply in a way that skews performance metrics. You are testing placement, not engagement.
Images you can add to make this post easier to follow
Since this is going on WordPress, here are image placeholders you can swap with real screenshots. They help a lot if you actually include them.
1) Example: Gmail “Show original” authentication results
2) Example: Spreadsheet layout for placement testing
3) Example: Gmail tabs showing Primary vs Promotions vs Spam
4) Example: Outlook Junk warning banner
5) Example: Multi-inbox rotation and throttling concept diagram
If you do not have these images yet, even simple screenshots you capture yourself are fine. The point is: show, don’t just tell.
A quick checklist you can run in 10 minutes before every placement test
- SPF includes your sender and is under lookup limit
- DKIM enabled and passing
- DMARC present and aligned
- Seeds are not using filters that move messages
- Test variants are defined (A/B/C)
- Tracking settings are noted
- Links are noted (and clean)
- Send is paced, not blasted
- Results are logged by provider
- You pulled headers for at least a few spam placements
Subtle, but important: inbox placement is not the same as long term deliverability
You can run a placement test today and pass.
Then start sending to a messy list tomorrow and damage reputation.
So, pair placement testing with:
- Bulk email verification (reduce bounces)
- Complaint monitoring (harder in cold email, but still relevant)
- Conservative ramping
- Consistent sending patterns
- Domain strategy (dedicated outbound domains)
This is also why outbound platforms that bundle verification + warmup + sending controls tend to outperform a DIY stack over time. Less room to accidentally break something.
If you want a practical way to implement this with your outbound stack
If you are already using PlusVibe, you can set up a small “Placement Test” campaign:
- Upload your seed list as leads (tag them clearly)
- Create 2 to 3 template variants (plain text no links, one link, real template)
- Use the same sending inboxes and rotation rules as your real campaigns
- Throttle sends and spread over time
- Log placement outcomes in your sheet
If you are not using PlusVibe and you are currently duct taping a warmup tool, a verifier, a sender, and some inbox rotation logic… it might be time to simplify. Deliverability work is hard enough even when the tooling is clean.
You can check out PlusVibe here: https://plusvibe.ai
No drama, just worth a look if deliverability is becoming a weekly fire drill.
Let’s wrap up
A real inbox placement test is not “our open rate is high”.
It is a controlled experiment that tells you, across mailbox providers, where your emails are actually landing.
If you do only one thing after reading this, do this:
Send a plain text, no tracking, no links email to a proper seed list and see if it lands in inbox across Gmail and Microsoft.
That baseline will tell you whether you have a reputation problem or a template problem. And once you know that, fixing deliverability becomes… not easy, but at least not random.
And that is the real win.
FAQs (Frequently Asked Questions)
What is inbox placement testing and why is it important for cold email deliverability?
Inbox placement testing determines where your emails actually land—Inbox, Spam, or specific tabs like Primary, Promotions, Updates. It's crucial because high open rates don't guarantee your emails reach the intended inbox; placement affects reply rates and overall campaign success.
Why are open rates not a reliable indicator of email deliverability anymore?
Open rates can be misleading due to factors like Apple Mail Privacy Protection prefetching images (inflating opens), security scanners triggering opens and clicks, tracking pixels being blocked by some clients, and Gmail caching images—all causing false or missed opens that don't reflect true inbox placement.
How can I perform a real inbox placement test effectively?
A real test requires: 1) A seed list of aged inboxes across major providers (Gmail, Outlook, Yahoo, etc.), 2) Consistent test methodology with controlled variables (same sending identity, schedule, content), 3) Logging outcomes like inbox vs spam status and tab placement, and 4) Sending tests from your actual outreach stack to mirror real conditions.
What common mistake do people make when assessing email deliverability based on 'delivered' status?
'Delivered' means the receiving mail server accepted your email but doesn't guarantee it landed in the Inbox. Emails can be delivered yet routed to Spam, Promotions tab, quarantined, or filtered elsewhere. Inbox placement testing focuses on post-delivery routing to assess true deliverability.
Why should I avoid using brand new inboxes for my seed list in inbox placement tests?
New inboxes behave differently and often trigger suspicion from providers, which can skew results. It's better to use aged inboxes subscribed to normal content so they resemble real user behavior—this provides more accurate insights into how your emails will be treated.
How does running inbox placement tests through my actual outreach platform benefit deliverability analysis?
Using your real sending domain, accounts, tracking settings, and sending patterns ensures the test reflects authentic conditions. This approach isolates deliverability variables effectively without building a separate testing setup—tools like PlusVibe facilitate this process seamlessly.


























































