justin․searls․co

How can I ensure e-mail delivery?

Prompt:

A customer of betterwithbecky.com has reported that they aren't receiving authentication e-mails, and therefore cannot access their account. The customer's e-mail address uses a custom domain but is hosted by Google. The app sends e-mail from app-mail.betterwithbecky.com via Amazon SES, which reports everything is configured correctly.

Attached are the complete DNS Zone records for betterwithbecky.com as well as the headers of a raw e-mail message I just received after attempting to log in via Gmail.

Here's what the computer said:
(Generated by OpenAI o3-mini-high)

Analysis of Email Deliverability Issues for betterwithbecky.com

Background and Symptoms

The domain betterwithbecky.com uses Amazon SES to send transactional emails (login verification messages) from support@betterwithbecky.com. Amazon SES is configured with a custom MAIL FROM subdomain (app-mail.betterwithbecky.com), and SPF, DKIM, and DMARC DNS records have been published. Amazon SES reports these emails as “delivered” (the recipient’s mail server accepted the message with a 250 OK), yet multiple users – especially those with Gmail addresses – do not receive the emails in their inbox or spam folder. This suggests that Gmail is likely accepting the messages but then filtering or discarding them internally. We need to examine possible causes, including authentication alignment, Gmail’s filtering criteria, and any configuration or content issues that could lead to silent dropping of emails.

Email Authentication Configuration (SPF, DKIM, DMARC)

Proper email authentication is the foundation of deliverability. In this case, betterwithbecky.com has implemented all three mechanisms:

  • SPF (Sender Policy Framework): The domain uses a custom MAIL FROM (app-mail.betterwithbecky.com), which requires its own SPF record. AWS’s instructions for a custom MAIL FROM domain specify publishing a TXT record on the subdomain with v=spf1 include:amazonses.com -allsupport.powerdmarc.comsupport.powerdmarc.com. According to the SES console, app-mail.betterwithbecky.com is configured with this SPF record (and marked “successful”). This authorizes Amazon SES’s mail servers to send on behalf of that subdomain. It’s also a best practice to have an SPF record on the root domain (betterwithbecky.com) that includes Amazon SES, especially if any emails use the root domain as the Return-Path or if other services send from the domain. (If not already present, add a TXT record on betterwithbecky.com: v=spf1 include:amazonses.com ~all to cover any mail originating from Amazon SES.)

  • DKIM (DomainKeys Identified Mail): DKIM is enabled for betterwithbecky.com via Easy DKIM in Amazon SES. Three DKIM CNAME records were added on the domain (as provided by SES) and the console shows DKIM status as “successful” (verified). This means outgoing messages should be signed with a DKIM signature using betterwithbecky.com’s domain. When DKIM is working correctly, Gmail will see a “DKIM=pass” in the message’s Authentication-Results header, proving the message wasn’t altered and is authorized by the domain’s owner. We should double-check that the emails are indeed DKIM-signed by betterwithbecky.com (for example, by sending a test email to a Gmail account and inspecting the headers). If DKIM were failing for some reason (e.g. DNS propagation issues or using a From address that doesn’t match the verified domain), then Gmail might treat the message as suspicious. However, given SES indicates everything is verified, DKIM is likely configured properly.

  • DMARC (Domain-based Message Authentication, Reporting & Conformance): A DMARC TXT record exists at _dmarc.betterwithbecky.com. The SES console shows a DMARC policy currently set to p=none (monitoring mode). In DNS, it’s probably something like v=DMARC1; p=none; rua=mailto:.... p=none means no enforcement – Gmail will not reject or quarantine emails purely based on DMARC failure, but it will send aggregate reports. In other words, DMARC is deployed in reporting mode to gather data. This implies that Gmail’s decision to not deliver the emails isn’t due to an explicit DMARC reject/quarantine policy, since none is in place. (If DMARC were set to p=reject and messages failed DMARC alignment, Gmail would outright refuse or drop them​ dmarcian.comdmarcian.com. That’s not the case here since DMARC is not enforcing.) That said, ensure DMARC alignment: at least one of SPF or DKIM must pass and align with the “From” domain for DMARC to pass. With the custom MAIL FROM setup, SPF will pass on the subdomain, and under default relaxed alignment, that counts as alignment because app-mail.betterwithbecky.com is a subdomain of the “From” domain​ dmarcian.comdmarcian.com. DKIM should also pass with the same parent domain. So, in theory, DMARC should show “pass” (via DKIM or SPF) for these emails. It’s worth verifying DMARC reports or Gmail’s headers to confirm alignment. In summary, the authentication setup appears correct and likely isn’t the root cause by itself – but we must verify there are no hidden misconfigurations (like an out-of-date DKIM key, or SPF not actually deployed on the root domain). Proper authentication helps deliverability but doesn’t guarantee inbox placement.

Custom MAIL FROM Subdomain Considerations

Using a custom MAIL FROM (app-mail.betterwithbecky.com) is generally a positive practice. It removes the “via amazonses.com” notice in email clients and aligns bounce messages with your domain. In this case, the MAIL FROM domain is set up with the required MX and SPF records and is in use. A few points to consider:

  • Behavior on MX failure: The SES setting “Use default MAIL FROM domain” on MX failure is enabled (per the console screenshot). This means if, for some reason, Gmail couldn’t find the feedback-smtp MX on the subdomain, SES would revert to its default amazonses.com Return-Path. Since SES marked the MAIL FROM as successful, Gmail is seeing the correct DNS. So this fallback probably didn’t occur. If it did, it could cause an SPF misalignment (as the Return-Path would end in amazonses.com), but again, SES says it’s configured properly.

  • Alignment: As noted, a subdomain Return-Path is fine under DMARC’s relaxed alignment. Both SPF and DKIM can still align (DKIM uses the root domain, SPF uses the subdomain which shares the organizational domain). There’s no inherent deliverability penalty for using a subdomain for the envelope sender; many organizations do this for bounce handling. So, the presence of the subdomain itself is likely not causing Gmail to drop the emails.

  • Recommendation: No immediate changes are needed to the MAIL FROM setup since it’s functioning. Just ensure to maintain those DNS records. (If you ever change SES sending region, update the MX record accordingly.) The MAIL FROM domain should also ideally have an MX (which it does) so bounces are handled by Amazon SES, and not used for anything else. This is already in place.

Gmail’s Filtering and Bulk Sender Criteria

Given that authentication is in place, the primary suspect is Gmail’s filtering algorithm and policies. Gmail is known for very strict filtering, especially for new senders or domains with little sending history. A message can be accepted by Gmail’s servers (hence SES logs “250 OK”) but then end up in the spam folder or be silently discarded if Gmail deems it highly suspicious. Here are several Gmail-specific factors to investigate:

  • Domain and IP Reputation: Gmail tracks the reputation of sending domains and IP addresses. Betterwithbecky.com is a relatively new or low-volume sender, so Gmail might not trust it yet. Likewise, Amazon SES uses a pool of shared IP addresses unless you have a dedicated IP. It’s possible the particular IP that sent your messages has a poor reputation or simply that any mail from a new domain is treated cautiously. Action: Use Google Postmaster Tools for betterwithbecky.com. This free Google service lets domain owners monitor Gmail deliverability, including domain reputation, spam rate, feedback loop, etc. By verifying the domain, you can see if Gmail has flagged your domain with a “Low” reputation or if there’s a high spam complaint rate. This can provide clues – for example, if the domain is on a bad reputation tier, Gmail might dump emails without showing them to users.

  • Gmail Bulk Sender Guidelines: Google has introduced new bulk sender requirements in 2024, even though your case is transactional emails (not newsletters). Gmail defines “bulk senders” as those sending >5,000 messages per day to Gmail​ generalfinishes.com. You might not hit that volume, but it’s still wise to follow their best practices, as Gmail states these should be “considered basic email hygiene” for all senders​ blog.googlegeneralfinishes.com. Key guidelines include:

    1. Authenticate Emails: This is already done (SPF, DKIM, DMARC) for betterwithbecky.com. Gmail wants strong authentication and alignment for all senders​ blog.google. Continue to ensure these pass for every message.

    2. One-Click Unsubscribe: Gmail now requires that bulk commercial emails include a one-click unsubscribe link or header​ blog.google. Transactional emails (like login codes or password resets) are generally exempt from this requirement​ generalfinishes.com, since they aren’t “bulk” marketing messages. However, if Gmail mistakenly categorizes your emails as bulk or promotional, the absence of an easy unsubscribe could hurt your chances of inbox placement. Action: For safety, consider including a List-Unsubscribe header in your emails. For example, a header like: List-Unsubscribe: <mailto:unsubscribe@betterwithbecky.com?subject=unsubscribe> This provides a way (not one-click, but at least a mailto) for users to “unsubscribe” or rather opt-out of future automated emails. In truth, users requested these login emails, so they wouldn’t normally unsubscribe, but adding the header won’t harm and might satisfy automated checks. Gmail specifically prefers the one-click method (RFC 8058) for bulk mail​ support.google.com, which would be a header: List-Unsubscribe-Post: List-Unsubscribe=One-Click along with an HTTPS link in List-Unsubscribe. Implementing that for login emails is unconventional (since these aren’t subscription emails), so this is a lower priority. It’s something to keep in mind if you ever send newsletters or if you suspect Gmail is treating your mails as marketing due to content format.

    3. Low Spam Complaint Rate: Gmail heavily penalizes senders with high user spam complaints. Although your volume is low, even a couple of users marking “Report spam” could impact you. Gmail’s new guidelines say keep spam rates under 0.1%, and bulk senders who exceed 0.3% risk domain blacklisting​ generalfinishes.comgeneralfinishes.com. For small senders, 0.3% might be less relevant (it’s equivalent to 3 complaints per 1000 emails), but the takeaway is any spam complaints can hurt. Action: Ensure your emails are only going to users who expect them. Because these are login emails, typically they are triggered by user action (so the user wants to receive it). If any user didn’t request it (e.g. someone else tried to log in with their email by mistake), they might hit “Report spam.” To mitigate this, make the purpose of the email extremely clear in the subject and body (e.g. “Your Login Code for Better with Becky”). Also, include a line like “If you did not request this email, you can ignore it.” This sets expectations and may reduce the chance of a confused recipient marking it as spam.

    4. Content and Formatting Compliance: Gmail’s filters also examine email content and technical details. Ensure your messages follow best practices:

      • Proper headers: Include standard headers like Date, From, To, and a unique Message-ID. SES normally handles these, but if you’re constructing raw emails, missing headers can raise flags.

      • MIME structure: If you send HTML emails, include a plain-text alternative part. A very image-heavy or link-only email can seem phishy. A login email should ideally be mostly text (e.g. a code or link) with a brief explanation.

      • Subject lines and content: Avoid overly generic or “spammy” sounding subjects. A clear, specific subject (e.g. “Better with Becky: Your login verification code”) will help. The body should mention the user’s name or email, the reason they’re receiving the email, and the code or login link. Since this is security-related, it’s actually good for it to be short and to the point – but make sure it doesn’t only consist of a link or code without context.

      • Links and URLs: If the email contains links (for example, a one-click login link), ensure the domain of those links is recognizable (ideally betterwithbecky.com or a subdomain of it). If you redirect through another domain or a link shortener, Gmail might be wary. Also, have an SSL certificate for any link domain so that URLs use https://.

      • Google-friendly headers: Gmail supports feedback via the Feedback-ID header for identifying categories of mail – this is used with Gmail’s FBL (feedback loop) if you have set up Postmaster Tools. Not critical here, but be aware.

  • Gmail’s Spam Filter Behavior: It’s possible Gmail is routing these emails to the spam folder but the users simply didn’t see them. However, the report is “not received even in spam,” suggesting Gmail might have accepted then silently dropped the messages. Gmail sometimes does this for what it perceives as outright malicious or spoofed emails (for example, forwarded emails failing DMARC, or known phishing patterns). Since your emails are authenticated, a silent drop is more unusual but not impossible. It may happen if, for instance, the sending IP or domain is on a internal Gmail blacklist. To check if messages are hitting spam or being dropped, you can do a couple of things:

    • Send test emails to a few Gmail accounts you control (or colleagues’ accounts). After sending, check All Mail on those Gmail accounts (in case the messages bypassed the inbox). If found, examine the Gmail headers (Show original → look at Authentication-Results and Received headers). This will show SPF, DKIM, DMARC results and spam score clues. Look for headers like X-Gm-Spam or X-Gm-Phishy which sometimes appear in Gmail’s “original message” view. They can hint at why Gmail flagged it.

    • If the emails truly never appear even in All Mail, it suggests Gmail might be dropping them at filtering time. This could indicate an extreme spam verdict. Monitoring Postmaster Tools (after sending a few emails) will tell you if Gmail is classifying them as spam (it shows percentages of mail marked spam).

  • Engagement and User Actions: Gmail also considers how users interact with your emails. Early on, encourage any legitimate recipient who does find the email (perhaps in spam) to mark it as “Not Spam” and add your address to contacts. This can train Gmail that these mails are wanted. Of course, this isn’t easily scalable advice, but if you have test users or a small userbase, it might help bootstrap your reputation.

In summary, Gmail’s filtering is likely the main culprit here. The domain is properly authenticated, but Gmail’s algorithms might still treat the emails as untrusted due to lack of sending history, no unsubscribe (if it thinks it’s bulk), or low user engagement signals. Following Gmail’s best practices and ramping up sending reputation is key.

Amazon SES Reputation and Suppression Checks

While Gmail filtering is suspect, we should also ensure there are no issues on the Amazon SES side that could indirectly affect deliverability:

  • SES Global Suppression List: Amazon SES maintains a global suppression list of recipient addresses that recently bounced for any SES customer​ docs.aws.amazon.comdocs.aws.amazon.com. If you send to an address on that list, SES will accept your request but won’t actually deliver the email (it suppresses it) and instead logs a “Suppressed” bounce. However, in such cases, the SES delivery status would not be “Successful” – it would show up as a bounce event with “Suppressed” as the reason. Since SES is indicating success, it’s unlikely the addresses are on SES’s suppression list. (You can confirm by checking your SES suppression list for any Gmail addresses via the SES console or CLI​ docs.aws.amazon.comdocs.aws.amazon.com, but again, SES shows delivered so this is probably fine.)

  • Bounce and Complaint History: Check your SES statistics for any bounce or complaint events around those Gmail addresses. A high bounce rate can hurt your SES account’s sending quota and might cause SES to throttle your emails. A high complaint rate (spam complaints reported back to SES via feedback loops) could also cause SES to put your account under review. In this case, since Gmail generally doesn’t provide FBL complaint data to SES for consumer Gmail addresses (they only give feedback via their Postmaster Tools), it’s likely SES shows zero complaints. Bounces would occur if, for example, the Gmail address doesn’t exist or was typed wrong. If there were such bounces, subsequent sends to those addresses might be suppressed by SES. So ensure the addresses are correct.

  • SES Account Reputation: Amazon SES has an internal reputation mechanism. If your emails had issues (like many bounces or spam trap hits), SES could have lowered your sending limits. However, SES wouldn’t mark deliveries as successful if it wasn’t actually sending. Since SES isn’t indicating problems, your account is probably in good standing. It’s still worthwhile to review the SES Reputation Dashboard (if available in your AWS console) or enable Virtual Deliverability Manager (VDM) features if you have the SES plan for that. The VDM can give proactive recommendations (none were flagged in the console screenshot, which is good).

  • Dedicated IP vs Shared Pool: By default, SES uses shared IPs. If by chance one of the shared IPs was on a Gmail throttling list or had poor reputation, it could affect you. Amazon tries to maintain good IP reputation, but issues can occur. If you continue facing problems and volume justifies it, you could consider obtaining a dedicated IP for SES. That gives you full control over the IP’s reputation (but also responsibility to warm it up gradually). This is a more advanced step if all else fails, since it has cost and complexity. In most cases, shared IPs of SES are fine, and the domain’s reputation is more important (especially with DKIM, Gmail will key off the domain reputation a lot).

  • AWS Documentation Guidance: AWS generally advises that once an email is accepted by the recipient’s server, any delivery to inbox vs spam is out of SES’s hands​ aws.amazon.com. They recommend reaching out to the receiving ISP for further insight​ aws.amazon.com – in practice, for Gmail, there’s no direct support line, so “reaching out” means using tools like Postmaster and abiding by Gmail’s guidelines (or using Google Workspace support if you were sending to a work domain). The onus is on the sender to adjust practices to meet what Gmail expects.

In summary, there’s no indication of an SES-side failure; the focus should be on satisfying Gmail’s criteria.

Additional Best Practices and DNS Records

Beyond the basics, here are some extra measures that can strengthen deliverability and credibility:

  • Enable DMARC Enforcement (Quarantine/Reject) when Ready: Currently DMARC is at p=none. Once you’re confident that all legitimate mail streams for betterwithbecky.com are authenticated and aligned, you can consider moving DMARC to p=quarantine (and eventually p=reject). This tells receivers like Gmail that any message failing SPF/DKIM alignment should be treated as suspicious. While this alone doesn’t force Gmail to deliver your good messages, having a strong DMARC policy is generally viewed positively – it shows you’re taking anti-spoofing seriously. It’s also required for certain perks like BIMI (Brand Indicators for Message Identification). Start with p=quarantine; pct=100 (which might send failing mail to spam) and later p=reject to outright drop failing mail. Monitor your DMARC aggregate reports to ensure no legitimate mail is being flagged before tightening the policy.

  • Implement BIMI (optional): BIMI allows your brand’s logo to be displayed in supporting email clients (including Gmail mobile apps) when your emails are authenticated. To use BIMI, you need a DMARC policy of quarantine or reject at 100% enforcement, and ideally a Verified Mark Certificate (VMC) for Gmail. While BIMI itself doesn’t directly improve deliverability, it can improve user trust (recipients see your logo and recognize the email as official). This might indirectly improve engagement. If interested, you’d publish a DNS TXT record at default._bimi.betterwithbecky.com with your logo URL and obtain a VMC. This is a nice-to-have once deliverability is stable.

  • Reverse DNS (PTR record): For emails, the sending IP’s PTR record should resolve to a domain. With SES shared IPs, Amazon manages reverse DNS (usually pointing to something like bouncem.msgr-out.amazon.com or a generic Amazonses domain). You cannot change PTR for shared IPs, but this is generally not an issue – Gmail and others are used to Amazon’s PTR. If you had a dedicated IP, you’d set up a custom PTR matching your domain. Since you’re on SES, you’re fine here. Just be aware that if you ever get a dedicated IP, you should ask AWS Support to set the reverse DNS to mail.betterwithbecky.com (for example) for consistency.

  • Have a Valid From Address Mailbox: Make sure the support@betterwithbecky.com address actually exists or forwards to a monitored inbox. If a user hits “Reply” on that email (or if there are delivery errors), someone should see it. It’s not directly related to spam filtering, but some receivers do check if the domain has an MX record. (Betterwithbecky.com should have an MX record if you use it for any email; if not, at least set one or forward those emails to another address.) It appears betterwithbecky.com might use a third-party mail host or forwarder for its own mail – ensure SPF/DKIM with that if so. But if you’re only sending via SES and not receiving, this is minor.

  • Monitor Blacklists: Although Gmail primarily uses its internal filtering, it doesn’t hurt to verify that neither your domain nor the SES IPs are on major public blacklists. Services like MXToolbox or DNSBL checks can be used. Given the low volume and nature of your emails, it’s unlikely, but a quick check can rule this out. (If an IP was blacklisted due to another sender’s behavior, Amazon would likely move you to a different IP pool, but not guaranteed immediately.)

  • Use AWS Configuration Set (if needed): Amazon SES allows adding a custom header (X-SES-Configuration-Set) and even enabling engagement tracking via Configuration Sets. If you enable open/click tracking, that rewrites links and could slightly affect deliverability (users clicking links signals engagement, but link rewriting could also trigger filters if not done carefully). This is advanced, and probably not necessary here. However, one feature to consider in SES is setting up SNS notifications for bounces/complaints. This won’t fix Gmail, but it will alert you if any other ISP is bouncing or if any Gmail user (via feedback loop of some corporate Gmail or other) complained.

Below is a summary of the key DNS records and their status/recommendations:

Record Type Name Current/Recommended Value Purpose & Notes
SPF (TXT) betterwithbecky.com v=spf1 include:amazonses.com ~all Authorize Amazon SES to send emails for the root domain. (Add this if not already present. The ~all is a soft fail; you could use -all for strict enforcement once confident.)
SPF (TXT) app-mail.betterwithbecky.com v=spf1 include:amazonses.com ~all Authorize SES for the MAIL FROM subdomain (already configured ✅). Ensures SPF passes for the Return-Path domain​ support.powerdmarc.com.
DKIM (CNAME) *.dkim.betterwithbecky.com (3 records) Points to Amazon SES DKIM keys (e.g. *.dkim.amazonses.com) Verify outbound emails are signed. These were provided by AWS (already configured ✅). Each CNAME’s name is a unique selector (e.g. xxxx._domainkey.betterwithbecky.com) and the value is the AWS domain.
MX app-mail.betterwithbecky.com 10 feedback-smtp.us-east-1.amazonses.com Directs bounces and feedback for the MAIL FROM domain back to Amazon SES. (Already in place ✅. Do not remove; needed for bounce handling.)
DMARC (TXT) _dmarc.betterwithbecky.com v=DMARC1; p=none; rua=mailto:<your-report@address>; ruf=mailto:<your-report@address>; fo=1 DMARC policy and reporting. Currently p=none (monitoring). Keep p=none while troubleshooting; later consider p=quarantinereject for stricter enforcement. Add RUA/RUF addresses if not present to receive aggregate and forensic reports (helps to see if any messages are failing DMARC). fo=1 is optional (it requests failure reports on SPF/DKIM fail).
BIMI (TXT) default._bimi.betterwithbecky.com v=BIMI1; l=https://<your-domain>…/logo.svg; a=https://<your-domain>…/certificate.pem Optional: Publish brand logo for BIMI. The l= URL should point to an SVG of your logo. The a= (authority) tag is optional unless you have a Verified Mark Certificate. Only implement BIMI after DMARC is at enforcement (quarantine/reject).

Table: DNS records for betterwithbecky.com to review. Entries marked as “already configured” are based on current setup; others are recommendations to add or adjust.

Prioritized Recommendations and Action Plan

Finally, here is a prioritized list of issues to investigate and fixes to implement, in order of urgency:

  1. Verify Authentication on Actual Emails: Immediately, send a test email (or use an existing message) to a Gmail account and inspect the email headers. Confirm that SPF shows “pass” (for app-mail.betterwithbecky.com), DKIM shows “pass” (for betterwithbecky.com), and DMARC shows “pass” or at least “none” (policy) with aligned identifiers. If anything shows “fail” or misaligned, fix that first (e.g. update DNS records or SES configuration). Authentication must be flawless​ blog.google, as Gmail’s first requirement for bulk senders is to strongly authenticate emails.

  2. Gather Clues from Gmail (Postmaster Tools & Headers): Set up Google Postmaster Tools for betterwithbecky.com and monitor it over the coming days/weeks. This will reveal if Gmail is classifying your mail as spam, and provide your domain’s reputation grade. Also, check the spam feedback if available. Concurrently, from the Gmail side, look at any X-Google-Smtp-Source or X-Gm-Spam headers in the test email’s source to see if a spam score is indicated. If Postmaster Tools shows a poor reputation or high spam rate, focus on improving engagement and reducing anything that could cause users to flag your mail.

  3. Improve Email Content and Format: Adjust the content of the login emails to appear as legitimate and user-friendly as possible:

    • Use a recognizable From Name (e.g. “Better with Becky Support” support@betterwithbecky.com) so recipients immediately know who it’s from.

    • Make the subject line and opening line of the email clearly reference the user’s action (“Here is your login code” or “Your password reset link”, etc.). This context signals to both the user and Gmail that the email is expected (transactional).

    • Include a brief explanation or greeting in the body (e.g. “Hello [Name], you requested a login code at [Time]. Use the code below to log in.…”). Personalization (like the user’s name) can help indicate it’s not mass spam.

    • If the email contains just a code, present it in a user-friendly way (maybe bold text) and avoid making it look like a random chunk of text with no explanation.

    • Provide a way for users to get help if they didn’t request the email (e.g. “If you did not initiate this request, please ignore this email or contact our support.”). This can reduce the chance they report it as abuse.

    • Ensure the email is not image-only (most likely it isn’t) and doesn’t have broken HTML. A well-structured text or HTML email with minimal styling is best for these purposes.

    • Double-check that the sending domain (betterwithbecky.com) is also the one in any URLs in the email, to avoid cross-domain trust issues.

  4. Implement List-Unsubscribe Header (if feasible): Even though these are transactional messages, adding a List-Unsubscribe header (mailto link or a one-click URL) can only help and not hurt compliance. Gmail’s guidelines mention one-click unsubscribe for bulk senders​ blog.google. While you are likely under the threshold and sending transactional content, we highly recommend adding the header to all automated emails as a precaution. This might slightly improve Gmail’s treatment of your mails, or at least future-proofs you if you start sending any announcements. (Amazon SES allows adding custom headers easily – if you use AWS SES API/SMTP you can add X-SES-CONFIGURATION-SET for headers, or simply include the header in your email content before sending.)

  5. Increase Domain Reputation and Engagement: Build a positive reputation with Gmail:

    • Gradually increase sending volume if you plan to send more emails in the future; don’t suddenly jump to high volumes.

    • Encourage users to mark the emails as important/not-spam. For example, on your website or after a user signs up, you could have a message like “If you use Gmail, please check your Spam or Promotions folder and mark our email as Not Spam to ensure you receive future messages.”

    • Ensure that you only send to valid, active email addresses. Remove or never send to any address that previously bounced. This keeps your bounce rate low.

    • Keep spam complaint rates at 0% if possible. So far, since users are specifically requesting these emails, you should normally have zero complaints. If you ever send other types of email (newsletters, etc.), be extremely careful with your mailing list quality and permission.

  6. Enable DMARC Enforcement and BIMI (future step): After you’ve addressed the above and seen some improvement, consider moving DMARC to an enforcement policy. Start with p=quarantine for a few weeks – this will tell Gmail and others to put any unauthenticated mail claiming to be from betterwithbecky.com into spam. If all your legitimate mail is authenticated, this mainly affects only spoofed emails (which is good). Eventually, move to p=reject so spoofed emails are outright dropped. This step isn’t directly to fix the Gmail issue (since Gmail was already dropping your mail despite DMARC none), but it’s about long-term domain security and enabling things like BIMI. Once on p=quarantine/reject, you can add a BIMI record with your logo. That can make your emails stand out in the inbox (if the user’s email client shows the brand logo), which can improve trust and thus engagement (users are more likely to open and click emails that look legit). Higher engagement in turn improves reputation – it’s all interrelated.

  7. Check for Any Other Environmental Issues: If problems persist, widen the scope:

    • See if only Gmail is affected. Are emails to Yahoo, Outlook.com, or other domains also not delivered or going to spam? If it’s just Gmail, that reinforces it’s Gmail-specific filtering. If others also have issues, re-check authentication and consider content might be triggering generic spam filters.

    • Use third-party testing tools (like MailTester or GlockApps) which can send your email to a variety of mailbox simulators and give a report. They sometimes flag common issues (e.g., “your email’s HTML is malformed” or “the server IP is on XYZ blocklist”).

    • Ensure your sending software/code is properly handling the SMTP transaction. For example, if you send via SMTP to SES, after the DATA command, are you properly concluding with \r\n.\r\n and checking the server response? (If SES gave a 250 OK, likely yes.) Misconfigured TLS or something isn’t an issue since SES handles that out to Gmail.

  8. Consider Involving AWS or Google Support: If after making improvements you still see Gmail not delivering emails at all, you have a few last-resort options:

    • AWS Support: Reach out to AWS support and provide details of the issue. They can sometimes provide guidance or check if your emails are hitting any known Gmail spam filters. They might also offer to move your traffic to a different IP range if they suspect an IP reputation issue. Since SES is showing deliveries, AWS’s stance might be that the email is successfully handed to Gmail (which is true), but a supportive engineer might still give tips.

    • Google Support/Mitigation: For Gmail, at your sending volume, you likely won’t have a direct support channel. However, Google’s Postmaster Tools has a section on remediation if you have low reputation. Also, Gmail’s bulk sender FAQ mentions that if you meet all requirements and still have issues, you can fill out their support form for senders​ generalfinishes.comgeneralfinishes.com (this is usually for larger senders though). Since you’re already doing most of this, you may never need to escalate to Google – the solution will likely come from adjustments on your end and patience as your domain builds a positive reputation.

By following the steps above, you address both technical authentication factors and the more nuanced sender reputation criteria. The highest priorities are confirming the emails pass all authentication checks and aligning with Gmail’s best practices for content and headers. Once those are in order, Gmail should have less reason to reject or silently drop the emails. Keep monitoring the situation – deliverability can improve gradually as Gmail’s algorithms notice consistent, authenticated traffic and positive user interactions.

With these changes and continued monitoring, the emails from betterwithbecky.com should start landing in users’ inboxes reliably. Remember that deliverability improvement can take some time; applying these best practices consistently will yield results as the domain establishes its sending reputation.​ aws.amazon.comblog.google


Got a taste for hot, fresh takes?

Then you're in luck, because you can subscribe to this site via RSS or Mastodon! And if that ain't enough, then sign up for my newsletter and I'll send you a usually-pretty-good essay once a month. I also have a solo podcast, because of course I do.