Our BIMI Record Was Perfect, but Gmail Ignored It. This Was the Fix.
A frustratingly common BIMI failure has nothing to do with your SVG and everything to do with your DMARC enforcement policy.

It was one of those uniquely frustrating DNS problems. The record was syntactically perfect. `default._bimi.yourdomain.com` was resolving globally. The TXT value, `v=BIMI1; l=https://cdn.ourdomain.com/logo.svg;`, was character-for-character correct. Our SVG passed every online validator we could find. Yet, our logo was nowhere to be found in Gmail.
The mystery deepened when we saw our logo pop up in Yahoo Mail. This partial success was almost worse than a total failure. It sent us down a rabbit hole of debugging CDN headers, MIME types, and obscure SVG rendering quirks. Was this a Gmail-specific issue? An Apple Mail bug? For days, we were convinced the problem was with our assets or our hosting.
We were wrong. The problem wasn't in the BIMI record or the image file. The block was hidden in plain sight, inside a different TXT record we had set months ago: our DMARC policy. And it's the single most common reason a technically correct BIMI setup fails to deliver.
The Anatomy of a Perfect (and Perfectly Invisible) Record
Let's review the setup, because the details matter. Our BIMI record was textbook. It lived at the correct subdomain and pointed to a valid, HTTPS-hosted Scalable Vector Graphic. We had even secured a Verified Mark Certificate (VMC), which is another prerequisite for Gmail, and referenced it in an `a=` tag. We had done our homework.
The DMARC Record: The First Clue
Like any organization starting its DMARC journey, we began in monitoring mode. This is standard practice. You don't want to accidentally block legitimate mail from your own domain, especially from third-party services that haven't been properly configured for authentication. So, our DMARC record, defined in RFC 7489, looked something like this:
v=DMARC1; p=none; pct=100; rua=mailto:dmarc-agg@ourdomain.com;
This record instructs receivers to send aggregate reports about our domain's email activity to a specified address but to take no specific action (`p=none`) against messages that fail DMARC checks. For months, this was exactly what we wanted. It allowed us to gather intelligence without impacting mail flow. We assumed that having a valid DMARC record was enough. It isn't.
Why Yahoo Showed Our Logo but Gmail Held It Back
The split result between Yahoo and Gmail wasn't a bug; it was a feature of differing implementation policies. Not all mailbox providers treat BIMI prerequisites identically. In the early days of BIMI, some providers were more lenient with the DMARC enforcement requirement. Seeing the logo appear in one inbox gave us a dangerous false positive, leading us to believe our core configuration was sound.
Gmail, along with other providers in the VMC-issuing ecosystem, takes a harder line. Their logic is sound: BIMI is fundamentally a security feature that provides a visual indicator of trust. To earn that visual indicator, the domain owner must first demonstrate a commitment to securing their domain against spoofing. Simply monitoring for abuse isn't enough.
This operational divergence is a critical lesson for any security team. When a feature behaves differently across major providers, resist the urge to debug the provider-specific implementation. First, re-verify your adherence to the strictest interpretation of the underlying standards. Gmail wasn't breaking; it was correctly enforcing a rule we had overlooked.
The Diagnostic Trail: Following the Authentication Headers
You can't debug this problem by staring at your DNS dashboard. The evidence is in the email headers of a message delivered to a target inbox. Specifically, you need to find the `Authentication-Results` header, defined by RFC 8617. This header is where the receiving mail server records the verdicts of its SPF, DKIM, and DMARC checks.
Decoding the `dmarc=pass` Confusion
Here's what threw us off initially. When we inspected the headers of an email sent from our domain to a Gmail account, we saw `dmarc=pass`. How could DMARC be passing if it was the source of the problem? This is a crucial distinction. The `dmarc=pass` verdict simply means the message passed authentication and alignment checks. It means the domain in the `From:` header matched the domain verified by SPF or DKIM. It says nothing about the enforcement policy you published.
Authentication-Results: mx.google.com; dkim=pass header.i=@ourdomain.com; spf=pass ...; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=ourdomain.com
The real story is in the parenthetical. See `p=NONE` and `dis=NONE`? That's Gmail's server logging the result: "We checked DMARC, it passed alignment, and the sender's published policy was 'none', so our resulting disposition (action) was 'none'." Gmail is explicitly stating that it honored our request to do nothing. And in return, it refused to grant us the visual trust signal of a BIMI logo. The chain of trust was broken by our own lack of commitment.
The Unwritten Rule: Trust Requires Enforcement
BIMI is not a gift. It's a reward. You are asking mailbox providers to place your logo in their users' inboxes, effectively co-signing that your message is legitimate. They will not extend that trust to you if you have not first taken the necessary steps to prevent fraudulent use of your domain.
A DMARC policy of `p=none` is a statement of non-commitment. It says, "We're interested in who is spoofing our domain, but we're not willing to have you block them yet." In contrast, `p=quarantine` (send to spam) or `p=reject` (block entirely) is a direct instruction. It tells receivers, "If a message claims to be from us but fails authentication, we authorize you to protect your user by quarantining or rejecting it." That is the posture required to earn the logo.
This isn't just Gmail's opinion. The official BIMI group's guidance is clear that for your logo to be displayed, your domain's DMARC policy must be at an enforcement level. Furthermore, the policy must apply to 100% of your mail, meaning a record with `pct=50` won't qualify. You can't ask for full trust while only securing half your traffic. By displaying your logo, Google is putting its own reputation on the line; they expect you to do the same.
The Playbook: Safely Ramping DMARC for BIMI
Jumping from `p=none` to `p=reject` overnight is a recipe for disaster. It's a terrifying prospect for any admin who knows how many third-party services—from marketing platforms to HR systems—send mail on their company's behalf. A misstep can block critical, legitimate email. The key is a gradual, data-driven approach.
Step 1: Analyze Your DMARC Aggregate Reports
For weeks or months, you've been collecting DMARC aggregate (RUA) reports. Now it's time to use them. These XML files contain a census of all IPs and services sending mail claiming to be from your domain. Your job is to parse these reports and identify every legitimate source that is failing SPF or DKIM alignment.
This is the grunt work of DMARC. For each legitimate but failing service, you must remediate. This could mean adding an IP range to your SPF record (being careful of the 10 DNS lookup limit) or, much more preferably, working with the vendor to enable DKIM signing for your domain. DKIM, defined in RFC 6376, is more resilient, especially with forwarders that break SPF.
Step 2: A Gradual Rollout to Quarantine and Beyond
Once your analysis shows that nearly all legitimate mail is passing DMARC alignment, you can begin enforcement. Don't jump to `reject`. Start by changing your policy to `p=quarantine; pct=5;`. This tells receivers to send just 5% of failing mail to the spam folder. Monitor your DMARC reports and your help desk for any signs of trouble.
If all is quiet, slowly raise the percentage over a period of weeks: `pct=25`, then `pct=50`, then `pct=100`. At each stage, watch the data. Once you reach `p=quarantine; pct=100;`, your BIMI prerequisites for Gmail are met. Your logo should appear. From there, you can choose to stay at `quarantine` or repeat the gradual percentage-based rollout to `p=reject` for the strongest possible anti-spoofing posture.
From Syntax to Security Posture
The frustrating journey to a visible BIMI logo is rarely about a misplaced semicolon in a DNS record. It's a journey from a passive monitoring stance to an active security posture. The logo isn't a prize for correct syntax; it's a byproduct of verifiable domain security. It’s the final step in a chain of trust that begins with SPF, is strengthened by DKIM, and is enforced by DMARC.
If your BIMI logo isn't showing up in Gmail, stop debugging your SVG. Start parsing your DMARC reports. The root cause is almost certainly written in the authentication failures you've been monitoring. Getting to `p=quarantine` or `p=reject` is non-negotiable, and making that transition safely requires clear visibility into your mail streams. This is where DMARC analysis tools, including platforms like MailSleuth.AI, are indispensable for turning raw XML reports into an actionable remediation plan.
The takeaway
The core lesson is this: BIMI forces you to finish your DMARC deployment. A `p=none` policy is an unfinished project, a statement that you haven't yet done the hard work of identifying and authenticating all your sending sources. Mailbox providers know this, and they will not grant you the powerful visual endorsement of a logo until you commit to enforcement.
So, view the invisible logo not as a technical failure, but as a clear and useful signal. It’s telling you that your domain's security journey isn't over. Heed the signal, dig into your reports, and finish the job.
We dissect phishing campaigns and email infrastructure so you don't have to.


