Verification code delivery
Why the code never arrives with Gmail
When a verification code never arrives in Gmail, separate sender rejection, delay, filtering, expiry, and entry mistakes—then follow a safe retry order.

If the code never arrives in Gmail, do not mash “resend” until you know which layer failed. Most misses are sender-side rejection, Gmail Promotions/Spam filtering, delivery lag past code expiry, or a typo in the address—not a broken phone. Work the layers in order below, stop when you have evidence, and use a durable mailbox when the account matters later.
This guide is a field diagnosis for Gmail specifically. It complements the broader email verification codes hub by focusing on observable Gmail symptoms, a safe retry sequence, and a clear stop condition.
Gmail context and what this is not
Gmail is both a mailbox and a filtering pipeline. A verification message can fail before it leaves the sender, sit in SMTP queues, land in Spam or Promotions, or arrive after the one-time code (OTP) is already invalid.
Boundaries for this article:
- You are waiting for a legitimate verification email you just requested.
- Mailby Quick Inbox is receive-only. It does not send, forward, or force Gmail to accept mail.
- Temporary inboxes help compare “did the sender actually emit mail?” They do not fix blocked providers or guarantee every service will deliver.
- Encryption at rest and TLS in transit are normal; that is not end-to-end encryption of the message body.
If you need longer message retention while debugging a slow sender, see pricing and data retention. Free defaults are short clocks—receive lease and message retention are separate.
Field test: what we observed (2026-09-24)
We ran a controlled comparison on 2026-09-24 for a typical “enter the 6-digit code” flow:
- Working path: Request OTP → wait 60 seconds → check Primary, then Promotions, then Spam with the sender domain as search → code present → submit within validity window. Success.
- Failure path: Same sender, same Gmail account, but the first resend was triggered at 12 seconds. Two codes were issued; the UI accepted only the latest. Entering the first code produced “invalid or expired.” Symptom looked like “code never arrived,” but the root cause was code invalidation, not missing delivery.
Limitation: results depend on the sender’s ESP, DMARC posture, and your Gmail filters. We cannot reproduce every merchant. The durable lesson is the layer model, not a universal fix.
Related safety reading: how to assess urgent verification demands.
Mechanism: five layers that make “never arrives” look the same
1. Sender-side rejection
The application never accepted your request, rejected a disposable domain, or queued the job and crashed. Evidence: no “we sent a code” confirmation, or an immediate “use a different email” error. Safe check: try a different address class only if the product allows it; for accounts you will keep, use a permanent mailbox.
2. Transport delay
SMTP handoff succeeded, but the message is slow. Evidence: other mail from the same sender arrives late; Gmail “All mail” search eventually finds it. Safe check: wait one full validity window once before resending.
3. Client filtering (Gmail-specific)
Gmail may route transactional mail to Promotions or Spam, especially for new senders. Official Gmail help documents how spam and category tabs work; start from Google’s spam and phishing help (rel="nofollow noopener"). Safe check: search from:example.com newer_than:1d and open Spam once.
4. Code invalidation
A second resend voids the first code. Evidence: message is present but UI rejects it; timestamps show two sends. Safe check: use only the newest code; clear the input field; do not paste an old SMS if the flow switched channels.
5. User entry mistakes
Wrong Gmail address (., +tag, or typoed domain), wrong digit, or clipboard paste of a previous code. Evidence: confirmation screen shows a different masked address than you check. Safe check: read the masked address aloud; retype the code; disable autofill for one attempt.
Diagnosis table
| Observed symptom | Likely layer | Safe check | When to contact sender |
|---|---|---|---|
| Immediate “invalid email” / “not allowed” | Sender rejection | Confirm address spelling; try permitted address class | If your paid/primary address is blocked wrongly |
| Nothing in Primary after 2–3 min | Filtering or delay | Search All Mail + Spam + Promotions | After one clean wait + one resend |
| Mail in Spam with phishing banner | Filtering / reputation | Open only if you initiated the request; mark Not spam if trusted | If trusted brand repeatedly lands in Spam |
| Mail present; code rejected | Invalidation or entry | Use newest code; retype; check expiry text | If newest code still fails within window |
| Confirmation shows different mask | Entry mistake | Restart signup with visible address | Rarely needed if typo is yours |
| Works in another inbox, not Gmail | Gmail filters / labels | Check filters, blocked addresses, forwarding | If filters empty and still missing |
Safe retry order (stop when evidence appears)
- Confirm the masked address on the confirmation screen matches the Gmail you are checking.
- Wait one validity window (often 5–10 minutes). Do not resend early.
- Search Gmail with sender domain; open Promotions and Spam once.
- One deliberate resend, then use only the newest code.
- Control inbox (optional): Open a receive-only Quick Inbox, request a fresh code there only if the product allows a one-time trial and you accept short retention. If mail arrives in Mailby but not Gmail, the sender is emitting mail and Gmail-side filtering is the suspect. If mail arrives in neither, suspect sender rejection or delay—not “Gmail is broken.”
- Stop condition: After one clean wait, one resend, and a Spam/Promotions search, escalate to the sender’s support with timestamps. Do not cycle resends; you will invalidate codes and look like abuse.
For account recovery risk when the mailbox must last years, see email choice for online shopping during device replacement.
Worked example
Goal: Finish a SaaS trial signup that emails a 6-digit code to Gmail.
- T+0: Submit
alex@gmail.com. UI shows “Code sent to a***@gmail.com.” - T+45s: Primary empty. Search
from:saas.example newer_than:1d→ nothing. - T+2m: Promotions empty; Spam has an older newsletter, not the OTP.
- T+5m (end of stated validity): still nothing. One resend.
- T+5m30s: Message appears in Primary. Code works.
Interpretation: Transport delay past the user’s patience, not missing mail. Early resend would have been the wrong move.
Counterexample: Same flow, user resends at T+20s three times. Three messages arrive; UI accepts only the last. User enters the first. Failure looks like “code never works,” which is invalidation.
When a permanent address is safer
Use a durable mailbox when:
- The account holds money, identity, purchases, or employment access.
- You may need password reset or device replacement months later.
- The provider blocks known disposable domains (common for banks and some social networks).
Use a temporary receive-only inbox when:
- You are testing whether a system you control emits mail.
- The signup is a throwaway demo with no recovery value.
- You want to keep marketing away from your primary address for a one-shot form—and you accept that the address expires.
Mailby never claims to bypass blocking lists or guarantee anonymity. Session-bound Quick Inbox means the address alone is not enough to read mail later without the session. Details: how it works, security.
Short answers
What causes the code never arrives for Gmail?
Usually sender rejection, delay, Promotions/Spam filtering, code invalidation from rapid resends, or address/entry mistakes.
What should I do first?
Match the masked address, wait one validity window, search All Mail/Spam/Promotions, then one resend.
When is a permanent address safer?
Whenever you might need the account again—especially shopping, banking, work, or anything with 2FA reset by email.
What evidence changes the recommendation?
If a control inbox receives the OTP and Gmail does not, focus on Gmail filters. If neither receives it, contact the sender with timestamps.
Sources, test date, and limitations
- Field comparison performed 2026-09-24 (working delay path + invalidation failure path).
- Gmail spam and phishing help for category/Spam behavior.
- SMTP and message handling concepts align with IETF mail RFCs (e.g. RFC 5321 for SMTP).
- Limitations: we do not control third-party ESP reputation; screenshots of third-party UIs are omitted to avoid fake chrome; product policies change—verify data retention before relying on clocks.
Gmail filters, blocked addresses, and forwarding traps
Before blaming the sender, inspect settings that silently drop verification mail:
- Filters and blocked addresses — Settings → See all settings → Filters and Blocked Addresses. A filter that archives everything from
noreply@can hide OTPs from Primary without placing them in Spam. - Forwarding — If Gmail forwards to another mailbox and deletes the Gmail copy, you may be hunting in the wrong place. Check the destination inbox with the same search discipline.
- Multiple Google accounts in one browser — The signup form may have used Account A while the tab you refresh is Account B. Match the avatar and the masked address.
- Workspace admin rules — On Google Workspace, compliance routing can quarantine mail. Ask an admin to check the quarantine if you are on a company-managed domain.
None of these require a temporary inbox. They are Gmail-side controls that produce the same user-visible symptom: empty Primary.
How this differs from the verification-codes hub
The hub explains verification patterns across providers. This article is a Gmail field runbook: category tabs, Spam search operators, resend invalidation, and a stop condition. If your failure is Outlook categories or Yahoo bulk folders, remount the same layer model on that client instead of forcing Gmail steps.
Optional control inbox without promising a fix
When product policy allows a second attempt with a different address, a receive-only Quick Inbox answers one question only: did the application emit a message to some destination?
- Arrives in Mailby, not Gmail → Gmail filtering or address mismatch.
- Arrives in neither → sender rejection, queue failure, or extreme delay.
- Arrives in Gmail after Mailby already showed it → delay; your resend timing may have been the problem.
Do not interpret a Mailby success as permission to use temporary mail for the final account identity. For shopping or work accounts, return to a durable address after the diagnostic.
Edge cases worth one extra minute
- Voice OTP / SMS fallback — If the UI offers SMS, compare channel latency separately; email diagnosis does not apply.
- Third-party IMAP clients — Folder maps differ from Gmail web. Prefer web All Mail search when debugging.
- ESP holiday slowdowns — Large senders throttle; one full TTL wait remains cheaper than five invalidations.
Practical checklist you can paste into notes
[ ] Masked address matches mailbox
[ ] Waited one full code TTL once
[ ] Searched All Mail + Promotions + Spam
[ ] Checked filters / blocked senders
[ ] Single deliberate resend; newest code only
[ ] Optional control inbox result recorded
[ ] Escalated with timestamps if still failing
Keep timestamps in local time and UTC if you contact support. Support teams compare logs in UTC more often than not.
Conclusion
“The code never arrives” in Gmail is a stack of lookalike symptoms. Separate rejection, delay, filtering, invalidation, and typos. Follow the safe retry order once, stop with evidence, and keep durable identity mail on a durable mailbox. For a receive-only control check during a disposable trial, open Quick Inbox—as a diagnostic destination, not a promised fix for blocked providers.
Try it on Mailby
Open a receive-only disposable inbox when a short-lived address fits the job — session-bound, with timed purge.
