<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
<channel>
<title>Coder Legion - Recent posts tagged email</title>
<link>https://coderlegion.com/tag/email</link>
<description>Powered by Question2Answer</description>
<item>
<title>Lock Your Inbox: Email 2FA, Passkeys and App Passwords</title>
<link>https://coderlegion.com/32844/lock-your-inbox-email-2fa-passkeys-and-app-passwords</link>
<description>&lt;p&gt;&lt;em&gt;This article was originally published on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog/email-2fa-passkeys-app-passwords&quot;&gt;[@fuck.it] blog&lt;/a&gt; and is republished here by the author.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;There is a quiet assumption sitting behind almost every account you own: that if you ever lose your way in, your email will let you back. Click &quot;forgot password,&quot; wait a moment, and something arrives in your inbox that puts you back in charge.&lt;/p&gt;
&lt;p&gt;It is a reasonable way to build things. It also means your mailbox is not really one account among many. It is the drawer where the spare keys to the others are kept, which makes it the one account worth being fussy about.&lt;/p&gt;
&lt;p&gt;So here is the fussy version. What the options actually do, which of them hold up against a convincing fake login page, the one feature that quietly undoes the rest and how to switch all of it on.&lt;/p&gt;
&lt;h3 id=&quot;tl-dr&quot;&gt;TL;DR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Use a passkey or a hardware security key if your provider offers one.&lt;/strong&gt; They are phishing-resistant in a way that SMS codes and authenticator codes are not.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use an authenticator app if it doesn't.&lt;/strong&gt; Enormous improvement over nothing. Still phishable.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SMS codes are the weakest real option.&lt;/strong&gt; NIST's current guidelines classify exactly one authenticator as restricted, and this is it.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save your recovery codes somewhere that is not the inbox they unlock.&lt;/strong&gt; Locking yourself out is a very real way to lose an email account.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;App passwords bypass your second factor completely.&lt;/strong&gt; That is their entire job. Create one only when a client demands it, keep it to one per device and revoke it when you are done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Your recovery address and recovery phone are keys too.&lt;/strong&gt; A locked front door and an open window is not security.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;why-the-inbox-is-the-wrong-thing-to-secure-casually&quot;&gt;Why the Inbox Is the Wrong Thing to Secure Casually&lt;/h3&gt;
&lt;p&gt;Almost every account you own has a button that says it will email you a way back in. That is sensible design. It also means that for a great many of your accounts, the real lock on the door is your mailbox, however strong the password on each individual one happens to be.&lt;/p&gt;
&lt;p&gt;Attackers worked this out long before users did. Taking over an inbox is not usually the goal. It is the tool. Once somebody is reading your mail they can trigger resets, collect the codes, approve the changes and delete the warning messages on the way out, without ever having to attack the accounts they actually want.&lt;/p&gt;
&lt;p&gt;So if you are going to be fussy about exactly one account, make it this one. Everything in this article is worth doing on your email before you do it anywhere else.&lt;/p&gt;
&lt;h3 id=&quot;what-people-mean-when-they-talk-about-2fa&quot;&gt;What People Mean When They Talk About 2FA&lt;/h3&gt;
&lt;p&gt;There are four of them in common use, and they are not equivalent. The gap between the best and the worst is wider than most people assume.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A code by SMS.&lt;/strong&gt; The provider texts you six digits. Better than nothing, and worse than every other option here. The weakness is not the code, it is the phone number. Numbers get moved to a new SIM by somebody who has talked a carrier employee into it, and your codes move with them. The problem is real enough that the FCC adopted rules in November 2023 requiring carriers to authenticate customers properly before a SIM change or a port-out, and to offer you a free account lock against both. NIST's 2025 authentication guidelines go further: use of the phone network for out-of-band verification is classified as &lt;em&gt;restricted&lt;/em&gt;, and at publication it was the only restricted authenticator in the document. Services may still offer it, but they have to provide something better alongside it and tell you about the risk.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A code from an authenticator app.&lt;/strong&gt; A six-digit number that changes every thirty seconds, generated on your device from a shared secret. No phone number, no carrier, no text message to intercept. This is a very large upgrade, and for most people it is the realistic default.&lt;/p&gt;
&lt;p&gt;It has one specific weakness worth understanding, because it is the weakness that catches people who thought they were safe. Typing a code into a web page does not tie that code to the real site. NIST puts it plainly: manual entry does not bind the output to the session, so an impostor verifier could relay it. In practice, a fake login page that looks right can collect your password and your code, pass both to the real provider inside the thirty seconds they are valid, and let itself in. Ready-made tooling for exactly this has existed for years. An authenticator app defeats password reuse, credential stuffing and opportunistic attacks. It does not defeat somebody who has got you onto a convincing fake page.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A push notification you approve.&lt;/strong&gt; Your phone asks &quot;was this you?&quot; and you tap yes. Convenient, and vulnerable to the oldest trick in the catalog: send the prompt over and over at eleven at night until the human taps approve to make it stop. The better implementations use &lt;em&gt;number matching&lt;/em&gt;, where the login screen shows you two digits that you have to type into the app. That kills the half-asleep approval, and it is worth turning on wherever you are offered it. Against a live fake-page attack it is in the same boat as an authenticator app.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A passkey or a hardware security key.&lt;/strong&gt; This one differs in kind rather than in degree, so it gets its own section.&lt;/p&gt;
&lt;h3 id=&quot;what-a-passkey-actually-is&quot;&gt;What a Passkey Actually Is&lt;/h3&gt;
&lt;p&gt;A passkey is a pair of cryptographic keys. The private half stays on your device or in an encrypted credential manager and never travels to the site you are signing into. The site keeps only the public half, which is useless to a thief. When you sign in, your device proves it holds the private key without ever revealing it.&lt;/p&gt;
&lt;p&gt;The part that matters for phishing is less obvious and more important. When a passkey is created, it is bound to the exact domain that created it. A passkey you made for your bank will not answer a request from your-bank-secure-login.example, no matter how perfect the copy of the page is, because your browser will not even offer it. NIST calls this verifier name binding, and names WebAuthn, the standard passkeys are built on, as the example of how to do it.&lt;/p&gt;
&lt;p&gt;That is the whole argument, so it is worth reading twice. With an authenticator app, your safety depends on you noticing the fake site. With a passkey, the fake site gets nothing even when you do not notice. The decision has moved from your judgment at eight in the morning to a check your browser performs every single time without ever getting tired or distracted.&lt;/p&gt;
&lt;p&gt;Two honest drawbacks, both smaller than they were a year ago and neither of them gone.&lt;/p&gt;
&lt;p&gt;First, a synced passkey puts part of your security in the hands of a credential manager and its account recovery. Moving them used to be close to impossible. That has improved: Apple's iOS 26, iPadOS 26 and macOS 26 releases and recent Android versions support transferring credentials directly between credential manager apps on the same device, and Apple Passwords, 1Password, Bitwarden, Dashlane and others have adopted it. The underlying work is only half finished, though. The exchange &lt;em&gt;format&lt;/em&gt; reached proposed-standard status in 2025, while the &lt;em&gt;protocol&lt;/em&gt; for actually moving credentials between providers is still a working draft that explicitly says it is not a basis for implementations. Same-device switching between participating credential managers works today on both Apple and Android. What does not exist yet is a finished universal protocol for moving credentials freely between providers across different devices and platforms.&lt;/p&gt;
&lt;p&gt;Second, support is uneven. Microsoft began making new consumer accounts passwordless by default in 2025 and most large providers accept passkeys somewhere, but plenty of smaller services still do not offer them at all. A physical security key sidesteps the ecosystem question completely, at the cost of being an object you can lose. Credentials cannot be exported from a certified hardware key by design, so there is no migration path and the answer is to buy two and register both.&lt;/p&gt;
&lt;p&gt;Where a passkey is on offer for your email, take it.&lt;/p&gt;
&lt;h3 id=&quot;app-passwords-the-back-door-you-opened-yourself&quot;&gt;App Passwords: The Back Door You Opened Yourself&lt;/h3&gt;
&lt;p&gt;Now the part that is mostly missing from articles about securing email, and that can undo everything above.&lt;/p&gt;
&lt;p&gt;Turn on two-factor authentication, then try to set up your mailbox in an older desktop mail client or on an office printer. It fails, and the reason is structural. When an older mail client connects over IMAP or SMTP using traditional password authentication, it hands over a username and a password, and there is no interactive moment in that exchange where the server can stop and ask you for a code from your phone.&lt;/p&gt;
&lt;p&gt;The modern fix is to stop using a password at all. RFC 7628 defines OAuth-based authentication over these protocols for exactly this situation: the client sends you through a browser login where two-factor happens normally, then receives a token it uses from then on. This is what &quot;modern authentication&quot; means in Gmail and Outlook, and it is why those accounts work properly in current mail apps.&lt;/p&gt;
&lt;p&gt;The older fix, still available at many providers, is an app password. Your provider generates a long random string that works in place of your real password and &lt;strong&gt;skips your second factor entirely.&lt;/strong&gt; Google's is sixteen characters, shown to you exactly once. You can only create one if two-step verification is already switched on, which is the quiet irony of the feature: it exists only for accounts that took security seriously, and what it produces is a credential that ignores the protection they switched on.&lt;/p&gt;
&lt;p&gt;Google itself says app passwords are not recommended and are unnecessary in most cases. That has not stopped them being widely used, and it has not stopped them being targeted.&lt;/p&gt;
&lt;p&gt;In June 2025 the Citizen Lab published a report on a campaign that did precisely that. Over at least ten email exchanges, an attacker posing as a US State Department official cultivated a relationship with Keir Giles, a Chatham House specialist on Russian information operations. Four apparently fabricated state.gov addresses were copied into the thread for credibility, which worked partly because the real State Department mail server appears to accept messages to addresses that do not exist without bouncing them. Eventually a professionally formatted PDF arrived with instructions for joining a government platform. The instructions walked him through creating an app-specific password on his Google account, labeling it with a meaningless string and sending it back.&lt;/p&gt;
&lt;p&gt;The PDF contained no malware. There was no exploit anywhere in the operation. The entire attack was a set of polite instructions that persuaded a careful, security-aware target to generate a credential that bypassed his own two-factor authentication, and then to hand it over. Google's threat intelligence group attributed the operator to UNC6293, linked with low confidence to APT29.&lt;/p&gt;
&lt;p&gt;The rules that follow are short:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Create an app password only when a device truly cannot do anything else, and look for an OAuth option first.&lt;/li&gt;
&lt;li&gt;One per device, named for that device, so you can revoke precisely.&lt;/li&gt;
&lt;li&gt;Revoke it the moment you stop using that client, sell the phone or replace the printer.&lt;/li&gt;
&lt;li&gt;Never send one to anybody. There is no legitimate situation in which a person, a company or a support agent needs your app password. None.&lt;/li&gt;
&lt;li&gt;Google revokes its app passwords when you change your account password. Do not assume every provider does. After any scare, change the password and then go and audit the app password list separately.&lt;/li&gt;
&lt;li&gt;Audit that list occasionally anyway. Old app passwords have a habit of surviving long after the device they were created for is gone.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;recovery-codes-are-the-part-everyone-skips&quot;&gt;Recovery Codes Are the Part Everyone Skips&lt;/h3&gt;
&lt;p&gt;When you switch on two-factor authentication you are handed a list of one-time codes and a button to download them. Do it. NIST calls these look-up secrets and treats them as a legitimate authenticator in their own right, with the caveat that they are not phishing-resistant either.&lt;/p&gt;
&lt;p&gt;The reason to care is not heroic. A very ordinary way to lose access to an email account is a phone that went into a canal carrying the only copy of the authenticator secret. Recovery codes are the answer to that, and they are the step people reliably skip, because the account works perfectly well without them right up until it does not.&lt;/p&gt;
&lt;p&gt;Where to put them: printed on paper somewhere a burglar would not think to look is perfectly reasonable. A password manager is good too, with one trap worth thinking through. If your password manager's own account recovery runs through the email address these codes protect, and the codes exist only inside that password manager, you have built a circle with no way in. Keep at least one copy outside the loop.&lt;/p&gt;
&lt;p&gt;And do not store them as a draft in the inbox they unlock, which is a thing people do.&lt;/p&gt;
&lt;h3 id=&quot;the-windows-you-left-open&quot;&gt;The Windows You Left Open&lt;/h3&gt;
&lt;p&gt;Two more ways into your mailbox that are not the front door.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your recovery address and recovery phone.&lt;/strong&gt; These exist to let you back in, which means they can let somebody else in. An abandoned address at a provider you no longer check, or worse, one that has lapsed and could be registered by anybody who notices, is a live key to your current mailbox. Go and look at what is actually listed.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Forwarding rules and filters.&lt;/strong&gt; This is a standard move after a mailbox compromise and one that is easy to overlook. A rule that quietly copies everything to an outside address, or files all mail from your bank into a folder you never open, survives the password change, the new second factor and the warm feeling of having dealt with it. If you ever suspect something happened, read your rules before you relax.&lt;/p&gt;
&lt;h3 id=&quot;turning-it-on&quot;&gt;Turning It On&lt;/h3&gt;
&lt;p&gt;The wording differs between providers, but the shape of it almost never does.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sign in and open your account settings, then look for a section called Security, Sign-in or Password.&lt;/li&gt;
&lt;li&gt;Switch on two-factor authentication, two-step verification or multi-factor authentication. Same thing, three names.&lt;/li&gt;
&lt;li&gt;Scan the QR code with any authenticator app. Anything that does standard TOTP works, so you are not tied to a particular vendor.&lt;/li&gt;
&lt;li&gt;Type the six-digit code once to confirm. If you skip this step, it is not actually on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save the recovery codes.&lt;/strong&gt; This is the step that matters most in a year's time.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;One thing worth understanding while you are in there. A mail client using traditional password authentication over IMAP, POP3 or SMTP has no interactive moment where the server can stop and ask you for a code. Providers deal with that in different ways: some disable password authentication once a second factor is enabled, some issue separate application passwords and modern services increasingly use OAuth so that the second factor can happen during a browser login instead.&lt;/p&gt;
&lt;p&gt;The practical conclusion matters more than the mechanism, so find out what credential your mail apps are actually using. If your normal mailbox password still works over IMAP, POP3 or SMTP after you switch on two-factor authentication, then that password is still a way into the mailbox with no second factor standing in front of it. Make it long, make it unique to this account and never reuse it anywhere else.&lt;/p&gt;
&lt;p&gt;Worth checking separately: a few services keep more than one login. The account you use for billing and the mailbox itself can be two different doors with two different settings, and switching one on does not switch on the other.&lt;/p&gt;
&lt;h3 id=&quot;the-twenty-minute-version&quot;&gt;The Twenty-Minute Version&lt;/h3&gt;
&lt;p&gt;In order, because the order matters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Email first.&lt;/strong&gt; It is the recovery channel for a disturbing number of your other accounts, so securing them while the mailbox is open is largely decorative.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Turn on the strongest second factor on offer.&lt;/strong&gt; Passkey or security key, then authenticator app, then SMS. If SMS is the only option, take it and ask your provider why.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Save the recovery codes.&lt;/strong&gt; Somewhere physical, outside the loop described above.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Review your app passwords and connected apps.&lt;/strong&gt; Revoke anything you do not recognize or no longer use.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Check your forwarding rules and filters.&lt;/strong&gt; Takes a minute, almost never done.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Fix your recovery address and phone.&lt;/strong&gt; Make sure both are things you still control.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Then do steps two and three for your password manager and your phone's cloud account.&lt;/strong&gt; Those are the other two sets of spare keys.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;That is the lot. One short session on the sofa, once, for the account that holds the spare keys to so many of the others.&lt;/p&gt;
&lt;h3 id=&quot;one-number-before-you-go&quot;&gt;One Number Before You Go&lt;/h3&gt;
&lt;p&gt;We run a small paid email service, which puts us in a position to look something up that most people writing about this subject cannot: how many of our own customers actually switch this on.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fewer than one in five.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Sit with that for a second. Our customers are, by definition, people who went looking for a private email service, found an invite-only one and paid money for it. If adoption is that low among people who are actively paying for privacy, it says something uncomfortable about how badly an optional security feature loses to inertia, no matter how motivated the person is.&lt;/p&gt;
&lt;p&gt;Which is the honest note to end on. An optional second factor cannot protect you if you never switch it on.&lt;/p&gt;
&lt;p&gt;It takes about four minutes. Go on.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Sources &amp;amp; further reading:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://csrc.nist.gov/pubs/sp/800/63/b/4/final&quot;&gt;NIST SP 800-63B-4: Authentication and Authenticator Management&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://pages.nist.gov/800-63-4/sp800-63b/authenticators/&quot;&gt;NIST: Authenticators and phishing resistance&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://pages.nist.gov/800-63-4/sp800-63b/syncable&quot;&gt;NIST: Syncable authenticators&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.w3.org/TR/webauthn/&quot;&gt;W3C Web Authentication (WebAuthn)&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rfc-editor.org/rfc/rfc7628&quot;&gt;RFC 7628: SASL Mechanisms for OAuth&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://citizenlab.ca/research/russian-government-linked-social-engineering-targets-app-specific-passwords/&quot;&gt;Citizen Lab: Same Sea, New Phish&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/accounts/answer/185833&quot;&gt;Google: Sign in with app passwords&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.govinfo.gov/content/pkg/FR-2023-12-08/html/2023-26338.htm&quot;&gt;FCC: SIM swap and port-out fraud rules&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://documentation.open-xchange.com/appsuite/security/application_passwords.html&quot;&gt;Open-Xchange: Application passwords&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclosure: We run &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it&quot;&gt;[@fuck.it]&lt;/a&gt;, a privacy-focused, subscription-funded email service by Paradise Circus, Inc. — no ads, no tracking. Facts and product details are accurate as of October 28, 2026; check the original for the latest version.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32844/lock-your-inbox-email-2fa-passkeys-and-app-passwords</guid>
<pubDate>Wed, 28 Oct 2026 13:51:22 +0000</pubDate>
</item>
<item>
<title>I automated the hardest parts of Amazon SES, so you can send from your own AWS account in two minute</title>
<link>https://coderlegion.com/32773/automated-the-hardest-parts-amazon-ses-so-you-can-send-from-your-own-aws-account-two-minute</link>
<description>&lt;p&gt;Amazon SES is the most cost-effective way to send transactional email. But a production setup&lt;br&gt;
takes real work: IAM, the sandbox, bounce and complaint handling, logs, and watching your&lt;br&gt;
reputation. I built SendFleet to do that work inside your own AWS account.&lt;/p&gt;
&lt;h4 id=&quot;what-it-does&quot;&gt;What it does&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;One-click connection.&lt;/strong&gt; A CloudFormation template creates a scoped IAM role. Paste its ARN and&lt;br&gt;
you are connected. No AWS keys are ever shared.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finds your sending region.&lt;/strong&gt; Production access is per region, so SendFleet checks them all and&lt;br&gt;
picks the one that can send. If none can, it requests production access for you.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Tracking and webhooks.&lt;/strong&gt; It sets up the configuration set and SNS topic in your account, keeps&lt;br&gt;
them healthy, and turns events into an email log and signed webhooks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Reputation protection.&lt;/strong&gt; It pauses sending before your bounce or complaint rate reaches the&lt;br&gt;
levels where AWS starts reviewing accounts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cost controls.&lt;/strong&gt; You choose which SES events your account publishes, and set a monthly cap.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparency.&lt;/strong&gt; Every change SendFleet makes in your account is listed in the dashboard.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;how-it-is-built&quot;&gt;How it is built&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;A Rust API for sending (&lt;code&gt;POST /v1/send&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;A Django dashboard.&lt;/li&gt;
&lt;li&gt;Python Lambdas in a separate AWS account: a relay that assumes your role to send, a control&lt;br&gt;
plane for setup and self-healing, and an event worker.&lt;/li&gt;
&lt;li&gt;Postgres on Neon. Message bodies never reach the database.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 id=&quot;pricing&quot;&gt;Pricing&lt;/h4&gt;
&lt;p&gt;Free for 3,000 emails a month. $5 a month with 20,000 emails included, then $0.10 per 1,000. You&lt;br&gt;
pay AWS for SES directly.&lt;/p&gt;
&lt;p&gt;Try it at &lt;a rel=&quot;nofollow&quot; href=&quot;https://sendfleet.net&quot;&gt;https://sendfleet.net&lt;/a&gt;. I'm keen to hear what would make you trust a tool like this with&lt;br&gt;
your AWS account.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/32773/automated-the-hardest-parts-amazon-ses-so-you-can-send-from-your-own-aws-account-two-minute</guid>
<pubDate>Wed, 28 Oct 2026 06:00:57 +0000</pubDate>
</item>
<item>
<title>Is It Safe to Click Unsubscribe? Depends Who Sent It.</title>
<link>https://coderlegion.com/31999/is-it-safe-to-click-unsubscribe-depends-who-sent-it</link>
<description>&lt;p&gt;&lt;em&gt;This article was originally published on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog/is-it-safe-to-click-unsubscribe&quot;&gt;[@fuck.it] blog&lt;/a&gt; and is republished here by the author.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Somebody told you, years ago, never to click unsubscribe. It confirms your address is real. It tells the spammers you're alive. You've been dutifully deleting newsletters one at a time ever since, like a person bailing out a boat with a teaspoon.&lt;/p&gt;
&lt;p&gt;That advice wasn't wrong. It was written for an inbox that doesn't exist anymore.&lt;/p&gt;
&lt;p&gt;Here's what's actually true in 2026, and a rule simple enough to use at eight in the morning without thinking about it.&lt;/p&gt;
&lt;h3 id=&quot;tl-dr-1&quot;&gt;TL;DR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;In your inbox, from a sender you recognize and expected to hear from:&lt;/strong&gt; unsubscribe. That's what the button is for and it stops the mail at the source.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use your mail app's own Unsubscribe button when it offers one.&lt;/strong&gt; When the sender supports true one-click unsubscribe, your provider can process the request without you visiting the sender's page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;In your spam folder, or from a sender you've never heard of:&lt;/strong&gt; don't click anything. Report it and move on.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Don't test whether a stranger's unsubscribe link is honest.&lt;/strong&gt; Report the message instead.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The old warning still applies to actual spam.&lt;/strong&gt; It just stopped applying to the legitimate marketing mail that makes up most of your clutter.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;why-that-advice-was-right-in-2004&quot;&gt;Why That Advice Was Right in 2004&lt;/h3&gt;
&lt;p&gt;In 2004 your inbox was a sewer. Filtering was primitive, spam was most of what arrived, and the stuff in front of you was genuinely dangerous.&lt;/p&gt;
&lt;p&gt;In that world, the advice made sense. Clicking an unsubscribe link in a spam message can do three things for the sender, none of them good for you. It confirms somebody reads this address. It confirms somebody reads it &lt;em&gt;attentively&lt;/em&gt; enough to click. And it hands over a browser session to a page of his choosing.&lt;/p&gt;
&lt;p&gt;A confirmed, attentive address can be more useful to a spam operation than an unconfirmed one. At minimum, you've told them somebody is home. That mechanism hasn't changed.&lt;/p&gt;
&lt;p&gt;What changed is everything in front of it.&lt;/p&gt;
&lt;h3 id=&quot;what-changed&quot;&gt;What Changed&lt;/h3&gt;
&lt;p&gt;Three things, and together they flipped the answer for most mail.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Filtering got good.&lt;/strong&gt; The crude, dangerous spam is much less likely to reach your inbox now. A lot of it lands in spam or never arrives at all. Much of the everyday clutter left in front of you is legitimate commercial mail from real companies, including plenty you did, at some point, give your address to. Possibly while buying a lamp in 2019.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unsubscribing became a legal requirement.&lt;/strong&gt; In the US, the CAN-SPAM Act requires commercial mail to carry a working opt-out mechanism and to honor requests within ten business days. Europe generally goes further, requiring prior consent for direct marketing email, with an exception for some marketing to existing customers. A real company has lawyers, and those lawyers would prefer the unsubscribe link worked.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The mailbox providers made it a condition of delivery.&lt;/strong&gt; Since 2024, Google has required senders delivering more than 5,000 messages a day to Gmail accounts to support genuine one-click unsubscribe for marketing mail and process requests within 48 hours. Yahoo requires bulk senders to provide easy unsubscribe and honor requests within two days. Microsoft now imposes stricter rules on high-volume senders too, although its unsubscribe requirement is currently framed as a best practice rather than the same mandate. At scale, making it hard to leave has become a deliverability problem, which is the only kind of problem marketing departments take seriously.&lt;/p&gt;
&lt;h3 id=&quot;the-button-vs-the-link&quot;&gt;The Button vs. the Link&lt;/h3&gt;
&lt;p&gt;There are two different things people call &quot;unsubscribe,&quot; and the difference is the most useful thing in this article.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The Unsubscribe button at the top of the message,&lt;/strong&gt; next to the sender's name, belongs to your mail app rather than to the email. It can appear because the message carries a &lt;code&gt;List-Unsubscribe&lt;/code&gt; header, standardized back in 1998.&lt;/p&gt;
&lt;p&gt;What happens when you press it depends on one more header. &lt;code&gt;List-Unsubscribe-Post&lt;/code&gt;, defined in RFC 8058, marks the address as a true one-click endpoint. When it's there and your provider supports true one-click, your provider sends the unsubscribe request itself, as a POST over HTTPS. You don't visit the sender's website, you don't load their page and you don't execute their code. The sender gets a request saying this address is out, and that's the end of it.&lt;/p&gt;
&lt;p&gt;Why a POST rather than a normal link? Because mail security systems routinely fetch URLs automatically to check them. If simply visiting the address counted as an unsubscribe, a link scanner could remove you from a list before you'd even opened the message. The separate POST tells the sender this was an intentional unsubscribe, not a security bot kicking the tires.&lt;/p&gt;
&lt;p&gt;Without that second header, the older &lt;code&gt;List-Unsubscribe&lt;/code&gt; header can contain a web address or a &lt;code&gt;mailto:&lt;/code&gt; command, and clients handle them differently. A web address may open the sender's unsubscribe page. A &lt;code&gt;mailto:&lt;/code&gt; command can trigger an unsubscribe message to the list system, usually with some form of confirmation. Either way, it isn't the standardized hands-off HTTPS POST defined by RFC 8058.&lt;/p&gt;
&lt;p&gt;One technical detail worth knowing. For a provider to offer true one-click, the sender's DKIM signature has to cover both unsubscribe headers, and Gmail runs its own eligibility checks before showing its control. When a provider offers true RFC 8058 one-click, that's a useful signal that the sender has implemented the required authentication and unsubscribe headers correctly. It is not proof that the sender itself is trustworthy. A dishonest operation can authenticate its domain perfectly well.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The unsubscribe link in the footer&lt;/strong&gt; is supplied by the sender. Clicking it opens a page chosen by the sender or their mailing service, with everything that implies. For a company you recognize, fine. For anything else, you're accepting an invitation from a stranger.&lt;/p&gt;
&lt;p&gt;There is one reason to prefer the footer link even when the safe button exists: preferences. One-click unsubscribe is deliberately blunt and applies to the list that message came from. If you want the monthly newsletter but not the daily sale email, the sender's preference page may let you turn one off without killing everything.&lt;/p&gt;
&lt;h3 id=&quot;the-rule&quot;&gt;The Rule&lt;/h3&gt;
&lt;p&gt;Here it is, short enough to remember:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Did this arrive in my inbox, do I recognize the sender and does the message make sense?&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If yes, unsubscribe. Use the app's button if there is one, the footer link if there isn't.&lt;/p&gt;
&lt;p&gt;If no, don't click anything. Report it as spam or phishing, block the sender if you like, and leave it alone.&lt;/p&gt;
&lt;p&gt;That's the whole decision. Everything else is detail.&lt;/p&gt;
&lt;p&gt;One exception worth knowing: not every legitimate message has something to unsubscribe from. Receipts, password resets, security alerts and booking confirmations are transactional mail. If there's no mailing list, there may be no unsubscribe button because there shouldn't be one.&lt;/p&gt;
&lt;h3 id=&quot;how-to-tell-which-one-you-re-looking-at&quot;&gt;How to Tell Which One You're Looking At&lt;/h3&gt;
&lt;p&gt;If you want to be more careful than the rule, these are the signals.&lt;/p&gt;
&lt;p&gt;You don't have to click a footer link to find out where it goes. On desktop, hover over it and look at the destination first.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Signs it's real:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You can remember the company, or at least the purchase that got you onto the list.&lt;/li&gt;
&lt;li&gt;The message itself makes sense: it refers to something real, and nothing about it is urgent or odd.&lt;/li&gt;
&lt;li&gt;The footer link points to the company's domain or a recognizable mailing-service domain like Mailchimp or HubSpot, rather than somewhere completely unrelated.&lt;/li&gt;
&lt;li&gt;The unsubscribe page just says you're removed, or offers a preferences page. No login, no card details, no &quot;confirm your identity.&quot;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Signs it isn't:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You never had any relationship with this sender.&lt;/li&gt;
&lt;li&gt;The message is already in your spam folder. Your provider has told you what it thinks. Listen.&lt;/li&gt;
&lt;li&gt;The unsubscribe page asks for your password, your payment details or anything beyond the email address being removed.&lt;/li&gt;
&lt;li&gt;The link goes somewhere that has nothing to do with the sender or any mailing service.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;And the one that catches people:&lt;/strong&gt; a message that &lt;em&gt;looks&lt;/em&gt; like a newsletter from a brand you know but arrived somewhere unexpected, or addressed to an alias you never gave that company. That's phishing wearing a marketing costume, and the unsubscribe link is the hook.&lt;/p&gt;
&lt;h3 id=&quot;unsubscribe-or-report-as-spam-&quot;&gt;Unsubscribe or Report as Spam?&lt;/h3&gt;
&lt;p&gt;Different tools for different jobs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Unsubscribe&lt;/strong&gt; stops mail at the source. The sender takes you off the list and doesn't send again. Right for legitimate marketing you no longer want.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Report as spam&lt;/strong&gt; primarily tells your provider. It trains the filtering system and, in aggregate, hurts that sender's reputation. Some providers also feed complaint information back to legitimate bulk senders. Right for mail you never asked for or don't trust.&lt;/p&gt;
&lt;p&gt;Reporting a newsletter you genuinely subscribed to as spam is a small act of vandalism against a company whose only crime was being boring. Unsubscribe instead. Save the spam button for people who deserve it.&lt;/p&gt;
&lt;p&gt;For a sense of scale: Google tells bulk senders to stay below a 0.1% user-reported spam rate and never hit 0.3%. Yahoo uses the same 0.3% ceiling. That's three complaints in a thousand to hit 0.3%. The spam button carries rather more weight than it looks like.&lt;/p&gt;
&lt;h3 id=&quot;why-you-don-t-unsubscribe-from-actual-spam&quot;&gt;Why You Don't Unsubscribe from Actual Spam&lt;/h3&gt;
&lt;p&gt;A malicious sender has no obligation to honor the request. The link might remove you, it might confirm that somebody reads this address, or it might simply take you somewhere you shouldn't be. You have no way to tell which in advance.&lt;/p&gt;
&lt;p&gt;That's why the old advice survives for actual spam. Don't test whether a stranger's unsubscribe system is honest. Report the message and move on.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Sources &amp;amp; further reading:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rfc-editor.org/rfc/rfc8058&quot;&gt;RFC 8058: One-Click Unsubscribe&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.rfc-editor.org/rfc/rfc2369&quot;&gt;RFC 2369: List-Unsubscribe&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/mail/answer/81126&quot;&gt;Google: Email sender guidelines&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/mail/answer/14229414&quot;&gt;Google: Unsubscribe from marketing emails&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://senders.yahooinc.com/best-practices/&quot;&gt;Yahoo: Sender best practices&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://techcommunity.microsoft.com/blog/microsoftdefenderforoffice365blog/strengthening-email-ecosystem-outlook%E2%80%99s-new-requirements-for-high%E2%80%90volume-senders/4399730&quot;&gt;Microsoft: Outlook's requirements for high-volume senders&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.ftc.gov/business-guidance/resources/can-spam-act-compliance-guide-business&quot;&gt;FTC: CAN-SPAM Act compliance guide&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX%3A32002L0058&quot;&gt;EU ePrivacy Directive, Article 13&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Disclosure: We run &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it&quot;&gt;[@fuck.it]&lt;/a&gt;, a privacy-focused, subscription-funded email service by Paradise Circus, Inc. — no ads, no tracking. Facts and product details are accurate as of October 21, 2026; check the original for the latest version.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31999/is-it-safe-to-click-unsubscribe-depends-who-sent-it</guid>
<pubDate>Wed, 21 Oct 2026 18:19:15 +0000</pubDate>
</item>
<item>
<title>How to Automate Email Newsletter Campaigns Using Modern Autoresponders</title>
<link>https://coderlegion.com/31707/how-to-automate-email-newsletter-campaigns-using-modern-autoresponders</link>
<description>&lt;p&gt;Email newsletters remain an important channel for businesses that want to reach subscribers, promote products, distribute content, and build customer relationships. However, manually preparing and sending every newsletter requires time, consistent attention, and reliable audience management. Modern email autoresponders address these challenges by allowing marketers to schedule messages, create automated sequences, segment subscribers, and track campaign performance from a central platform.&lt;/p&gt;
&lt;p&gt;For digital marketers, bloggers, SEO professionals, and website owners, automation can turn an irregular newsletter process into a repeatable marketing operation. The objective is not simply to send more emails. It is to deliver relevant information to the right audience at the appropriate stage of the customer journey.&lt;/p&gt;
&lt;p&gt;What Is Email Newsletter Automation?&lt;br&gt;
Email newsletter automation uses software to send messages according to predefined schedules, subscriber actions, or specific conditions. Instead of manually sending every message, marketers establish workflows that determine when an email should be sent and which subscribers should receive it.&lt;/p&gt;
&lt;p&gt;An autoresponder can deliver a welcome email immediately after someone subscribes, send a series of educational newsletters over several days, or distribute recurring content according to a publishing schedule. More advanced marketing automation platforms can also apply subscriber tags, evaluate engagement, and direct contacts into different email sequences.&lt;/p&gt;
&lt;p&gt;For example, a digital marketing website might automatically welcome new subscribers, introduce them to its most useful SEO resources, and subsequently send newsletters covering keyword research, technical SEO, content strategy, and marketing tools.&lt;/p&gt;
&lt;p&gt;These workflows reduce repetitive work while helping businesses maintain consistent communication with their audiences.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Choose an Autoresponder That Matches Your Marketing Needs&lt;br&gt;
The first step is selecting an email marketing platform with automation capabilities that support your publishing schedule, audience size, and business objectives.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Important features include:&lt;/p&gt;
&lt;p&gt;Automated workflows: The ability to trigger emails following subscriptions, purchases, or other supported actions.&lt;/p&gt;
&lt;p&gt;Audience segmentation: Tools for organizing subscribers according to interests, engagement, and relevant contact information.&lt;/p&gt;
&lt;p&gt;Newsletter scheduling: Options for preparing campaigns in advance and delivering them at specified times.&lt;/p&gt;
&lt;p&gt;Performance reporting: Access to delivery, click, engagement, and conversion data where supported.&lt;/p&gt;
&lt;p&gt;Integration capabilities: Connections with website forms, customer relationship management systems, e-commerce platforms, and other marketing tools.&lt;/p&gt;
&lt;p&gt;Deliverability controls: Support for sender authentication, unsubscribe management, and contact list maintenance.&lt;/p&gt;
&lt;p&gt;Platforms differ in their available features, subscription limits, and pricing. Evaluate the actual capabilities included in the plan you intend to use rather than assuming every provider offers the same automation options.&lt;/p&gt;
&lt;p&gt;A small blog may need a straightforward welcome sequence and scheduled newsletters. An established SaaS company may require more sophisticated workflows based on trial registrations, product usage, account status, and subscription activity.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Build a Permission-Based Subscriber List&lt;br&gt;
Automation begins with a reliable subscriber list. The quality of that list directly affects the relevance of campaigns and the work required to maintain them.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Add newsletter signup forms to appropriate locations on your website, including relevant blog posts, resource pages, and landing pages. Explain what subscribers will receive, such as weekly industry updates, practical tutorials, product announcements, or exclusive educational content.&lt;/p&gt;
&lt;p&gt;Collect only the information necessary for your marketing objectives. An email address may be sufficient for a general newsletter, while an optional interest selection can help deliver more relevant material.&lt;/p&gt;
&lt;p&gt;Configure your platform to maintain subscription preferences and process unsubscribe requests correctly. Do not treat every website visitor, customer, or imported contact as someone who has agreed to receive promotional newsletters.&lt;/p&gt;
&lt;p&gt;Email marketing also involves legal and technical obligations. For example, the United States Federal Trade Commission explains the requirements of the CAN-SPAM Act, while Google's sender guidelines specify authentication and unsubscribe requirements for applicable senders. Businesses must assess the laws and rules that apply to their own audiences and locations.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Create Automated Welcome Sequences&lt;br&gt;
A welcome sequence introduces new subscribers to your brand and establishes expectations for future newsletters. Because the sequence begins when a subscriber meets a defined trigger, it can operate without requiring a marketer to send each message manually.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A practical welcome workflow can include the following stages:&lt;/p&gt;
&lt;p&gt;Workflow Stage&lt;/p&gt;
&lt;p&gt;Objective &amp;amp; Content&lt;/p&gt;
&lt;p&gt;Email 1: Immediate welcome&lt;/p&gt;
&lt;p&gt;Confirm the subscription, introduce the publication, and explain what subscribers can expect.&lt;/p&gt;
&lt;p&gt;Email 2: Useful resources&lt;/p&gt;
&lt;p&gt;Send a curated selection of relevant articles, tutorials, checklists, or other resources.&lt;/p&gt;
&lt;p&gt;Email 3: Relevant next steps&lt;/p&gt;
&lt;p&gt;Recommend a related guide, demonstrate a product feature, or direct subscribers to an appropriate landing page.&lt;/p&gt;
&lt;p&gt;The intervals between these messages should reflect the content, audience expectations, and purpose of the campaign. Avoid sending several emails in rapid succession simply because the software allows it.&lt;/p&gt;
&lt;p&gt;Before activating the sequence, test its trigger, timing, links, personalization fields, and exit conditions. Ensure that subscribers do not continue receiving welcome messages after they have unsubscribed or otherwise become ineligible for marketing communications.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Segment Subscribers for More Relevant Campaigns&lt;br&gt;
Sending the same newsletter to every contact can reduce relevance. Segmentation allows marketers to divide an audience into smaller groups according to shared characteristics or recorded activity.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Modern email marketing platforms can support segments based on subscription date, selected interests, previous email engagement, customer status, and other available data. Some platforms also allow combinations of conditions to identify more specific audiences.&lt;/p&gt;
&lt;p&gt;Consider a website that publishes content about search engine optimization, email marketing, and link building. Its subscribers may have different professional interests.&lt;/p&gt;
&lt;p&gt;The marketing team could create separate segments for:&lt;/p&gt;
&lt;p&gt;Readers interested in technical SEO and website audits.&lt;/p&gt;
&lt;p&gt;Subscribers seeking email marketing tutorials and automation advice.&lt;/p&gt;
&lt;p&gt;Website owners interested in link-building strategies.&lt;/p&gt;
&lt;p&gt;Engaged readers who regularly click through to published resources.&lt;/p&gt;
&lt;p&gt;New subscribers who have not yet received the introductory sequence.&lt;/p&gt;
&lt;p&gt;Each segment can receive content that corresponds to its interests. Someone who subscribes for technical SEO tutorials does not necessarily need every promotional email about an unrelated service.&lt;/p&gt;
&lt;p&gt;Segmentation also makes testing more useful. Marketers can compare engagement across groups, identify content that attracts qualified visitors, and adjust future campaigns based on recorded results.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Schedule Newsletters and Automate Content Distribution&lt;br&gt;
Scheduling is one of the simplest ways to reduce the daily workload associated with newsletter publishing. Marketers can prepare content ahead of time, review it, and schedule delivery according to an editorial calendar.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;A recurring newsletter might include recent articles, industry developments, practical recommendations, and links to relevant resources. An automated workflow can also distribute selected content when a supported trigger occurs.&lt;/p&gt;
&lt;p&gt;For content-driven businesses, an RSS-based email campaign may be useful if the chosen platform supports it. Such campaigns can use an eligible website feed to distribute new publications automatically or according to configured delivery rules.&lt;/p&gt;
&lt;p&gt;However, automated distribution still requires editorial oversight. Check article titles, summaries, featured links, formatting, and publication timing before enabling a workflow. A technical error or unsuitable article can otherwise be distributed to the entire targeted audience.&lt;/p&gt;
&lt;p&gt;The strongest approach combines automated delivery with human review of content quality and relevance. Automation handles repetitive execution, while editorial judgment determines what deserves to reach subscribers.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Personalize Messages and Use Conditional Workflows&lt;br&gt;
Personalization extends beyond inserting a subscriber's first name into a subject line. It can involve adapting content to a subscriber's selected interests, customer status, or recorded interactions, provided the platform has access to that information.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Conditional workflows allow an automation to follow different paths according to defined rules. For example, a SaaS company might send a product tutorial to new trial users, then direct subscribers who complete a particular onboarding action toward more advanced educational material.&lt;/p&gt;
&lt;p&gt;A newsletter publisher could use a similar approach. Readers who click a link to an SEO audit guide might receive a subsequent email featuring related technical SEO resources. Readers who select an email marketing guide could receive a different sequence.&lt;/p&gt;
&lt;p&gt;These workflows should rely on accurate data and clear rules. Avoid excessive messaging, unexplained personalization, or conclusions unsupported by subscriber activity. Provide meaningful unsubscribe and preference controls so recipients can manage their communications.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Monitor Deliverability and Protect Sender Reputation&lt;br&gt;
A newsletter campaign produces little value if its messages fail to reach recipients' inboxes. Deliverability depends on several factors, including sender authentication, recipient engagement, list quality, sending practices, and compliance with mailbox provider requirements.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Configure the authentication methods supported by your email service, including SPF, DKIM, and DMARC where applicable. Google publishes specific sender requirements for messages delivered to personal Gmail accounts, with additional requirements applying to bulk senders. These rules should be reviewed against current provider documentation before campaigns are launched.&lt;/p&gt;
&lt;p&gt;Maintain sound list management practices by removing invalid addresses, honoring unsubscribe requests, and avoiding purchased contact lists. Monitor spam complaints, delivery failures, and engagement trends.&lt;/p&gt;
&lt;p&gt;A sudden increase in sending volume or repeated messages to unresponsive contacts can create deliverability problems. Automation should therefore include sensible eligibility rules and regular list maintenance rather than simply sending messages to every available address.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Track Performance and Improve Campaign Results&lt;br&gt;
Email automation provides data that marketers can use to evaluate campaign performance and identify areas for improvement.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Important metrics include:&lt;/p&gt;
&lt;p&gt;Metric&lt;/p&gt;
&lt;p&gt;What it measures&lt;/p&gt;
&lt;p&gt;Delivery rate&lt;/p&gt;
&lt;p&gt;The proportion of sent messages reported as delivered by the platform.&lt;/p&gt;
&lt;p&gt;Click-through rate&lt;/p&gt;
&lt;p&gt;The proportion of recipients, or delivered messages, that generate clicks, depending on the reporting method.&lt;/p&gt;
&lt;p&gt;Conversion rate&lt;/p&gt;
&lt;p&gt;The proportion of a defined audience that completes a desired action.&lt;/p&gt;
&lt;p&gt;Unsubscribe rate&lt;/p&gt;
&lt;p&gt;The proportion of recipients who opt out of future messages.&lt;/p&gt;
&lt;p&gt;Bounce rate&lt;/p&gt;
&lt;p&gt;The proportion of messages that cannot be delivered.&lt;/p&gt;
&lt;p&gt;Revenue attributed to email&lt;/p&gt;
&lt;p&gt;Revenue credited to email campaigns under the reporting system's attribution rules.&lt;/p&gt;
&lt;p&gt;Interpret these figures in context. Email opens are an imperfect measure because privacy features and automated image loading can affect tracking. Clicks, qualified website visits, completed registrations, and attributable purchases can provide additional evidence of campaign performance.&lt;/p&gt;
&lt;p&gt;Use controlled A/B tests to evaluate subject lines, calls to action, content formats, and other variables supported by your platform. Test one principal variable at a time when practical, and evaluate results against a defined objective.&lt;/p&gt;
&lt;p&gt;For example, a newsletter promoting an SEO checklist should be assessed by its ability to generate relevant visits and checklist downloads, not merely by the number of messages sent.&lt;/p&gt;
&lt;p&gt;Conclusion&lt;br&gt;
Automating email newsletter campaigns with modern autoresponders enables businesses to maintain consistent communication, organize subscribers, distribute content, and measure marketing results with less repetitive manual work.&lt;/p&gt;
&lt;p&gt;The process begins with selecting suitable software and building a permission-based subscriber list. From there, marketers can establish welcome sequences, create targeted segments, schedule newsletters, personalize messages, and monitor deliverability. Performance data then informs subsequent improvements.&lt;/p&gt;
&lt;p&gt;For digital marketers, SEO professionals, bloggers, and SaaS companies, the objective is to build an email operation that serves subscribers while supporting measurable business goals. Effective automation requires more than a collection of scheduled messages. It requires relevant content, reliable technical configuration, responsible list management, and ongoing evaluation.&lt;/p&gt;
&lt;p&gt;When these elements work together, email autoresponders become a practical component of a broader digital marketing strategy, helping businesses nurture audiences, distribute valuable resources, and guide interested readers toward meaningful actions.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/31707/how-to-automate-email-newsletter-campaigns-using-modern-autoresponders</guid>
<pubDate>Mon, 19 Oct 2026 11:10:49 +0000</pubDate>
</item>
<item>
<title>Would an independent final-email rule check earn a place beside your existing tests?</title>
<link>https://coderlegion.com/31600/would-an-independent-final-email-rule-check-earn-a-place-beside-your-existing-tests</link>
<description>&lt;p&gt;I’m cun he, maker of InlinerAPI. If you maintain business receipts, reset messages or invitations, I’d appreciate one current-work comparison: &lt;a rel=&quot;nofollow&quot; href=&quot;https://inlinerapi.netlify.app/requirements&quot;&gt;https://inlinerapi.netlify.app/requirements&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Use synthetic final rendered HTML and an independently expected copy, displayed amount or CTA destination. The browser preview needs no signup. It checks the supplied content; it does not refresh application data, run your templates, validate tokens, or test inbox appearance or delivery.&lt;/p&gt;
&lt;p&gt;What rule did you attempt, what result did you observe, and how did setup and maintenance compare with your existing tests? If it helps recurring work, what would your team need to justify paying for these current checks?&lt;/p&gt;
</description>
<category>Discussions</category>
<guid isPermaLink="true">https://coderlegion.com/31600/would-an-independent-final-email-rule-check-earn-a-place-beside-your-existing-tests</guid>
<pubDate>Sun, 18 Oct 2026 11:12:47 +0000</pubDate>
</item>
<item>
<title>@fuck.it - email with attitude</title>
<link>https://coderlegion.com/30987/fuck-it-email-with-attitude</link>
<description>&lt;p&gt;fuck.it is invite-only email for people who want a memorable address without becoming the product.&lt;br&gt;
We built fuck.it around a simple idea: email should be something you pay for directly, not something subsidized by advertising, tracking or selling access to your data.&lt;br&gt;
Every account gets an fuck.it email address with webmail plus IMAP and SMTP access so it works with standard email clients.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you get&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No advertising&lt;/li&gt;
&lt;li&gt;No tracking pixels&lt;/li&gt;
&lt;li&gt;No selling user data&lt;/li&gt;
&lt;li&gt;Invite-only registration&lt;/li&gt;
&lt;li&gt;IMAP and SMTP support&lt;/li&gt;
&lt;li&gt;Webmail&lt;/li&gt;
&lt;li&gt;Calendar, contacts and tasks&lt;/li&gt;
&lt;li&gt;Encrypted connections&lt;/li&gt;
&lt;li&gt;German-hosted infrastructure&lt;/li&gt;
&lt;li&gt;Multiple storage plans up to 1 TB&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Why invite-only?&lt;/strong&gt;&lt;br&gt;
Open signup attracts bots, spammers and scammers. That eventually hurts everyone on the platform through abuse, reputation damage and worse deliverability.&lt;br&gt;
fuck.it deliberately avoids the free-for-all model. New users need an invitation before they can create an account.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Who is it for?&lt;/strong&gt;&lt;br&gt;
People who care about privacy, independence and having an email address nobody forgets.&lt;br&gt;
It is not trying to replace every productivity platform on earth. It is email with attitude, built around a straightforward paid relationship between the service and the user.&lt;br&gt;
Website: &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it&quot;&gt;https://fuck.it&lt;/a&gt;&lt;/p&gt;
</description>
<category>Launches</category>
<guid isPermaLink="true">https://coderlegion.com/30987/fuck-it-email-with-attitude</guid>
<pubDate>Tue, 13 Oct 2026 20:35:25 +0000</pubDate>
</item>
<item>
<title>Is Paying for Email Worth It? What Your Money Actually Buys</title>
<link>https://coderlegion.com/30986/is-paying-for-email-worth-it-what-your-money-actually-buys</link>
<description>&lt;p&gt;&quot;If you're not paying for the product, you are the product.&quot;&lt;/p&gt;
&lt;p&gt;It's a great line. It's also doing a lot of work for people selling things, including us. So let's take it apart properly: what free email actually costs you, what paying actually buys and where even we think paying is the wrong answer.&lt;/p&gt;
&lt;p&gt;We sell paid email. Read accordingly. We've still tried to write the version we'd want to read before spending money.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://cdn.fuck.it/assets/email-cash-offers.webp&quot; alt=&quot;Three hands offering cash toward an envelope on a checkout belt&quot;&gt;&lt;br&gt;
&lt;em&gt;Somebody pays for every inbox. The only question is who and how.&lt;/em&gt;&lt;/p&gt;
&lt;h3 id=&quot;tl-dr-2&quot;&gt;TL;DR&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Somebody pays for every inbox. The only question is who, and what they want in return.&lt;/li&gt;
&lt;li&gt;Mainstream free mail runs partly on advertising and the data profile that makes it work. Gmail, Outlook, Yahoo, GMX, mail.com: somebody other than you is helping pay the bill.&lt;/li&gt;
&lt;li&gt;The ad-free free tiers are paid for too, by the subscribers of the same company. Which rather makes the point.&lt;/li&gt;
&lt;li&gt;Inbox data has been sold. Yahoo and AOL scanned more than 200 million inboxes for commercial advertising data, and free email apps have built six-figure datasets from what their users received and bought.&lt;/li&gt;
&lt;li&gt;Your inbox is extraordinarily valuable data and AI makes it more useful than ever. What governs its use is a policy, not an architecture, and the settings are confusing enough that even security researchers got them wrong in public.&lt;/li&gt;
&lt;li&gt;Email services simply end. Providers have been shutting down and offloading mailbox products for years, and a mailbox nobody pays for directly is the easiest kind to cut.&lt;/li&gt;
&lt;li&gt;Paying puts you and the provider on the same side. Your subscription is the revenue, so the product only has to do one job.&lt;/li&gt;
&lt;li&gt;What money doesn't buy: immunity from the law, guaranteed delivery, encryption once your message reaches Gmail, or protection from your own mistakes.&lt;/li&gt;
&lt;li&gt;The one thing paying doesn't fix: the address still sits on somebody else's domain. Only your own domain changes that.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;somebody-pays-for-every-inbox&quot;&gt;Somebody Pays for Every Inbox&lt;/h3&gt;
&lt;p&gt;Running mail is not free. Servers, storage, spam filtering, abuse handling, deliverability work, engineers: all of it costs money every month, for every mailbox, forever. Nobody absorbs that out of generosity.&lt;/p&gt;
&lt;p&gt;So when an inbox costs you nothing, the money is coming from somewhere else, and that somewhere decides what the product becomes.&lt;/p&gt;
&lt;p&gt;For mainstream free mail, advertising is part of the economics. Gmail, Outlook.com, Yahoo, GMX and mail.com all show advertising in or around their free email products. Microsoft states plainly that free Outlook is supported by ads. GMX says advertising revenue finances its free service. The targeting models differ, and Google says Gmail ads are based on your wider activity rather than your messages. But in every case somebody other than the person reading the mail is helping pay the bill.&lt;/p&gt;
&lt;p&gt;For the ad-free free tiers, the answer is other customers. Proton and Tuta give away a limited free account with no ads and real encryption, and they can do it because their paying subscribers cover the cost. Those free tiers are an argument for paid email, not against it. They exist because somebody pays.&lt;/p&gt;
&lt;p&gt;Which leaves one model where the person paying and the person using the inbox are the same: you pay, and the only thing the provider has to get right is your mail.&lt;/p&gt;
&lt;p&gt;That's it. That's the entire case for paid email, and everything below is detail.&lt;/p&gt;
&lt;h3 id=&quot;what-actually-happens-to-free-email&quot;&gt;What Actually Happens to Free Email&lt;/h3&gt;
&lt;p&gt;Let's be precise, because the vague version is easy to dismiss.&lt;/p&gt;
&lt;p&gt;Gmail is the interesting case, because the easy accusation is out of date and the real problem is worse.&lt;/p&gt;
&lt;p&gt;Google stopped using message content for ad personalization in 2017. It says it does not use Gmail content to train its Gemini models, and it has repeated that denial every time the claim resurfaces.&lt;/p&gt;
&lt;p&gt;Now look at what happened in November 2025. A post claiming Gmail had quietly opted everyone into AI training reached millions of people. A respected security firm wrote it up, then published a correction the next day admitting it had confused Gmail's long-standing smart features with generative model training. Google said it had changed nobody's settings. A proposed class action was filed in California alleging Gemini got access to Gmail, Chat and Meet without proper consent, which remains an allegation rather than a finding.&lt;/p&gt;
&lt;p&gt;Here's the part that should bother you regardless of who was right. The controls live in several places and Google documents three separate categories of them. Switching them off also removes things like inbox categorization, Smart Compose and summary cards, so the convenient features and the data access share the same switches. And when professional security researchers looked at the interface and couldn't agree on what it did, several hundred million ordinary users had no chance at all.&lt;/p&gt;
&lt;p&gt;That's the actual condition of free email in 2026. Not a confirmed conspiracy. Something more corrosive: a system so complicated that &quot;we don't do that with your mail&quot; has become unverifiable by the person whose mail it is.&lt;/p&gt;
&lt;p&gt;Your inbox is extraordinarily valuable data. Contracts, purchases, appointments, arguments, relationships and years of natural-language correspondence, all in one searchable place. AI makes that data more useful than it has ever been.&lt;/p&gt;
&lt;p&gt;Google says it does not use personal Gmail messages to train its foundational Gemini models. The concern is broader than training. Depending on your settings, your mail can already be processed to categorize messages, generate replies, summarize threads and power personalized features across Google's products.&lt;/p&gt;
&lt;p&gt;&quot;We don't use your mail to train our models&quot; is an important promise. It's also a policy commitment layered over a system that can technically process the mail. The architecture hasn't made the question irrelevant, it has just moved it into a settings menu.&lt;/p&gt;
&lt;p&gt;A subscription-funded inbox doesn't need to monetize that processing to pay for the mailbox. That's the difference.&lt;/p&gt;
&lt;h3 id=&quot;everyone-else-is-in-the-same-business&quot;&gt;Everyone Else Is in the Same Business&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Microsoft.&lt;/strong&gt; In January 2026 a bug let Microsoft 365 Copilot Chat read and summarize emails that users had explicitly labelled confidential, bypassing the data-loss-prevention rules designed to stop it. Microsoft confirmed it and fixed it. In the same period the European Parliament's IT department switched off built-in AI features on lawmakers' devices, citing the risk of confidential correspondence being uploaded to the cloud. Those were paying enterprise customers with compliance controls turned on. If the guardrails leak there, think about what the free consumer tier looks like.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Yahoo and AOL.&lt;/strong&gt; The clearest documented case. In 2018 the Wall Street Journal reported more than 200 million inboxes being scanned for commercial data sold to advertisers, sorting people into categories like &quot;frequent traveler&quot; from their receipts and booking confirmations. Only mail from companies, Yahoo said, and you could opt out. It was on by default.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Free email apps.&lt;/strong&gt; In 2020, Edison Mail, Cleanfox and Slice were all shown to build commercial products out of their users' inboxes: purchase data extracted, aggregated and sold to corporate clients, with one dataset reportedly priced above $100,000. Edison's homepage said &quot;No Ads, Just Mail.&quot; Perfectly true. The money came from somewhere else.&lt;/p&gt;
&lt;p&gt;And the one nobody warns you about: &lt;strong&gt;email services simply end.&lt;/strong&gt; Telecoms and internet providers have been shutting down or offloading mailbox products for years. Turkcell, for example, says its Mailim service closes completely on 31 October 2026 and that stored data becomes inaccessible after 1 December.&lt;/p&gt;
&lt;p&gt;The problem is sharpest when email is bundled into something else. If nobody is paying specifically for the mailbox, it's easy to treat as a cost centre when priorities change. It's always somebody's line item, and line items get cut.&lt;/p&gt;
&lt;h3 id=&quot;what-free-actually-costs&quot;&gt;What Free Actually Costs&lt;/h3&gt;
&lt;p&gt;Forget the monthly price. These are the costs that show up later.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ads in the place you read your mail.&lt;/strong&gt; Promotions tabs, sponsored messages, inline units dressed up as email. You've stopped noticing them, which is exactly what makes them valuable.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;A profile that outlives the inbox.&lt;/strong&gt; Even where message content isn't used for targeting, your activity feeds the same advertising machine that funds everything else. The inbox is one input among many.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Deletion for inactivity.&lt;/strong&gt; Google may delete personal accounts after two years of inactivity. Microsoft closes accounts not signed into for two years. A free account expects you to keep proving you exist, and quietly takes your address back if you don't.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Suspension with no appeal.&lt;/strong&gt; Automated systems close accounts, sometimes wrongly. When mail, photos and documents all sit behind one free account, a bad automated decision takes all three at once, and your route back is a web form.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Storage you share with everything else.&lt;/strong&gt; On Gmail, 15 GB covers mail, Drive and Photos together. Fill it with holiday videos and your mail stops arriving.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes you don't get a vote on.&lt;/strong&gt; Gmail is ending Send As for outside addresses in January 2027. Yahoo cut free storage. AI features arrive switched on and the opt-out takes your inbox categorization with it. The product serves a strategy and you're not part of it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;An inbox that keeps becoming something else.&lt;/strong&gt; Mail was a product. Then a tab in an ecosystem. Now an AI surface. Nobody asked the people reading their mail whether they wanted any of it.&lt;/p&gt;
&lt;h3 id=&quot;what-paying-actually-buys&quot;&gt;What Paying Actually Buys&lt;/h3&gt;
&lt;p&gt;Here's the part where paid providers usually get vague. Specifics:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;An actual support relationship.&lt;/strong&gt; Not automatically a good one. Plenty of paid providers have terrible support and some free services do better than they need to. But paying puts you on the other side of a relationship where losing you costs something, and that changes what happens when your account locks on a Friday afternoon.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A business model that points the same way you do.&lt;/strong&gt; If the money comes from subscriptions, the incentive is to keep you subscribed. If it comes from advertising or ecosystem lock-in, the incentive is to keep you engaged and inside. Neither is sinister. They just produce different products over ten years.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;No ads in your inbox.&lt;/strong&gt; Worth stating plainly, with the caveat below that a couple of free providers manage this too.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Storage built around your account, not an advertising ecosystem.&lt;/strong&gt; Your mailbox capacity isn't competing with Google Photos or a consumer cloud bundle.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;An account that doesn't expire just because you're quiet.&lt;/strong&gt; A paid mailbox generally isn't going to disappear because you haven't logged in for two years.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The practical features.&lt;/strong&gt; Proper IMAP, POP3 and SMTP access, so any mail client works. Aliases. Decent attachment limits. Export that isn't a maze. These vary by provider, so check rather than assume.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;A provider small enough to care about your complaint.&lt;/strong&gt; Not always true, but more likely when your subscription is a visible fraction of revenue rather than a rounding error.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;what-paying-does-not-buy&quot;&gt;What Paying Does Not Buy&lt;/h3&gt;
&lt;p&gt;Any provider telling you otherwise is selling harder than we are.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn't buy immunity from the law.&lt;/strong&gt; A provider in any jurisdiction responds to valid legal orders. Paid doesn't mean untouchable, and anyone implying it does is lying to you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn't buy privacy from the person you're writing to.&lt;/strong&gt; Send mail to a Gmail address and it lands on Google's servers under Google's rules. Encryption in transit protects the journey, not the destination.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn't buy guaranteed delivery.&lt;/strong&gt; No provider controls what the receiving server does. Anyone promising inbox placement is promising something they don't own.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn't buy protection from phishing.&lt;/strong&gt; Good filtering helps. A convincing message from a real address, properly authenticated, still gets through to everybody.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It doesn't automatically buy better security than free.&lt;/strong&gt; Several free providers have excellent security. Price is not a proxy for engineering.&lt;/p&gt;
&lt;h3 id=&quot;the-thing-nobody-selling-you-email-wants-to-mention&quot;&gt;The Thing Nobody Selling You Email Wants to Mention&lt;/h3&gt;
&lt;p&gt;Here's the strongest argument against paying us, and against paying any provider for an address on their domain.&lt;/p&gt;
&lt;p&gt;If your address is &lt;code&gt;*Emails are not allowed*&lt;/code&gt;, you don't control the domain behind it. Google does.&lt;/p&gt;
&lt;p&gt;But if your address is &lt;code&gt;*Emails are not allowed*&lt;/code&gt;, you don't control that domain either. We do. If we go out of business, get bought by somebody terrible or simply decide to stop, you're moving addresses and telling four hundred accounts about it, exactly as you would be if Google shut Gmail down.&lt;/p&gt;
&lt;p&gt;Paying changes the incentives. It doesn't change who holds the domain.&lt;/p&gt;
&lt;p&gt;The only setup that genuinely puts your email address under your control is your own domain plus a provider you can replace. Then switching providers is a DNS change and nobody has to update anything. That's the real answer to &quot;my email is infrastructure,&quot; and for a basic domain it can cost little more than ten or twenty euros a year, plus the discipline to never let the registration lapse.&lt;/p&gt;
&lt;p&gt;It also isn't something we sell. We don't do custom domains, because the whole point of a fuck.it address is that it says fuck.it. If maximum portability is what you're after, we're the wrong shop and you should go buy a domain.&lt;/p&gt;
&lt;h3 id=&quot;credit-where-it-s-due&quot;&gt;Credit Where It's Due&lt;/h3&gt;
&lt;p&gt;Two free tiers are worth naming, because pretending otherwise would be dishonest and you'd catch us at it.&lt;/p&gt;
&lt;p&gt;Proton Mail and Tuta both offer free accounts with no ads and genuine encryption. Small storage, limited features, and both funded by the people paying for the full version. If budget is the binding constraint, they're a far better answer than an ad-supported inbox.&lt;/p&gt;
&lt;p&gt;And Gmail, as a piece of software, is excellent. Best-in-class search, enormous app support, rock solid. We're not going to insult your intelligence by pretending it's badly built. The question was never whether it works. It's what it's for, and who it's for.&lt;/p&gt;
&lt;h3 id=&quot;when-free-is-good-enough&quot;&gt;When Free Is Good Enough&lt;/h3&gt;
&lt;p&gt;Stay where you are if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Email is a utility you think about twice a year.&lt;/li&gt;
&lt;li&gt;Nothing load-bearing is attached to the address: no bank, no business, no clients.&lt;/li&gt;
&lt;li&gt;The budget genuinely matters. A paid inbox is a luxury next to rent, and anyone implying otherwise is out of touch.&lt;/li&gt;
&lt;li&gt;You're on one of the ad-free free tiers above and the storage limit doesn't bite.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;when-paying-makes-sense&quot;&gt;When Paying Makes Sense&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Your address is infrastructure.&lt;/strong&gt; It's the recovery key for your bank, your password manager and a few hundred accounts. That deserves better than a free tier and an automated support queue.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You want out of an ecosystem.&lt;/strong&gt; Separating your email from one company's account system is the first real step, and it's hard to do on a free tier run by that same company.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You need someone to answer.&lt;/strong&gt; If a week without working email would cost you real money, buy a support channel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You want the terms to stay still.&lt;/strong&gt; Paid services change too, but they change with their customers in mind, because customers cancel.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You'd rather pay with money than attention.&lt;/strong&gt; Perfectly respectable reason, and the honest version of the slogan at the top.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;how-to-judge-a-paid-provider&quot;&gt;How to Judge a Paid Provider&lt;/h3&gt;
&lt;p&gt;If you decide to pay, the price is the least interesting question. Ask these instead:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Can you leave?&lt;/strong&gt; IMAP access and a real export. If getting your mail out is hard, the lock-in is just a different flavor.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Who actually runs it?&lt;/strong&gt; A named company in a jurisdiction you can find, not a landing page.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What happens if you stop paying?&lt;/strong&gt; Grace period, read-only access, immediate deletion? Find out before, not after.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Is the storage honest?&lt;/strong&gt; Shared across services or just mail?&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What's the support promise?&lt;/strong&gt; Email only, response times, and whether a human exists.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;What do they claim they can't see?&lt;/strong&gt; Then check whether the architecture supports the claim, or whether it's a promise in a privacy policy.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How long have they been around, and does the pricing look like a business or a land grab?&lt;/strong&gt; Services with no revenue model die, and you have to move again.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;where-fuck-it-lands&quot;&gt;Where [@fuck.it] Lands&lt;/h3&gt;
&lt;p&gt;No ads. No tracking. No bullshit. That isn't a slogan we picked because it sounded good, it's a description of our revenue: subscriptions, all of it. There's no second business, no ad network, no profile worth building and nothing to sell to anyone else, because selling you email is the entire company.&lt;/p&gt;
&lt;p&gt;What that buys you: a mailbox whose storage isn't shared with a photo library, full IMAP, POP3 and SMTP access, a person on the other end of support, and an account that doesn't expire because you went quiet for a year.&lt;/p&gt;
&lt;p&gt;What we won't pretend: we can't give you a custom domain, so your address lives on our domain and depends on us continuing to exist. We can't promise anything about legal process that any other provider can't. If portability above all else is what you're after, go buy a domain.&lt;/p&gt;
&lt;p&gt;But let's be honest about what you'd be giving up. Nobody has ever raised an eyebrow at a gmail.com address. Nobody ever will. Ours is the best domain on the internet and the only one that tells people something about you before they've read a word. There's a reason you remember it.&lt;/p&gt;
&lt;p&gt;An address on your own domain says you own a domain. An @fuck.it address says something else entirely.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/&quot;&gt;See plans →&lt;/a&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Sources &amp;amp; further reading:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/mail/answer/6603&quot;&gt;Google: Ads in Gmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.microsoft.com/en-us/outlook/about-ads-in-outlook&quot;&gt;Microsoft: About ads in Outlook&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://blog.google/products-and-platforms/products/gmail/privacy-in-gmail-with-gemini/&quot;&gt;Google: Privacy in Gmail with Gemini&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/mail/answer/15604322&quot;&gt;Google: Smart features and personalization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.malwarebytes.com/blog/news/2025/11/gmail-is-reading-your-emails-and-attachments-to-train-its-ai-unless-you-turn-it-off&quot;&gt;Malwarebytes: correction on Gmail smart features&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.snopes.com/news/2026/08/23/google-ai-gmail-chats/&quot;&gt;Snopes: Google AI and your Gmail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://techcrunch.com/2026/02/18/microsoft-says-office-bug-exposed-customers-confidential-emails-to-copilot-ai/&quot;&gt;TechCrunch: Office bug exposed confidential emails to Copilot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://techcrunch.com/2018/08/28/yahoo-still-scans-your-emails-for-ads-even-if-its-rivals-wont/&quot;&gt;TechCrunch: Yahoo still scans your emails for ads&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://www.vice.com/en/article/free-email-apps-spying-on-you-edison-slice-cleanfox/&quot;&gt;Motherboard: How big companies spy on your emails&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://proton.me/mail/pricing&quot;&gt;Proton: Mail pricing and funding&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.google.com/accounts/answer/12418290?hl=en&quot;&gt;Google: Inactive Google Account Policy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://support.microsoft.com/en-us/accounts-billing/manage/microsoft-account-activity-policy&quot;&gt;Microsoft: Account activity policy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Related reads:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog/how-to-change-email-providers&quot;&gt;How to Change Email Providers Without Losing Your Digital Life&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog/gmail-send-as-third-party-accounts-ending&quot;&gt;Gmail Is Killing &quot;Send As&quot; for Other Email Accounts&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This article was originally published on the [@fuck.it] blog at &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog/is-paid-email-worth-it&quot;&gt;https://fuck.it/blog/is-paid-email-worth-it&lt;/a&gt; and is republished here by the author. [@fuck.it] is a privacy-focused, subscription-funded email service by Paradise Circus, Inc. — no ads, no tracking. Facts and product details are accurate as of October 13, 2026; check the original for the latest version.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30986/is-paying-for-email-worth-it-what-your-money-actually-buys</guid>
<pubDate>Tue, 13 Oct 2026 20:29:52 +0000</pubDate>
</item>
<item>
<title>How to Deduplicate Leads in n8n Before They Reach Your CRM</title>
<link>https://coderlegion.com/25672/how-to-deduplicate-leads-in-n8n-before-they-reach-your-crm</link>
<description>
&lt;p&gt;
        Lead deduplication is not one filter. A reliable n8n workflow separates repeated submissions from repeated people, normalizes the values used for comparison, checks persistent records, and lets the CRM enforce uniqueness whenever the destination supports it.
      &lt;/p&gt;

      &lt;div class=&quot;article-callout&quot;&gt;
        &lt;p&gt;&lt;strong&gt;Partner disclosure.&lt;/strong&gt; This guide includes a partner link to &lt;a href=&quot;https://n8n.partnerlinks.io/6mg2xng7s1m6&quot; target=&quot;_blank&quot; rel=&quot;sponsored noopener nofollow&quot;&gt;n8n Cloud&lt;/a&gt;. If you sign up through it, I may earn a commission at no extra cost to you.&lt;/p&gt;
      &lt;/div&gt;

      &lt;div class=&quot;article-callout&quot;&gt;
        &lt;p&gt;&lt;strong&gt;Short answer:&lt;/strong&gt; use a stable source ID to stop the same event twice, normalized email or phone to find an existing person, and a CRM-native create/update or upsert operation for the final write. Never auto-merge two records on name alone.&lt;/p&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;first-identify-which-duplicate-you-are-stopping&quot;&gt;First identify which duplicate you are stopping&lt;/h2&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;Duplicate type&lt;/th&gt;
              &lt;th&gt;Example&lt;/th&gt;
              &lt;th&gt;Best first control&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;Repeated item in one execution&lt;/td&gt;
              &lt;td&gt;A spreadsheet import contains the same row twice&lt;/td&gt;
              &lt;td&gt;Remove Duplicates on the current input&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Repeated source event&lt;/td&gt;
              &lt;td&gt;A webhook or retry delivers submission &lt;code&gt;lead_8472&lt;/code&gt; again&lt;/td&gt;
              &lt;td&gt;Persistent check on the stable source ID&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Same person from another source&lt;/td&gt;
              &lt;td&gt;The same customer submits a website form after a Facebook form&lt;/td&gt;
              &lt;td&gt;Normalized identity lookup in the CRM&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Conflicting identity&lt;/td&gt;
              &lt;td&gt;Email matches one contact while phone matches another&lt;/td&gt;
              &lt;td&gt;Human review, not an automatic merge&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;
      &lt;p&gt;
        The &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/facebook-lead-ads-google-sheets-email-without-zapier&quot;&gt;Facebook Lead Ads workflow&lt;/a&gt; uses a Meta lead ID to stop one submission from creating several sheet rows. This guide goes further by handling several sources and an existing CRM full of contacts.
      &lt;/p&gt;

      &lt;h2 id=&quot;choose-identity-keys-before-building-nodes&quot;&gt;Choose identity keys before building nodes&lt;/h2&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;Key&lt;/th&gt;
              &lt;th&gt;What it proves&lt;/th&gt;
              &lt;th&gt;Rule&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;Source record or submission ID&lt;/td&gt;
              &lt;td&gt;The same source event or object&lt;/td&gt;
              &lt;td&gt;Strongest key for replay protection, but not for matching a person across systems&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Normalized email&lt;/td&gt;
              &lt;td&gt;Usually the same inbox&lt;/td&gt;
              &lt;td&gt;Good exact contact key when present and valid&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Normalized phone&lt;/td&gt;
              &lt;td&gt;Usually the same reachable number&lt;/td&gt;
              &lt;td&gt;Useful with country context; shared business or family numbers need caution&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Name&lt;/td&gt;
              &lt;td&gt;Only that the text looks similar&lt;/td&gt;
              &lt;td&gt;Use as review context, never as the only automatic merge key&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;
      &lt;p&gt;
        Decide field ownership too. A new form may fill a missing phone number, but it should not silently replace a verified CRM email, owner, lifecycle stage, or consent value. Deduplication decides which record to use. A separate update policy decides which fields may change.
      &lt;/p&gt;

      &lt;h2 id=&quot;a-practical-n8n-workflow-shape&quot;&gt;A practical n8n workflow shape&lt;/h2&gt;
      &lt;pre class=&quot;article-code&quot;&gt;Lead trigger
  &amp;rarr; Edit Fields: normalize keys
  &amp;rarr; Remove Duplicates: current batch or repeated event
  &amp;rarr; Data Table or CRM: persistent lookup
  &amp;rarr; Switch: new / exact match / conflict
  &amp;rarr; CRM: create or update
  &amp;rarr; Data Table: record source key and CRM ID
  &amp;rarr; Alert only when review or failure is needed&lt;/pre&gt;
      &lt;p&gt;
        Start with one lead source and one CRM. The same pattern can later sit behind Facebook forms, website forms, imports, chat, and email without giving each source a different duplicate policy.
      &lt;/p&gt;

      &lt;h2 id=&quot;step-1-normalize-the-fields-once&quot;&gt;Step 1: normalize the fields once&lt;/h2&gt;
      &lt;p&gt;
        Add an &lt;strong&gt;Edit Fields&lt;/strong&gt; node immediately after the trigger. Preserve the original values for audit and display, then create separate comparison fields:
      &lt;/p&gt;
      &lt;pre class=&quot;article-code&quot;&gt;source_key
email_original
email_key
phone_original
phone_key
full_name
source
received_at&lt;/pre&gt;
      &lt;p&gt;For an email comparison key, an n8n expression can trim whitespace and use lowercase:&lt;/p&gt;
      &lt;pre class=&quot;article-code&quot;&gt;{{ ($json.email || '').trim().toLowerCase() }}&lt;/pre&gt;
      &lt;p&gt;
        Build &lt;code&gt;source_key&lt;/code&gt; from the provider and its stable ID, for example &lt;code&gt;facebook:lead_8472&lt;/code&gt; or &lt;code&gt;website:submission_193&lt;/code&gt;. Do not concatenate name and timestamp and call that stable. For phone numbers, remove presentation punctuation and normalize with the correct country context. Simply stripping every non-digit character can make two different international numbers look deceptively similar.
      &lt;/p&gt;

      &lt;h2 id=&quot;step-2-use-remove-duplicates-for-the-narrow-job-it-does-well&quot;&gt;Step 2: use Remove Duplicates for the narrow job it does well&lt;/h2&gt;
      &lt;p&gt;
        For duplicate rows arriving together, configure &lt;strong&gt;Remove Duplicates &amp;rarr; Remove Items Repeated Within Current Input&lt;/strong&gt;, choose &lt;strong&gt;Selected Fields&lt;/strong&gt;, and compare &lt;code&gt;source_key&lt;/code&gt;. This is ideal for imports and batched records.
      &lt;/p&gt;
      &lt;p&gt;
        For the same source event arriving in later executions, the node also supports &lt;strong&gt;Remove Items Processed in Previous Executions&lt;/strong&gt;. Use &lt;strong&gt;Value Is New&lt;/strong&gt; and deduplicate on &lt;code&gt;source_key&lt;/code&gt;. Scope can be the individual node or the workflow. Current n8n documentation says the default history size is 10,000 items.
      &lt;/p&gt;
      &lt;div class=&quot;article-callout&quot;&gt;
        &lt;p&gt;&lt;strong&gt;Do not treat that history as your customer database.&lt;/strong&gt; The history has a configured size, can be cleared, and only knows the values you gave that node or workflow. It cannot decide that two different source IDs belong to the same person.&lt;/p&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;step-3-add-a-persistent-lookup&quot;&gt;Step 3: add a persistent lookup&lt;/h2&gt;
      &lt;h3&gt;Option A: n8n Data Table for a small lead ledger&lt;/h3&gt;
      &lt;p&gt;
        A Data Table is a practical first version for a small business that does not yet have strong CRM lookup rules. Create a table such as &lt;code&gt;lead_identity&lt;/code&gt; with these columns:
      &lt;/p&gt;
      &lt;pre class=&quot;article-code&quot;&gt;source_key
email_key
phone_key
crm_id
status
first_seen_at
last_seen_at&lt;/pre&gt;
      &lt;p&gt;
        The current Data Table node can check whether a row exists, get rows, insert, update, and upsert using conditions. Search the strongest available key before the CRM write, then upsert the final &lt;code&gt;crm_id&lt;/code&gt; only after the CRM succeeds.
      &lt;/p&gt;
      &lt;p&gt;
        n8n describes Data Tables as light to moderate storage. The default total limit across all tables in an instance is 50 MB, although self-hosted instances can change it. That makes a table useful as a compact identity ledger, not a replacement for a mature CRM or warehouse.
      &lt;/p&gt;

      &lt;h3&gt;Option B: search the CRM directly&lt;/h3&gt;
      &lt;p&gt;
        If the CRM already owns the customer record, query it first. The current n8n HubSpot node, for example, supports searching contacts and a &lt;strong&gt;Create/Update a contact&lt;/strong&gt; operation. Other CRM nodes expose different operations, so check the destination's exact contract before copying a pattern.
      &lt;/p&gt;
      &lt;p&gt;
        Prefer a CRM record ID or custom unique source ID once you have one. HubSpot's current Contacts API can retrieve by email and batch upsert by email or a custom unique identifier. It also notes that partial upserts are not supported when email is the identifier, which is one reason not to send an incomplete payload blindly.
      &lt;/p&gt;

      &lt;h2 id=&quot;step-4-route-new-matched-and-conflicting-leads&quot;&gt;Step 4: route new, matched, and conflicting leads&lt;/h2&gt;
      &lt;p&gt;Use a &lt;strong&gt;Switch&lt;/strong&gt; node with three explicit outcomes:&lt;/p&gt;
      &lt;ol&gt;
        &lt;li&gt;&lt;strong&gt;No match:&lt;/strong&gt; create the contact, then save the returned CRM ID with the source key.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;One safe match:&lt;/strong&gt; update only allowed fields and attach the new source or submission as an activity.&lt;/li&gt;
        &lt;li&gt;&lt;strong&gt;Conflict:&lt;/strong&gt; do not create or merge automatically. Send the candidate record IDs and incoming values to an owner for review.&lt;/li&gt;
      &lt;/ol&gt;
      &lt;p&gt;
        A conflict includes more than two search results. It also includes email matching contact A while phone matches contact B, or a source ID pointing to a record whose verified identity now disagrees with the payload. Preserve the lead and notify someone. Silent deletion is not deduplication.
      &lt;/p&gt;

      &lt;h2 id=&quot;step-5-make-the-crm-write-duplicate-safe&quot;&gt;Step 5: make the CRM write duplicate-safe&lt;/h2&gt;
      &lt;p&gt;
        Use the destination's create/update or upsert operation when it can enforce a unique identifier. This is stronger than a separate search followed by create because two n8n executions can run at nearly the same time, both see no result, and both create a contact before either writes the ledger.
      &lt;/p&gt;
      &lt;p&gt;
        If the CRM cannot upsert atomically, use its unique-field constraint, serialize the critical section, or put the identity key in a database with a unique index. Catch the destination's duplicate response and retrieve the existing record instead of treating every conflict as an unrecoverable failure.
      &lt;/p&gt;
      &lt;p&gt;
        After a successful write, upsert the source key and returned CRM ID into the Data Table. Then send notifications or start follow-up. This ordering prevents the team from receiving a success alert for a contact that never reached the CRM.
      &lt;/p&gt;

      &lt;h2 id=&quot;test-with-a-small-duplicate-matrix&quot;&gt;Test with a small duplicate matrix&lt;/h2&gt;
      &lt;div class=&quot;article-table-wrap&quot;&gt;
        &lt;table class=&quot;article-table&quot;&gt;
          &lt;thead&gt;
            &lt;tr&gt;
              &lt;th&gt;Test&lt;/th&gt;
              &lt;th&gt;Expected result&lt;/th&gt;
            &lt;/tr&gt;
          &lt;/thead&gt;
          &lt;tbody&gt;
            &lt;tr&gt;
              &lt;td&gt;Same source ID delivered twice&lt;/td&gt;
              &lt;td&gt;One CRM record; the replay is stopped or attached without another create&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Different source ID, same normalized email&lt;/td&gt;
              &lt;td&gt;Existing contact updated according to field rules&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Same phone with different formatting&lt;/td&gt;
              &lt;td&gt;One candidate after country-aware normalization&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Same name, different email and phone&lt;/td&gt;
              &lt;td&gt;New record or manual review, never an automatic merge by name&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Email matches A, phone matches B&lt;/td&gt;
              &lt;td&gt;Conflict branch with both record IDs visible&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;Two identical executions started together&lt;/td&gt;
              &lt;td&gt;One destination record because the final write enforces uniqueness&lt;/td&gt;
            &lt;/tr&gt;
            &lt;tr&gt;
              &lt;td&gt;CRM write fails&lt;/td&gt;
              &lt;td&gt;No success alert and no ledger row marked complete&lt;/td&gt;
            &lt;/tr&gt;
          &lt;/tbody&gt;
        &lt;/table&gt;
      &lt;/div&gt;

      &lt;h2 id=&quot;common-mistakes&quot;&gt;Common mistakes&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;Comparing raw email or phone values without normalization.&lt;/li&gt;
        &lt;li&gt;Using name as a unique key.&lt;/li&gt;
        &lt;li&gt;Assuming a source submission ID identifies the same person across every channel.&lt;/li&gt;
        &lt;li&gt;Dropping duplicates without recording the new campaign, form, message, or timestamp.&lt;/li&gt;
        &lt;li&gt;Overwriting verified CRM fields with blank or lower-confidence form values.&lt;/li&gt;
        &lt;li&gt;Running search and create concurrently without a destination uniqueness control.&lt;/li&gt;
        &lt;li&gt;Using a temporary in-workflow list as the only long-term duplicate barrier.&lt;/li&gt;
      &lt;/ul&gt;

      &lt;h2 id=&quot;useful-questions-before-publishing&quot;&gt;Useful questions before publishing&lt;/h2&gt;
      &lt;h3&gt;Can Remove Duplicates replace a CRM lookup?&lt;/h3&gt;
      &lt;p&gt;
        No. It is useful for repeated items and remembered values, but it does not understand an existing customer record, alternate email, shared phone, merge history, or field ownership.
      &lt;/p&gt;
      &lt;h3&gt;Should email or phone be the main key?&lt;/h3&gt;
      &lt;p&gt;
        Use the strongest verified identifier your process reliably collects. Email is often the simplest contact key. Phone can be useful after country-aware normalization. Keep a stable source ID for replay protection even when email is the CRM match key.
      &lt;/p&gt;
      &lt;h3&gt;Should a duplicate lead be discarded?&lt;/h3&gt;
      &lt;p&gt;
        Usually not. The person may have submitted a new service request or responded to a different campaign. Reuse the contact record, then preserve the new submission as an activity, note, deal, or source event.
      &lt;/p&gt;

      &lt;h2 id=&quot;privacy-and-operating-rules&quot;&gt;Privacy and operating rules&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;Store only the identity fields needed for matching and follow-up.&lt;/li&gt;
        &lt;li&gt;Restrict Data Tables, execution data, and CRM credentials to the responsible project members.&lt;/li&gt;
        &lt;li&gt;Set retention rules for rejected and ambiguous records.&lt;/li&gt;
        &lt;li&gt;Do not place full lead payloads in chat alerts when a secure CRM link is enough.&lt;/li&gt;
        &lt;li&gt;Document who resolves conflicts and how quickly the review queue should be checked.&lt;/li&gt;
      &lt;/ul&gt;
      &lt;p&gt;
        For retries around state-changing API calls, use the separate &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/n8n-retry-failed-api-requests-without-duplicates&quot;&gt;duplicate-safe n8n API retry pattern&lt;/a&gt;. That guide protects one operation from being repeated. This guide protects CRM identity across leads and sources.
      &lt;/p&gt;

      &lt;h2 id=&quot;sources-checked&quot;&gt;Sources checked&lt;/h2&gt;
      &lt;ul&gt;
        &lt;li&gt;&lt;a href=&quot;https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.removeduplicates/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;n8n Remove Duplicates operations, scope, history, and default history size&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://docs.n8n.io/data/data-tables/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;n8n Data Tables uses, access, and storage limitations&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.datatable/rows/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;n8n Data Table row checks and upsert operation&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://docs.n8n.io/integrations/builtin/app-nodes/n8n-nodes-base.hubspot/&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;n8n HubSpot contact search and create/update operations&lt;/a&gt;&lt;/li&gt;
        &lt;li&gt;&lt;a href=&quot;https://developers.hubspot.com/docs/api-reference/latest/crm/objects/contacts/guide&quot; target=&quot;_blank&quot; rel=&quot;noopener nofollow&quot;&gt;HubSpot contact identifiers and batch upsert behavior&lt;/a&gt;&lt;/li&gt;
      &lt;/ul&gt;

      &lt;div class=&quot;article-referral-card&quot;&gt;
        &lt;div&gt;
          &lt;p class=&quot;article-referral-kicker mono&quot;&gt;n8n Cloud for small teams&lt;/p&gt;
          &lt;p class=&quot;cta-h&quot;&gt;Test the duplicate guard without maintaining a server&lt;/p&gt;
          &lt;p&gt;n8n Cloud is the simplest place to build this workflow if you want to focus on the lead logic instead of hosting. Affiliate disclosure: I may earn a commission if you sign up through this link, at no extra cost to you.&lt;/p&gt;
        &lt;/div&gt;
        &lt;a href=&quot;https://n8n.partnerlinks.io/6mg2xng7s1m6&quot; target=&quot;_blank&quot; rel=&quot;sponsored noopener nofollow&quot; class=&quot;btn btn-primary article-referral-button&quot;&gt;Try n8n Cloud&lt;/a&gt;
      &lt;/div&gt;

      &lt;nav class=&quot;article-related&quot; aria-label=&quot;Related reading&quot;&gt;
        &lt;p class=&quot;article-related-h mono&quot;&gt;Keep reading&lt;/p&gt;
        &lt;ul&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/facebook-lead-ads-google-sheets-email-without-zapier&quot;&gt;Facebook Lead Ads to Google Sheets and Email&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/n8n-retry-failed-api-requests-without-duplicates&quot;&gt;Retry Failed n8n API Requests Without Duplicates&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/n8n-error-workflow-telegram-alerts&quot;&gt;Protect n8n Workflows with Error Alerts&lt;/a&gt;&lt;/li&gt;
          &lt;li&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/cases/form-ai-chat-intake-n8n&quot;&gt;Form and AI Chat Intake with n8n&lt;/a&gt;&lt;/li&gt;
        &lt;/ul&gt;
      &lt;/nav&gt;

      &lt;div class=&quot;article-cta&quot;&gt;
        &lt;p class=&quot;cta-h&quot;&gt;Need the CRM identity rules mapped?&lt;/p&gt;
        &lt;p&gt;Send the lead sources, available IDs, CRM, match fields, and examples of known duplicates. I will help define the new, matched, and review paths before the workflow writes production records.&lt;/p&gt;
        &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/#contact&quot; class=&quot;btn btn-primary article-cta-button&quot;&gt;Map the duplicate guard&lt;/a&gt;
      &lt;/div&gt;
&lt;p&gt;&lt;em&gt;Originally published on &lt;a rel=&quot;nofollow&quot; href=&quot;https://floxolab.com/blog/n8n-deduplicate-leads-before-crm&quot;&gt;FloxoLab&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</description>
<category>Other</category>
<guid isPermaLink="true">https://coderlegion.com/25672/how-to-deduplicate-leads-in-n8n-before-they-reach-your-crm</guid>
<pubDate>Sun, 11 Oct 2026 15:50:00 +0000</pubDate>
</item>
<item>
<title>The Nigerian Prince: A Brief History of the Internet's Most Famous Scam</title>
<link>https://coderlegion.com/30016/the-nigerian-prince-a-brief-history-of-the-internets-most-famous-scam</link>
<description>&lt;p&gt;&lt;em&gt;Originally published on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it/blog&quot;&gt;fuck.it blog&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Everyone has had the email. A prince, a general, a dying widow, a bank official with a dead client and no next of kin. Millions of dollars, trapped. You, a complete stranger, are the only person who can help. There will be a small fee.&lt;/p&gt;
&lt;p&gt;It is the most mocked email in history. It has its own punchlines, its own Wikipedia article and its own genre of parody. It also has a proper name: advance-fee fraud, a con in which the victim pays something small to unlock something large that doesn't exist.&lt;/p&gt;
&lt;p&gt;Here's where it came from, why the stories are so hard to believe, what it turned into and what to do if it already got you.&lt;/p&gt;
&lt;h2 id=&quot;tl-dr-3&quot;&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The con is centuries older than email. It circulated on paper as the&lt;br&gt;
Spanish Prisoner letter.&lt;/li&gt;
&lt;li&gt;&quot;419&quot; is a section of the Nigerian criminal code, the one covering&lt;br&gt;
fraud. The name stuck in the 1980s, when economic collapse turned the&lt;br&gt;
scam into an industry.&lt;/li&gt;
&lt;li&gt;One proposed explanation for the absurd stories: a 2012 paper argued&lt;br&gt;
that implausible emails can serve scammers well, by weeding out&lt;br&gt;
everyone except the most promising respondents.&lt;/li&gt;
&lt;li&gt;The country in the story tells you nothing about who actually sent&lt;br&gt;
the message.&lt;/li&gt;
&lt;li&gt;It never went away. A family of related scams grew up around it:&lt;br&gt;
redirected invoices, romance scams and crypto platforms where your&lt;br&gt;
balance only goes up.&lt;/li&gt;
&lt;li&gt;Already paid? Stop, contact your bank or payment provider&lt;br&gt;
immediately, keep everything and report it. Some payments can still&lt;br&gt;
be recovered.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-letter-before-the-email&quot;&gt;The Letter Before the Email&lt;/h2&gt;
&lt;p&gt;Long before anyone had an email address, there was the Spanish Prisoner.&lt;/p&gt;
&lt;p&gt;The setup went like this. A letter arrives from a stranger. A wealthy man of high birth is imprisoned in Spain under a false name. His identity can't be revealed. If you help pay for his release, you'll be rewarded many times over from his hidden fortune. There's also, in many versions, a beautiful daughter.&lt;/p&gt;
&lt;p&gt;Variants are documented back to the era of the French Revolution. The New York Times covered it in 1898 under the headline &quot;An Old Swindle Revived&quot; and it was already old news then. The paper described letters written the way educated foreigners speak English, with the occasional misspelling and an odd turn of phrase.&lt;/p&gt;
&lt;p&gt;The ingredients were all there and haven't changed since: a fortune you can't verify, a stranger who needs you specifically, a reason for secrecy and a modest payment up front against an enormous payoff later.&lt;/p&gt;
&lt;h2 id=&quot;why-nigeria&quot;&gt;Why Nigeria&lt;/h2&gt;
&lt;p&gt;In the 1970s Nigeria was flush with oil money. In the early 1980s the oil price collapsed and the economy went with it. What followed was mass unemployment among educated young people, a currency in freefall and a government widely described as spectacularly corrupt.&lt;/p&gt;
&lt;p&gt;Out of that came the letters. Millions of them, physically mailed around the world, often using counterfeit postage. They arrived with official-looking documents, letterheads from the central bank and occasionally the United Nations. The story was usually the same: money from an overinvoiced government contract or a dead dictator's estate, stuck in an account and needing a foreign partner to move it.&lt;/p&gt;
&lt;p&gt;The scam picked up its nickname from Section 419 of the Nigerian criminal code, the part covering obtaining property by false pretences. In Nigeria the practice became known as &quot;yahoo yahoo.&quot;&lt;/p&gt;
&lt;p&gt;Then came the fax machine, which was cheaper than postage. Then came email, which was cheaper than everything.&lt;/p&gt;
&lt;h2 id=&quot;email-changed-the-arithmetic&quot;&gt;Email Changed the Arithmetic&lt;/h2&gt;
&lt;p&gt;Paper costs money. Every letter is a bet: stamp, envelope, printing. Send a million and you've spent a fortune before anyone replies.&lt;/p&gt;
&lt;p&gt;Email took the cost of sending one more message down to almost nothing, which means a very low success rate can still be profitable. The expense moves elsewhere, into the hours spent on people who reply but never pay.&lt;/p&gt;
&lt;p&gt;That's the real reason the 1990s and 2000s were flooded with princes. Not because the story got better, but because distribution became almost free.&lt;/p&gt;
&lt;p&gt;One thing worth keeping straight: the country named in the story is no guide to who sent it. These messages are routed through compromised machines and services all over the world, and &quot;Nigerian prince&quot; long ago became a template anyone could download. Treat the flag in the letter as part of the costume.&lt;/p&gt;
&lt;h2 id=&quot;the-one-that-actually-worked&quot;&gt;The One That Actually Worked&lt;/h2&gt;
&lt;p&gt;For all the jokes, the amounts involved were sometimes staggering.&lt;/p&gt;
&lt;p&gt;It began with a fax. Between 1995 and 1998, Nelson Sakaguchi, a director at Brazil's Banco Noroeste, sent around $190 million out of the bank's accounts, chasing a promised contract to build a new airport in Abuja. He believed he was greasing the wheels of a Nigerian government deal. Counting interest and costs, the case is usually cited at about $242.5 million.&lt;/p&gt;
&lt;p&gt;Nobody noticed until an audit in early 1998, carried out while the bank was being prepared for sale to Santander. It remains one of the largest advance-fee frauds ever recorded.&lt;/p&gt;
&lt;p&gt;So: a director at a national bank, over three years, for nine figures. The victims of this con were never only the naive.&lt;/p&gt;
&lt;h2 id=&quot;why-the-stories-are-so-implausible&quot;&gt;Why the Stories Are So Implausible&lt;/h2&gt;
&lt;p&gt;Here's the part that sounds like a joke and isn't.&lt;/p&gt;
&lt;p&gt;In 2012, Microsoft researcher Cormac Herley published a paper with the magnificent title &quot;Why do Nigerian Scammers Say They are from Nigeria?&quot; His argument is an economic model rather than a confession from any scammer: implausibility can work in the sender's favor.&lt;/p&gt;
&lt;p&gt;Think of it from the scammer's side. Sending email is nearly free, but replying isn't. Every conversation takes hours of work and most go nowhere. The expensive part of the business is time spent on people who were never going to pay.&lt;/p&gt;
&lt;p&gt;On that model, the opening email functions as a filter. It would need to repel everyone who would eventually back out and keep only the people who might go all the way. A story about a Nigerian prince and twenty million dollars would do that job well: anyone who finds it ridiculous never replies, and the few who don't find it ridiculous have identified themselves as promising prospects.&lt;/p&gt;
&lt;p&gt;It's a theory about incentives, not a proven account of how any particular scam was written. But it's the most convincing explanation anyone has offered for why the most mocked emails on earth never got better.&lt;/p&gt;
&lt;h2 id=&quot;the-people-who-fought-back-by-wasting-their-time&quot;&gt;The People Who Fought Back by Wasting Their Time&lt;/h2&gt;
&lt;p&gt;In 2003, a British man named Michael Berry launched 419eater.com, and a sport was born: scambaiting.&lt;/p&gt;
&lt;p&gt;The idea was to answer the emails and keep the sender busy as long as humanly possible. Baiters invented elaborate characters, fake charities and absurd conditions. The site's famous &quot;trophy room&quot; collected photographs that baiters had persuaded scammers to take as proof of good faith, often holding ridiculous signs. One celebrated bait, later featured on This American Life, ran for about 100 days and involved persuading a scammer to travel across Africa for money that did not exist.&lt;/p&gt;
&lt;p&gt;It's funny. It was also always a bit uncomfortable. Plenty of baiting slid into humiliation of poor people in West Africa by comfortable people in Europe and North America. Sending someone into a conflict zone for a laugh is also hard to defend, whatever they did for a living.&lt;/p&gt;
&lt;p&gt;In 2005, the Ig Nobel Prize for Literature went to the internet entrepreneurs of Nigeria, for enriching world literature with short stories full of rich characters, dramatic plots and money that never arrives.&lt;/p&gt;
&lt;h2 id=&quot;what-it-turned-into&quot;&gt;What It Turned Into&lt;/h2&gt;
&lt;p&gt;The prince still circulates, but the money has mostly moved to quieter formats. These aren't all the same con. They're relatives, built on the same raw material: a trusted-looking story, time pressure and a payment that's hard to claw back.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Business email compromise. No prince. An invoice from a supplier you&lt;br&gt;
actually use, with changed bank details, arriving when you expected&lt;br&gt;
it. The goal isn't to promise you a fortune, it's to redirect a&lt;br&gt;
payment you were already going to make. It's one of the costliest&lt;br&gt;
forms of email fraud there is.&lt;/li&gt;
&lt;li&gt;Romance scams. Months of real conversation, then a crisis. Sometimes&lt;br&gt;
there's a promised payoff, often there's just an emergency and&lt;br&gt;
someone you believe you know.&lt;/li&gt;
&lt;li&gt;Investment and crypto scams. Closest to the original. The fortune&lt;br&gt;
sits in an account you can watch grow and withdrawing it requires a&lt;br&gt;
fee. Then a tax. Then another fee.&lt;/li&gt;
&lt;li&gt;Recovery scams. The cruelest branch. Someone contacts a victim&lt;br&gt;
offering to recover the money they lost, for a fee paid up front.&lt;br&gt;
Lists of people who have already paid once are valuable precisely&lt;br&gt;
because they've already paid once.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;how-to-spot-the-shape&quot;&gt;How to Spot the Shape&lt;/h2&gt;
&lt;p&gt;The stories change. Several signals don't.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An unexpected windfall from someone you didn't know, for reasons you&lt;br&gt;
can't independently check.&lt;/li&gt;
&lt;li&gt;A payment to a stranger to release it. Legitimate inheritances really&lt;br&gt;
can involve taxes and legal costs, but those are handled by an&lt;br&gt;
executor or an institution whose identity you verified yourself. A&lt;br&gt;
prize or a lottery win is different: being asked to pay anything to&lt;br&gt;
claim one is a scam, every time.&lt;/li&gt;
&lt;li&gt;Secrecy. Don't tell the bank. Don't tell your family. Every version&lt;br&gt;
of this works by keeping you away from anyone who would say &quot;that's a&lt;br&gt;
scam.&quot;&lt;/li&gt;
&lt;li&gt;Payment methods that are hard to reverse. Wire transfers, gift cards,&lt;br&gt;
crypto. That's not a coincidence. &lt;/li&gt;
&lt;li&gt;Urgency. A deadline exists so you don't have time to check anything.&lt;/li&gt;
&lt;li&gt;Changed bank details. Any invoice with new account numbers gets a&lt;br&gt;
phone call first, to a number you already had, never the one in the&lt;br&gt;
email.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;if-you-ve-already-paid&quot;&gt;If You've Already Paid&lt;/h2&gt;
&lt;p&gt;This matters more than any of the history above and speed matters.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Stop paying. There is never a final fee. The next request will have a&lt;br&gt;
new and excellent reason.&lt;/li&gt;
&lt;li&gt;Contact your bank or payment provider immediately, whatever you paid&lt;br&gt;
with. Some payments can be stopped, recalled or disputed and the odds&lt;br&gt;
fall with time.&lt;/li&gt;
&lt;li&gt;Keep everything. Emails, headers, account numbers, chat logs,&lt;br&gt;
receipts. Don't delete the correspondence out of embarrassment.&lt;/li&gt;
&lt;li&gt;Report it to your national fraud or consumer protection body and to&lt;br&gt;
the police. Reports are how patterns get traced, even when individual&lt;br&gt;
money doesn't come back.&lt;/li&gt;
&lt;li&gt;Expect a second approach. Someone may offer to recover your money for&lt;br&gt;
a fee. That's the same con, wearing a rescue uniform.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;And for what it's worth: people who fall for this are not stupid. A bank director lost nine figures to it. The con is old because it works on normal human reasoning under time pressure.&lt;/p&gt;
&lt;h2 id=&quot;why-it-keeps-going&quot;&gt;Why It Keeps Going&lt;/h2&gt;
&lt;p&gt;Email filtering has become very good and the crude versions mostly die before you see them. That didn't end the con, because the con was never really about email.&lt;/p&gt;
&lt;p&gt;It's about a person believing a story. The Spanish Prisoner worked by post, by telegram, by fax and by email, and it works now over messaging apps and dating sites. Every time a new channel opens, the same letter walks through the door in new clothes.&lt;/p&gt;
&lt;p&gt;The same offer, for centuries. There is a fortune. It is nearly yours. It needs just one small payment first.&lt;/p&gt;
&lt;h2 id=&quot;where-fuck-it-lands-1&quot;&gt;Where [@fuck.it] Lands&lt;/h2&gt;
&lt;p&gt;Our filtering kills the obvious material before it reaches you, along with phishing, fake invoices and the rest of the daily sewage. That reduces your exposure. It doesn't reduce it to zero and anyone promising otherwise is selling something.&lt;/p&gt;
&lt;p&gt;The hard version has no links, no attachments and no malware. It's a plain message from a real address, properly authenticated, asking a reasonable question. Modern filters look at more than malware: impersonation patterns, unusual correspondents, display names that don't match their addresses. Those signals catch a lot. They don't catch everything and passing SPF, DKIM and DMARC only proves a message came from the domain it claims, not that the request inside it is honest.&lt;/p&gt;
&lt;p&gt;So when money and urgency show up in the same message, slow down and verify through a channel you chose yourself.&lt;/p&gt;
&lt;p&gt;Disclosure: We run &lt;a rel=&quot;nofollow&quot; href=&quot;https://fuck.it&quot;&gt;fuck.it, an email service&lt;/a&gt;, so we see a lot of this in the filters. Make of that what you will.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/30016/the-nigerian-prince-a-brief-history-of-the-internets-most-famous-scam</guid>
<pubDate>Tue, 06 Oct 2026 14:52:59 +0000</pubDate>
</item>
<item>
<title>IMAP vs POP3: Which One Should You Actually Use?</title>
<link>https://coderlegion.com/29766/imap-vs-pop3-which-one-should-you-actually-use</link>
<description>&lt;p&gt;Somewhere in every mail app's setup screen there's a question most people answer by guessing: IMAP or POP3?&lt;/p&gt;
&lt;p&gt;If you guessed wrong, you probably found out later. Your phone showed emails your laptop had never heard of. You deleted something on one device and it lived on, undead, on another. Or you replaced your laptop and ten years of mail went to the recycling center with the old one.&lt;/p&gt;
&lt;p&gt;Here's what the two actually do, which one you want and the one situation where the old one still earns its place.&lt;/p&gt;
&lt;h2 id=&quot;tl-dr-4&quot;&gt;TL;DR&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;IMAP keeps your mail on the server and syncs it to every device. Read&lt;br&gt;
it on your phone, it's read on your laptop. Use it by default.&lt;/li&gt;
&lt;li&gt;POP3 downloads your mail to one device and usually deletes it from&lt;br&gt;
the server. Simple, offline, single-device.&lt;/li&gt;
&lt;li&gt;Neither one sends mail. That's SMTP's job, and you need it either&lt;br&gt;
way.&lt;/li&gt;
&lt;li&gt;Use POP3 only if you read mail on one computer, want your archive&lt;br&gt;
stored locally and are prepared to back it up yourself.&lt;/li&gt;
&lt;li&gt;Gmail's POP news is about Gmail fetching other accounts, not about&lt;br&gt;
your mail app. Apps can still connect to Gmail with either protocol.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-post-office-vs-the-filing-cabinet&quot;&gt;The Post Office vs. the Filing Cabinet&lt;/h2&gt;
&lt;p&gt;The names give it away.&lt;/p&gt;
&lt;p&gt;POP stands for Post Office Protocol, and it works like a post office box. You go in, empty the box and take everything home. What happens to the letters after that is your business. The post office neither knows nor cares.&lt;/p&gt;
&lt;p&gt;IMAP, the Internet Message Access Protocol, is more like a filing cabinet that stays at the post office. You can read letters there, sort them into drawers, flag the important ones and leave everything in place. Come back through a different door with a different key and you'll find the same cabinet in the same state.&lt;/p&gt;
&lt;p&gt;That's the whole difference. Everything else follows from where the mail lives.&lt;/p&gt;
&lt;p&gt;Two rows of devices. In the top row, a phone, laptop and tablet all show the same email inbox. In the bottom row, only the laptop has messages while the phone and tablet are empty.&lt;br&gt;
Same account, two protocols. One of these is why your phone thinks you have no email.&lt;/p&gt;
&lt;h2 id=&quot;pop3-download-and-done&quot;&gt;POP3: Download and Done&lt;/h2&gt;
&lt;p&gt;POP3 does one thing: it fetches the messages in your inbox and hands them to your mail app. It was built for download-and-delete, and the people who maintain the standard have said explicitly that's what it should stay.&lt;/p&gt;
&lt;p&gt;In practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;It only sees your inbox. Folders on the server don't exist as far as&lt;br&gt;
POP3 is concerned.&lt;/li&gt;
&lt;li&gt;Nothing syncs back. Read, flagged, moved, deleted: all of that&lt;br&gt;
happens on your device only.&lt;/li&gt;
&lt;li&gt;&quot;Leave a copy on the server&quot; isn't sync. It helps, but your phone and&lt;br&gt;
laptop each download their own copy and keep their own separate&lt;br&gt;
opinions about it.&lt;/li&gt;
&lt;li&gt;Sent mail stays put. It lives on whichever device you sent it from.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The upside is simplicity. Your mail sits on your own disk, readable offline, independent of the provider.&lt;/p&gt;
&lt;h2 id=&quot;imap-one-mailbox-every-device&quot;&gt;IMAP: One Mailbox, Every Device&lt;/h2&gt;
&lt;p&gt;IMAP was designed in 1986 for exactly the thing POP3 doesn't do: working with a mailbox that stays on the server. The current version, IMAP4rev2, was published in 2021.&lt;/p&gt;
&lt;p&gt;In practice:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Everything stays in sync. Read status, flags, folders, deletions:&lt;br&gt;
change it on one device and every other device agrees.&lt;/li&gt;
&lt;li&gt;All your folders are there, including Sent, Drafts and Archive.&lt;/li&gt;
&lt;li&gt;New device, same mailbox. Sign in and your mail is there. Nothing to&lt;br&gt;
copy.&lt;/li&gt;
&lt;li&gt;Offline still works. Your app keeps a local copy for speed and&lt;br&gt;
offline reading, but the server holds the real thing.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The downside: you depend on the server. Your storage quota applies to everything you keep, and if the provider is down, you're reading whatever your device has stored.&lt;/p&gt;
&lt;h2 id=&quot;neither-one-sends-mail&quot;&gt;Neither One Sends Mail&lt;/h2&gt;
&lt;p&gt;A common source of confusion: IMAP and POP3 only receive. Sending is handled by SMTP, a separate protocol with its own server settings.&lt;/p&gt;
&lt;p&gt;Every mail app asks for both: an incoming server (IMAP or POP3) and an outgoing server (SMTP). If you can receive but not send, check the SMTP settings first.&lt;/p&gt;
&lt;h2 id=&quot;so-which-one-&quot;&gt;So Which One?&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Use IMAP if:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You read mail on more than one device. That's almost everyone with a&lt;br&gt;
phone.&lt;/li&gt;
&lt;li&gt;You want folders, flags and read status to follow you.&lt;/li&gt;
&lt;li&gt;You don't want to lose your mail when a laptop dies.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;POP3 still makes sense if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You read mail on exactly one computer and like it that way.&lt;/li&gt;
&lt;li&gt;You want your archive on your own disk rather than a provider's&lt;br&gt;
server.&lt;/li&gt;
&lt;li&gt;You're up against a storage limit and want the server emptied&lt;br&gt;
regularly.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;There's a privacy argument for POP3 too: mail you've downloaded and deleted from the server isn't sitting there anymore, apart from whatever backups the provider keeps for a while. It's a fair point with a catch. Your computer now holds the only copy. If it's stolen, broken or unencrypted, that's on you. Encrypt the disk and back it up, or your privacy win turns into a data-loss plan.&lt;/p&gt;
&lt;h2 id=&quot;settings-cheat-sheet&quot;&gt;Settings Cheat Sheet&lt;/h2&gt;
&lt;p&gt;Your provider lists its exact server names. The ports are usually standard:&lt;/p&gt;
&lt;p&gt;IMAP: port 993, SSL/TLS&lt;br&gt;
POP3: port 995, SSL/TLS&lt;br&gt;
SMTP: port 465 with SSL/TLS, or 587 with STARTTLS&lt;/p&gt;
&lt;p&gt;Always pick an encrypted option. If your app offers &quot;None&quot; as a security setting, that's the one not to choose. Your password would travel in plain text.&lt;/p&gt;
&lt;h2 id=&quot;switching-from-pop3-to-imap-without-losing-anything&quot;&gt;Switching From POP3 to IMAP Without Losing Anything&lt;/h2&gt;
&lt;p&gt;If you've been on POP3 for years, your old mail probably lives only on your computer. Here's how to move it without an accident:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Back up first. Copy your mail app's data folder or export your&lt;br&gt;
mailbox before you touch anything.&lt;/li&gt;
&lt;li&gt;Add the same address again as an IMAP account alongside the POP3 one.&lt;br&gt;
Don't remove the POP3 account yet.&lt;/li&gt;
&lt;li&gt;Drag your local folders into the IMAP account. That uploads them to&lt;br&gt;
the server. Big archives take a while.&lt;/li&gt;
&lt;li&gt;Check the server copy. Log in to webmail and confirm the folders and&lt;br&gt;
message counts match.&lt;/li&gt;
&lt;li&gt;Only then remove the POP3 account. In some apps, removing an account&lt;br&gt;
also deletes its locally stored mail. That's exactly why steps 1 and&lt;br&gt;
4 come first.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;about-gmail-dropping-pop-&quot;&gt;About Gmail &quot;Dropping POP&quot;&lt;/h2&gt;
&lt;p&gt;You may have read that Gmail is dropping POP. That's about Gmail's own &quot;Check mail from other accounts&quot; feature, which used POP to pull mail from other providers into Gmail. It stopped taking new users after the first quarter of 2026 and ends completely in January 2027.&lt;/p&gt;
&lt;p&gt;It doesn't affect mail apps connecting to Gmail. Google says third-party apps can still reach Gmail over POP or IMAP. POP3 as a protocol isn't going anywhere. It's just losing one of its bigger fans.&lt;/p&gt;
&lt;p&gt;The full story is in our guide to Gmail's Send As changes.&lt;/p&gt;
&lt;h2 id=&quot;where-fuck-it-lands-2&quot;&gt;Where [@fuck.it] Lands&lt;/h2&gt;
&lt;p&gt;Every [@fuck.it] account includes IMAP, POP3 and SMTP, so the choice is yours. We recommend IMAP: it keeps your phone, laptop and webmail in sync, so whatever you do in one place shows up everywhere else.&lt;/p&gt;
&lt;p&gt;If you prefer POP3, that works too. Just remember that mail downloaded and deleted from the server won't be in your webmail anymore, and your device holds the only copy. Back it up.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/29766/imap-vs-pop3-which-one-should-you-actually-use</guid>
<pubDate>Sun, 04 Oct 2026 21:12:52 +0000</pubDate>
</item>
<item>
<title>Why your cold emails are landing in spam (and how to actually fix it)</title>
<link>https://coderlegion.com/29229/why-your-cold-emails-are-landing-in-spam-and-how-to-actually-fix-it</link>
<description>&lt;p&gt;You wrote a good email. You checked the spelling. You hit send on 200 of them this morning. And somehow, most of them are sitting in a folder nobody opens.&lt;/p&gt;
&lt;p&gt;If you have ever wondered why your emails go to spam with no warning and no explanation, you are not imagining it and you are not alone. Cold email deliverability is not one setting you flip on. It is six or seven small things, and mailbox providers do not tell you which one you got wrong. This guide walks through every real cause, in the order worth checking, with a free way to test each one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Quick answer&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Most cold email lands in spam for one of six reasons: a missing or broken SPF, DKIM or DMARC record; a new domain or inbox that never warmed up; wording that trips spam filters; sending too many emails too fast from too few accounts; a bounce or complaint rate that is already too high; or no real one-click unsubscribe. Fix the technical record first, then warm up, then watch your pace and your numbers.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;1. Your SPF, DKIM or DMARC record is missing or broken&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;This is the most common cause, and the easiest to check.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;SPF (Sender Policy Framework)&lt;/strong&gt; is a DNS TXT record that lists which mail servers are allowed to send email for your domain. When a message arrives, the receiving server looks at the envelope sender domain, the address used in the SMTP MAIL FROM command, fetches the SPF record for that domain, and checks whether the sending IP is listed. If it is not, and the record ends in -all, the message typically fails and gets rejected or spam foldered. SPF records also have a hard limit of 10 DNS lookups. Stack enough include: statements from different tools and you can quietly blow past that limit without any error message.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DKIM (DomainKeys Identified Mail)&lt;/strong&gt; adds a cryptographic signature to every message you send. The receiving server checks that signature against a public key published in your DNS. If the message was altered in transit, or the signature does not match, DKIM fails.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DMARC (Domain-based Message Authentication, Reporting and Conformance)&lt;/strong&gt; is the layer that ties the two together. It tells receiving servers what to do when SPF or DKIM fails on a message claiming to be from your domain, and it is checked against the visible From header, the address a recipient actually sees, not the hidden envelope address SPF checks. A domain can pass SPF and still get flagged if DMARC alignment fails.&lt;/p&gt;
&lt;p&gt;Most people set up SPF once, when they first configure their sender, and never check it again. Then they add a new tool, a new subdomain, or a new sending platform six months later and the record silently breaks.&lt;/p&gt;
&lt;p&gt;Check yours for free: &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/spf-checker?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=spf-checker-inline&quot;&gt;SPF checker&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/dkim-checker?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=dkim-checker-inline&quot;&gt;DKIM checker&lt;/a&gt; · &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/dmarc-checker?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=dmarc-checker-inline&quot;&gt;DMARC checker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2. You're sending from a domain or inbox that never warmed up&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;A brand-new domain, or a new mailbox on an old domain, has no sending history. Mailbox providers do not know if you are a real person or a spam operation on day one, so they place mail from unknown senders with extra caution, regardless of how clean your SPF and DKIM are.&lt;br&gt;
A gradual warmup, typically 2 to 4 weeks, spread across a slowly increasing daily volume, is what builds that reputation before you send at full scale. Skip it and send 500 cold emails from a domain that is three days old, and you will likely see most of them land in spam even though nothing is technically misconfigured.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Build a warmup schedule for your target volume:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/warmup-schedule?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=warmup-schedule-inline&quot;&gt;Warmup schedule generator&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;3. Your email reads like spam to content filters&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Spam filters score the actual words, formatting and structure of your message, separately from your domain's reputation. All caps in a subject line, certain phrases mailbox providers associate with spam, excessive links, image-only bodies, or a mismatch between your display name and your actual sending domain, all raise that score.&lt;/p&gt;
&lt;p&gt;None of this is guesswork you have to do by eye. A spam word checker scans your subject and body against known trigger patterns before you send, the same category of check a filter would run on the other end.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Scan your draft before sending:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/spam-check?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=spam-check-inline&quot;&gt;Spam word checker&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;4. You're sending too many emails, too fast, from too few accounts&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Every mailbox provider enforces a sending cap, and it exists for exactly this reason: a sudden burst of outbound mail from one account is the clearest signal of automated sending a filter can see. Google Workspace paid accounts, for example, are capped at 2,000 messages per user per 24 hours, and that is a ceiling, not a target. All providers can throttle you below their published cap if your bounce rate climbs above roughly 5 percent or your complaint rate above roughly 0.1 percent, so the practical safe volume is often lower than the number on the page.&lt;/p&gt;
&lt;p&gt;Spacing sends at a human pace, and rotating across multiple sender accounts instead of pushing everything through one, keeps you well inside those limits instead of testing them.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;See the real caps for your provider:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/sending-limits?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=sending-limits-inline&quot;&gt;ESP sending limits reference&lt;/a&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Your bounce or complaint rate is already too high&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;This compounds every other problem on this list. A high bounce rate usually means your list has stale or invalid addresses. A high complaint rate means real people are marking your mail as spam, which mailbox providers weight far more heavily than a simple unsubscribe. Once either number climbs, providers start routing more of your mail to spam by default, on top of anything else already working against you, and that reputation damage does not reset the moment you fix the underlying cause.&lt;/p&gt;
&lt;p&gt;Verifying your list before you send, and keeping an eye on your infrastructure score as a whole, catches this before it becomes a reputation problem.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Check your overall score:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/email-grader?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=email-grader-inline&quot;&gt;Email infrastructure grader&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;6. You don't have a working one-click unsubscribe&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Gmail and Yahoo both require bulk senders to support one-click unsubscribe (RFC 8058), and mail that does not comply gets penalized independent of everything else. Beyond the compliance angle, a real unsubscribe link reduces the single strongest negative signal you can send: someone hitting spam instead, because leaving your list was harder than that one click.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;The six-cause checklist&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Broken SPF, DKIM or DMARC.&lt;/strong&gt; Check it with a free checker, takes seconds. Fix it by correcting the DNS TXT records with your domain host.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No warmup on a new domain or inbox.&lt;/strong&gt; Check it by comparing domain or inbox age against your sending volume. Fix it with a 2 to 4 week gradual warmup schedule.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Spam-triggering wording.&lt;/strong&gt; Check it by running your draft through a free spam word scanner. Fix it by rewriting the subject line and any flagged phrases.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Sending too fast from too few accounts.&lt;/strong&gt; Check it by comparing your volume to your provider's caps. Fix it by throttling sends and rotating sender accounts.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;High bounce or complaint rate.&lt;/strong&gt; Check it by verifying your list and reviewing your infrastructure score. Fix it by cleaning your list and slowing down while you rebuild reputation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;No real unsubscribe.&lt;/strong&gt; Check it by clicking it yourself. Fix it by adding a one-click unsubscribe that complies with RFC 8058.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Frequently asked questions&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why do my emails go to spam even though I didn't do anything wrong?&lt;/strong&gt; Deliverability is rarely one mistake. A domain can have a correct SPF record and still get spam foldered because of sending volume, wording, or a stale SPF record that broke after you added a new tool months ago. Check all six causes above rather than assuming it is just one.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What is the difference between SPF, DKIM and DMARC?&lt;/strong&gt; SPF authorizes which servers can send for your domain. DKIM cryptographically signs the message so it cannot be altered in transit without detection. DMARC is the policy layer that ties both together and tells receiving servers what to do when either check fails, evaluated against the domain a recipient actually sees in their inbox.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How long does email warmup take?&lt;/strong&gt; Typically 2 to 4 weeks of gradually increasing volume before sending at full scale, though the right length depends on how much daily volume you are warming up toward.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;How many cold emails can I send per day without hurting deliverability?&lt;/strong&gt; It depends on your provider and your account's age and reputation, not a single universal number. Google Workspace paid accounts cap at 2,000 per user per 24 hours, but providers throttle well below their published cap once bounce rate or complaint rate climbs, so the safe practical number is usually lower than the ceiling.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Is there a free way to test cold email deliverability before sending a full campaign?&lt;/strong&gt; Yes. Checking SPF, DKIM and DMARC, scanning your draft for spam-triggering wording, and reviewing your infrastructure as a whole are all free checks you can run before a campaign goes out, rather than finding out after open rates come back low.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Where to start&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;If you have not checked your domain in the last few months, start with SPF, DKIM and DMARC. It is the fastest of the six to check and the most common cause of silent, unexplained spam foldering.&lt;/p&gt;
&lt;p&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=cta-primary-home&quot;&gt;EmailQo&lt;/a&gt; checks your domain, your sending account and every message you write before it sends, then sends at a safe, human pace instead of leaving that up to guesswork. &lt;a rel=&quot;nofollow&quot; href=&quot;https://emailqo.com/signup?utm_source=medium&amp;amp;utm_medium=blog&amp;amp;utm_campaign=why-cold-email-goes-to-spam&amp;amp;utm_content=cta-primary-signup&quot;&gt;Start a 7-day free trial&lt;/a&gt;, no card needed.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/29229/why-your-cold-emails-are-landing-in-spam-and-how-to-actually-fix-it</guid>
<pubDate>Wed, 30 Sep 2026 11:22:42 +0000</pubDate>
</item>
<item>
<title>Building Email Aliases with Amazon SES: Lessons from EpicMail.org</title>
<link>https://coderlegion.com/27964/building-email-aliases-with-amazon-ses-lessons-from-epicmail-org</link>
<description>&lt;p&gt;You create an email address for a project. A month later, the project ends, but the email keeps coming.&lt;/p&gt;
&lt;p&gt;Having a separate address helped you organize the mail. Being able to switch that address off would make it much more useful.&lt;/p&gt;
&lt;p&gt;That is the idea behind managed aliases in EpicMail. Instead of giving users another mailbox to maintain, we wanted to give them more control over the addresses feeding the mailbox they already have.&lt;/p&gt;
&lt;p&gt;I'm Serge, the founder of EpicMail. We use Amazon SES for our built-in email service. Building aliases around it led to some useful product and engineering lessons, especially about forwarding, identity, and what a successful send actually means.&lt;/p&gt;
&lt;h3 id=&quot;decide-what-an-alias-promises&quot;&gt;Decide what an alias promises&lt;/h3&gt;
&lt;p&gt;Consider these example addresses:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-text&quot;&gt;john+project [AT] epicmail.org
john+shopping [AT] epicmail.org
john+newsletters [AT] epicmail.org
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;They all belong to the same base mailbox, but each can represent a different relationship. A project has an end date. A shopping address might become noisy. Newsletters might be more useful in another account.&lt;/p&gt;
&lt;p&gt;We chose aliases that users explicitly create and manage. Once created, an alias can receive mail, appear as the sending address, show activity, be blocked, or forward to another connected account the user owns.&lt;/p&gt;
&lt;p&gt;An arbitrary suffix does not automatically become an active EpicMail address. That is a deliberate product choice: the aliases area should show the addresses the user has chosen to use.&lt;/p&gt;
&lt;p&gt;There is also a privacy distinction worth making clear. Plus addresses expose the base address. They are useful for organization and control, but they are not anonymous email masks. Someone who sees &lt;code&gt;john+shopping [AT] epicmail.org&lt;/code&gt; can also see &lt;code&gt;john&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&quot;know-what-ses-provides&quot;&gt;Know what SES provides&lt;/h3&gt;
&lt;p&gt;SES gives developers sending and receiving capabilities. The user experience around an alias is something the application still has to define.&lt;/p&gt;
&lt;p&gt;For straightforward sending, a verified domain identity can cover addresses beneath that domain without individually verifying each address. AWS documents the details and exceptions in its &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/ses/latest/dg/creating-identities.html&quot;&gt;identity verification guide&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Receiving is a separate setup. It requires a supported receiving region, the appropriate MX records, receipt rules, and permissions for the resources involved. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/ses/latest/dg/receiving-email-receipt-rules-console-walkthrough.html&quot;&gt;AWS receipt-rule walkthrough&lt;/a&gt; covers those pieces.&lt;/p&gt;
&lt;p&gt;Those capabilities make a feature like this possible. They do not decide whether an alias should work automatically, which account should receive a forward, or what a user should see after blocking an address.&lt;/p&gt;
&lt;p&gt;Writing down those behaviors before building the screens makes the implementation much easier to reason about.&lt;/p&gt;
&lt;h3 id=&quot;test-the-whole-conversation&quot;&gt;Test the whole conversation&lt;/h3&gt;
&lt;p&gt;Receiving a message is only the start. A user also expects to reply without accidentally switching identities.&lt;/p&gt;
&lt;p&gt;For an alias feature, a useful acceptance test is a complete conversation:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Send a message to the alias from another mailbox.&lt;/li&gt;
&lt;li&gt;Open it and reply using the alias.&lt;/li&gt;
&lt;li&gt;Check the address the other person sees.&lt;/li&gt;
&lt;li&gt;Reply back and confirm the conversation returns to the intended mailbox.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Do the same with a message sent directly from the alias. It is easy to make the compose selector look correct while overlooking what happens at the other end.&lt;/p&gt;
&lt;p&gt;BCC deserves a test too. The visible &lt;code&gt;To&lt;/code&gt; and &lt;code&gt;Cc&lt;/code&gt; headers do not describe every legitimate delivery. AWS distinguishes envelope recipients from message headers in its &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/ses/latest/dg/receiving-email-notifications-contents.html&quot;&gt;receiving-notification documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;These are useful tests even if you use a different email provider. The recipient experiences the entire exchange, not just your compose window.&lt;/p&gt;
&lt;h3 id=&quot;forwarding-changes-the-inbox-experience&quot;&gt;Forwarding changes the inbox experience&lt;/h3&gt;
&lt;p&gt;Suppose someone forwards an alias to another account they have also connected to EpicMail. If both copies remain in their inboxes, a unified view can show the same message twice.&lt;/p&gt;
&lt;p&gt;The forward worked, but the resulting experience is annoying.&lt;/p&gt;
&lt;p&gt;We added an auto-archive option alongside alias forwarding. It lets the user keep the original stored in the EpicMail mailbox while clearing it from Inbox after the forward is accepted for sending. Archiving preserves the message without keeping it in the way.&lt;/p&gt;
&lt;p&gt;It also makes the setting easier to explain. The user chooses where they want to read the message, while retaining a copy in the original mailbox.&lt;/p&gt;
&lt;p&gt;A forwarding feature should answer that practical question, not leave the user to discover the duplicate-copy problem afterward.&lt;/p&gt;
&lt;h3 id=&quot;use-honest-status-language&quot;&gt;Use honest status language&lt;/h3&gt;
&lt;p&gt;Email has more than one meaning of &quot;sent.&quot;&lt;/p&gt;
&lt;p&gt;Your sending service can accept a message before the destination server receives it. Even acceptance by a destination server does not guarantee that a person will find it in their inbox or read it.&lt;/p&gt;
&lt;p&gt;SES provides separate &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/ses/latest/dg/monitor-sending-activity-using-notifications-sns.html&quot;&gt;delivery, bounce, and complaint notifications&lt;/a&gt;. Those events help describe different outcomes; they should not be collapsed into an unsupported promise that every accepted message reached a person's inbox.&lt;/p&gt;
&lt;p&gt;This affects product language as much as infrastructure. A count of forwarded messages needs a clear meaning. An error needs to tell the user whether they should take action. A success message should describe the stage the application actually knows about.&lt;/p&gt;
&lt;p&gt;For our auto-archive option, the boundary is acceptance for sending. It is not a guarantee of final delivery, and a later bounce does not automatically restore an already archived original. That is a useful limitation to state plainly.&lt;/p&gt;
&lt;h3 id=&quot;treat-suppression-as-part-of-deliverability&quot;&gt;Treat suppression as part of deliverability&lt;/h3&gt;
&lt;p&gt;SES suppression lists are another reason an address can look valid without a message being delivered as expected.&lt;/p&gt;
&lt;p&gt;AWS distinguishes bounce and complaint reasons, and its account-level suppression list applies to an AWS account in a particular region. The &lt;a rel=&quot;nofollow&quot; href=&quot;https://docs.aws.amazon.com/ses/latest/dg/sending-email-suppression-list.html&quot;&gt;suppression-list documentation&lt;/a&gt; explains the behavior and available controls.&lt;/p&gt;
&lt;p&gt;For developers, the lesson is to understand the reason and scope before changing suppression settings. A complaint carries different meaning from a delivery failure. Removing an entry is not a universal fix for deliverability, and changing your own account's list does not control another sender's system.&lt;/p&gt;
&lt;p&gt;This is part of the operational knowledge needed around email features, even when the interface itself is small.&lt;/p&gt;
&lt;h3 id=&quot;make-control-easy-to-find&quot;&gt;Make control easy to find&lt;/h3&gt;
&lt;p&gt;A useful aliases screen should answer ordinary questions quickly:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;What did I create this address for?&lt;/li&gt;
&lt;li&gt;Is it still active?&lt;/li&gt;
&lt;li&gt;Where does its mail go?&lt;/li&gt;
&lt;li&gt;Has it been used?&lt;/li&gt;
&lt;li&gt;How do I stop receiving mail through it?&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;In EpicMail, aliases have an area for management and activity, with search and paging as the list grows. The sending identity is available from the compose window, where that choice belongs.&lt;/p&gt;
&lt;p&gt;The aliases share the original mailbox's received-message allowance. Creating more addresses does not create additional mailboxes or additional allowances. Keeping that relationship clear avoids surprises later.&lt;/p&gt;
&lt;h3 id=&quot;why-we-added-this-to-epicmail&quot;&gt;Why we added this to EpicMail&lt;/h3&gt;
&lt;p&gt;EpicMail brings existing accounts into one place: &lt;strong&gt;A unified inbox for Gmail, Outlook, Yahoo, iCloud, IMAP, and POP3.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Managed aliases add another way to organize incoming mail, specifically through the optional paid &lt;code&gt;@epicmail.org&lt;/code&gt; inbox. They are included with that inbox without a separate fee per alias, and share its 5,000-message received allowance per usage period. This feature does not create aliases at a user's connected Gmail, Outlook, or other provider account.&lt;/p&gt;
&lt;p&gt;There is a walkthrough on the &lt;a rel=&quot;nofollow&quot; href=&quot;https://epicmail.org/email-aliases?utm_source=coderlegion&amp;amp;utm_medium=referral&amp;amp;utm_campaign=epicmail_aliases_2026&amp;amp;utm_content=ses_aliases_article&quot;&gt;EpicMail email aliases page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The design question I would leave other developers with is this: when someone no longer wants to use an address, how easily can they take control of it? That answer can make an alias much more useful than a different spelling of the same inbox.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27964/building-email-aliases-with-amazon-ses-lessons-from-epicmail-org</guid>
<pubDate>Mon, 21 Sep 2026 14:02:27 +0000</pubDate>
</item>
<item>
<title>What Email Marketing Means for Customer Loyalty</title>
<link>https://coderlegion.com/27491/what-email-marketing-means-for-customer-loyalty</link>
<description>&lt;p&gt;Building strong customer relationships is one of the most important goals for any growing business. Customers are more likely to stay with a company when they feel valued, informed, and connected to the brand. This is where &lt;strong&gt;&lt;a rel=&quot;nofollow&quot; href=&quot;https://Cleartwo.co.uk/email-marketing-birmingham&quot;&gt;Email Marketing Birmingham&lt;/a&gt;&lt;/strong&gt; can play an important role. By delivering useful and relevant messages directly to customers, businesses can maintain regular communication and create experiences that encourage people to return. A thoughtful email strategy can turn occasional buyers into loyal customers while helping businesses build trust over time.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Builds Strong Customer Relationships&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer loyalty does not happen after a single purchase. It develops through consistent communication and positive experiences. Email Marketing allows businesses to stay connected with customers even when they are not actively shopping. Regular messages can remind customers about the brand and show that the business understands their interests.&lt;br&gt;
When customers receive useful information rather than constant sales promotions, they are more likely to appreciate the communication. Helpful tips, product information, company updates, and personalised recommendations can make customers feel that the brand is interested in providing value instead of simply making a sale.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Keeps Customers Engaged&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer engagement is essential for maintaining long-term relationships. People can easily forget about a business when they have not interacted with it for a long time. Email Marketing provides a simple way to keep the brand visible without requiring customers to visit the website regularly.&lt;br&gt;
Businesses can use newsletters, special updates, seasonal content, and useful resources to encourage customers to remain connected. When communication is consistent and relevant, customers have more opportunities to interact with the brand and remember it when they are ready to make another purchase.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Creates Personalised Experiences&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customers appreciate communication that feels relevant to their needs. Sending the same message to every customer may not always produce strong results because different people have different interests. Email Marketing makes it possible to divide audiences into groups and create messages based on their preferences, previous purchases, or interactions.&lt;br&gt;
Personalisation can make communication feel more natural and useful. For example, a customer who previously purchased a particular product could receive information about related products or helpful guidance. This approach can improve the overall customer experience and encourage people to continue engaging with the business.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Encourages Repeat Purchases&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer loyalty is closely connected with repeat business. A company that successfully brings existing customers back can build a stronger and more sustainable customer base. Email Marketing can support this goal by reminding customers about products, services, new arrivals, and relevant offers.&lt;br&gt;
A well-timed message can encourage a previous customer to return when they need something similar again. However, successful communication should focus on relevance rather than sending excessive promotional messages. When customers receive offers that genuinely match their interests, they are more likely to respond positively.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Rewards Loyal Customers&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customers like to feel appreciated, especially when they have continued supporting a business. Email Marketing gives companies an effective way to recognise their loyal customers through exclusive offers, early access, special announcements, or personalised rewards.&lt;br&gt;
These benefits can make customers feel that their relationship with the brand has additional value. A simple thank-you message can also make a difference. Showing appreciation helps create positive emotions around the brand and can encourage customers to remain loyal instead of looking for alternatives.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Builds Trust Over Time&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Trust is a major part of customer loyalty. People are more comfortable buying from businesses that communicate clearly and consistently. Email Marketing can help establish this trust by providing customers with accurate information and maintaining a professional communication style.&lt;br&gt;
Businesses can use emails to explain their services, answer common questions, share useful advice, and keep customers informed about important changes. Transparent communication can make customers feel more confident about their decisions and strengthen their relationship with the company.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Supports Customer Retention&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Finding new customers can require significant time and effort, so retaining existing customers is extremely valuable. A strong communication strategy can help businesses remain connected with people who have already shown interest in their products or services. Email Marketing gives companies a direct channel for maintaining these relationships.&lt;br&gt;
Retention messages can include helpful content, reminders, product updates, or information designed around customer interests. When customers continue receiving meaningful communication, they may be less likely to forget the company or move to a competitor.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Makes Communication More Convenient&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Modern customers often prefer communication that is quick and easy to access. Email provides this convenience because customers can read messages whenever it suits them. They do not need to visit a physical location or spend time searching for information.&lt;br&gt;
Email Marketing can also provide customers with important information in one place. Whether the message includes an update, an offer, useful advice, or information about a service, customers can access it from their phones, tablets, or computers. This convenience can contribute to a better overall customer experience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Provides Valuable Customer Insights&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer loyalty strategies become stronger when businesses understand what their audiences want. Email Marketing can provide useful insights through customer interactions. Businesses can learn which types of content receive attention, which offers generate responses, and what information customers appear to find useful.&lt;br&gt;
These insights can help companies improve future communication. Instead of relying entirely on assumptions, businesses can use customer behaviour to create more relevant messages. Over time, this can lead to better engagement and stronger relationships with their audience.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final Words&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Customer loyalty is built through trust, value, consistency, and meaningful communication. Businesses that make customers feel appreciated are more likely to develop long-term relationships and encourage repeat business. Email Marketing provides a practical way to maintain these relationships while delivering useful and personalised content directly to customers.&lt;br&gt;
From increasing engagement and encouraging repeat purchases to rewarding loyal customers and building trust, effective email communication can support many parts of the customer journey. When businesses focus on relevance and quality instead of sending unnecessary messages, their communication becomes more valuable. With the right strategy, email can become an important tool for creating lasting customer loyalty and supporting long-term business growth.&lt;/p&gt;
&lt;p&gt;Visit &lt;a rel=&quot;nofollow&quot; href=&quot;https://coderlegion.com/&quot;&gt;Coder Legion&lt;/a&gt; for more informative blogs.&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/27491/what-email-marketing-means-for-customer-loyalty</guid>
<pubDate>Thu, 17 Sep 2026 09:34:16 +0000</pubDate>
</item>
<item>
<title>Send your first transactional email with BYOC mode</title>
<link>https://coderlegion.com/18451/send-your-first-transactional-email-with-byoc-mode</link>
<description>&lt;p&gt;There is a particular kind of developer frustration that comes from needing to send a single password reset email and ending up three hours deep into AWS documentation. Transactional email should be simple. This post gets you from zero to a working send using SendFleet's BYOC (Bring Your Own Credentials) mode - your own AWS SES account, your domain, your sending reputation.&lt;/p&gt;
&lt;p&gt;What is BYOC and why does it matter?&lt;/p&gt;
&lt;p&gt;Most email APIs route your mail through their own infrastructure. That means your sending reputation lives in a shared pool with thousands of other senders. One bad actor spamming on the same IP range and your deliverability suffers for it. BYOC flips this: SendFleet acts purely as a routing layer, temporarily assuming a role in your AWS account to dispatch email directly through your SES. The email content never touches SendFleet's database. Your reputation is yours alone.&lt;/p&gt;
&lt;p&gt;There are three things you need before you start:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;An AWS account with SES approved for production access (out of sandbox mode)&lt;/li&gt;
&lt;li&gt;A domain you control so you can add DNS records&lt;/li&gt;
&lt;li&gt;Permission to create IAM roles in your AWS account&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Step 1: Create a SendFleet account&lt;/p&gt;
&lt;p&gt;Register at &lt;a rel=&quot;nofollow&quot; href=&quot;https://sendfleet.net/register/&quot;&gt;sendfleet.net/register&lt;/a&gt;. Email verification is required before you can send anything. The Starter plan is free with 50 BYOC emails per month and no credit card required. If you need more volume you can upgrade to the paid BYOC plan at $9/month with no SendFleet-imposed cap.&lt;/p&gt;
&lt;p&gt;Step 2: Create an IAM role in AWS&lt;/p&gt;
&lt;p&gt;This is the step most people overthink. Open your AWS console, navigate to IAM, then Roles, then Create role. Choose &quot;Custom trust policy&quot; when prompted.&lt;/p&gt;
&lt;p&gt;Do not write the trust policy yourself. Go to your SendFleet account settings under the BYOC section and copy the trust policy shown there. It already contains your unique ExternalId — a 48-character random value that prevents anyone else from assuming your role through SendFleet's infrastructure. This protects against what is known as the confused deputy problem (more on that in next week's post).&lt;/p&gt;
&lt;p&gt;The trust policy will look roughly like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;Version&quot;: &quot;2012-10-17&quot;,
  &quot;Statement&quot;: [{
    &quot;Effect&quot;: &quot;Allow&quot;,
    &quot;Principal&quot;: { &quot;AWS&quot;: &quot;arn:aws:iam::SENDFLEET_ACCOUNT:root&quot; },
    &quot;Action&quot;: &quot;sts:AssumeRole&quot;,
    &quot;Condition&quot;: {
      &quot;StringEquals&quot;: {
        &quot;sts:ExternalId&quot;: &quot;YOUR_UNIQUE_EXTERNAL_ID_HERE&quot;
      }
    }
  }]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After setting the trust policy, attach the required SES permissions listed in your SendFleet settings. These cover sending email and verifying domain identities. The role name must be SendFleet-BYOC-Role (exact case-sensitive). &lt;/p&gt;
&lt;p&gt;Step 3: Connect the role to SendFleet&lt;/p&gt;
&lt;p&gt;In your SendFleet dashboard, go to Settings. Paste your IAM Role ARN — it looks like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;arn:aws:iam::123456789012:role/SendFleet-BYOC-Role
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Select the AWS region where your SES account operates. Click Validate and save. SendFleet will attempt to assume the role and verify that your SES account is out of sandbox mode. If the validation fails, double-check that the trust policy ExternalId matches exactly what SendFleet shows in settings.&lt;/p&gt;
&lt;p&gt;Step 4: Add and verify a sending domain&lt;/p&gt;
&lt;p&gt;Go to Dashboard, then Domains, then Add BYOC domain. Enter your root domain - for example acme.com, not mail.acme.com.&lt;/p&gt;
&lt;p&gt;SendFleet uses your assumed IAM role to register the domain identity in your SES account and return the DNS records you need to add. You will see five record types in the dashboard:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Domain ownership TXT record (required)&lt;/li&gt;
&lt;li&gt;Three DKIM CNAME records (all three required)&lt;/li&gt;
&lt;li&gt;SPF TXT record (recommended, not required to send)&lt;/li&gt;
&lt;li&gt;MAIL FROM subdomain MX and SPF records (recommended)&lt;/li&gt;
&lt;li&gt;DMARC TXT record (recommended)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Add the TXT ownership record to your DNS. Once it propagates — usually five to fifteen minutes but sometimes up to an hour — click Verify ownership in the dashboard. Then add all three DKIM CNAMEs and click Verify DKIM. DKIM verification is the gate: you cannot send until it passes.&lt;/p&gt;
&lt;p&gt;Step 5: Generate an API key&lt;/p&gt;
&lt;p&gt;Go to Dashboard, then API Keys, then New key. Name it something clear like &quot;Production&quot; or &quot;Development&quot;. The full secret key is shown exactly once. Copy it immediately and store it in your environment variables or a secrets manager. If you lose it there is no recovery — you generate a new one (*Revoke the lost keys).&lt;/p&gt;
&lt;p&gt;Step 6: Send your first email&lt;/p&gt;
&lt;p&gt;With your domain verified and API key in hand, you can send your first email with a single curl call:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -X POST https://sendfleet.net/api/send/ \
  -H &quot;X-API-Key: YOUR_API_KEY&quot; \
  -H &quot;Content-Type: application/json&quot; \
  -d '{
    &quot;to&quot;: &quot;*Emails are not allowed*&quot;,
    &quot;from_email&quot;: &quot;*Emails are not allowed*&quot;,
    &quot;from_name&quot;: &quot;Acme&quot;,
    &quot;subject&quot;: &quot;Welcome aboard&quot;,
    &quot;message&quot;: &quot;Thanks for signing up!&quot;
  }'
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A 200 OK response means your email has been accepted and queued. Delivery is asynchronous -SendFleet validates the request, places it in the SQS queue, and a background worker dispatches it to your SES account. The response includes a message_id you can use for tracking and a mode field confirming byoc.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &quot;success&quot;: true,
  &quot;message&quot;: &quot;Email queued for delivery via your SES account.&quot;,
  &quot;message_id&quot;: &quot;1a2b3c4d-5e6f-7890-abcd-ef1234567890&quot;,
  &quot;mode&quot;: &quot;byoc&quot;
}
&lt;/code&gt;&lt;/pre&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/18451/send-your-first-transactional-email-with-byoc-mode</guid>
<pubDate>Wed, 20 May 2026 11:48:08 +0000</pubDate>
</item>
<item>
<title>Set Up a Free Professional Email Address With Gmail and Cloudflare. Even If You Don't Own a Domain</title>
<link>https://coderlegion.com/17088/set-free-professional-email-address-with-gmail-and-cloudflare-even-if-you-dont-own-domain</link>
<description>&lt;p&gt;Tired of using a plain &lt;code&gt;@gmail.com&lt;/code&gt; for business, newsletters, portfolios, or professional emails? You can set up unlimited custom email addresses eg:yourname[at]yourdomain.com &lt;strong&gt;completely free, with no monthly fees&lt;/strong&gt; for Google Workspace or similar services.&lt;/p&gt;
&lt;p&gt;This guide became super popular after a viral X (Twitter) thread, but many people get stuck because they don't have a domain yet, or they try the wrong SMTP settings for sending emails.&lt;/p&gt;
&lt;p&gt;This complete beginner-friendly tutorial covers &lt;strong&gt;everything&lt;/strong&gt; from getting your first domain (free or very cheap) → setting up incoming mail with Cloudflare → sending from Gmail. No tech experience needed, follow along step by step.&lt;/p&gt;
&lt;h3 id=&quot;why-this-setup-is-awesome-and-what-to-know-&quot;&gt;Why This Setup Is Awesome (and What to Know)&lt;/h3&gt;
&lt;p&gt;&lt;strong&gt;Pros&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Totally free after you get the domain (domain can cost $0 to $12/year)&lt;/li&gt;
&lt;li&gt;Unlimited email addresses/aliases (e.g., info@, support@, yourname@)&lt;/li&gt;
&lt;li&gt;Emails arrive in your regular Gmail inbox&lt;/li&gt;
&lt;li&gt;Send emails from your custom address directly in Gmail (web, mobile app, etc.)&lt;/li&gt;
&lt;li&gt;Perfect for creators, freelancers, students, indie hackers, or side projects&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Limitations&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Cloudflare handles &lt;strong&gt;receiving&lt;/strong&gt; only, and we use Gmail to &lt;strong&gt;send&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Outgoing emails use Gmail's servers → good deliverability, but not perfect for massive cold emailing (may hit spam folders sometimes)&lt;/li&gt;
&lt;li&gt;Gmail free account limit: \~500 emails/day&lt;/li&gt;
&lt;li&gt;For super high volume or perfect branding, you could add a cheap SMTP service later&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you're just starting, this is one of the best zero-cost setups in 2026.&lt;/p&gt;
&lt;h3 id=&quot;step-0-get-your-domain-name-free-or-super-cheap-options-&quot;&gt;Step 0: Get Your Domain Name (Free or Super Cheap Options)&lt;/h3&gt;
&lt;p&gt;You need a domain name first (like &lt;code&gt;yourname.com&lt;/code&gt;). Here's how to get one easily:&lt;/p&gt;
&lt;h4 id=&quot;option-1-free-for-students-best-if-eligible-&quot;&gt;Option 1: Free for Students (Best if Eligible)&lt;/h4&gt;
&lt;p&gt;If you're a student (university, college, bootcamp, etc.):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://education.github.com/pack&quot;&gt;education.github.com/pack&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Sign up or log in with your GitHub account → verify student status (usually with school email or ID)&lt;/li&gt;
&lt;li&gt;Once approved (usually instant or 1 to 2 days), scroll to the &quot;Domains&quot; section&lt;/li&gt;
&lt;li&gt;Choose an offer:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Namecheap: Free 1-year &lt;code&gt;.me&lt;/code&gt; domain (great for personal sites/emails)&lt;/li&gt;
&lt;li&gt;Name.com: Free 1-year on extensions like &lt;code&gt;.dev&lt;/code&gt;, &lt;code&gt;.app&lt;/code&gt;, &lt;code&gt;.live&lt;/code&gt;, &lt;code&gt;.studio&lt;/code&gt;, &lt;code&gt;.rocks&lt;/code&gt;, etc.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Redeem the offer → follow their instructions to register the domain&lt;/li&gt;
&lt;li&gt;Done! You get a real domain for free for 1 year (renewal is usually cheap afterward).&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;option-2-very-cheap-for-anyone-1-to-10-first-year-&quot;&gt;Option 2: Very Cheap for Anyone (\~$1 to $10 First Year)&lt;/h4&gt;
&lt;p&gt;Popular beginner-friendly registrars with promos (as of February 2026):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Namecheap&lt;/strong&gt; (recommended for simplicity): Often $0.99 to $6.49 for first-year &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.site&lt;/code&gt;, &lt;code&gt;.online&lt;/code&gt;, etc. Use promo codes like &lt;code&gt;99SPECIAL&lt;/code&gt; for 99¢ domains or check current deals at namecheap.com/promos. Free WHOIS privacy included.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Porkbun&lt;/strong&gt;: At-cost pricing, beginner dashboard, often $5 to $10 for &lt;code&gt;.com&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Cloudflare Registrar&lt;/strong&gt; (if you plan to use Cloudflare anyway): At-cost renewals, no markup (\~$10 to $11/year for &lt;code&gt;.com&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Hostinger&lt;/strong&gt; or &lt;strong&gt;Wix&lt;/strong&gt;: Sometimes bundle a free domain for 1 year with cheap hosting (but you don't need hosting here, just the domain).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Steps to register (example with Namecheap):&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://www.namecheap.com&quot;&gt;namecheap.com&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Search for your desired name (e.g., &lt;code&gt;rdjarbeng.com&lt;/code&gt; or &lt;code&gt;mybrand.online&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Add to cart → apply any promo code at checkout&lt;/li&gt;
&lt;li&gt;Create account → pay (credit card, PayPal, etc.)&lt;/li&gt;
&lt;li&gt;After purchase, you'll get login access to manage the domain&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; Choose &lt;code&gt;.com&lt;/code&gt;, &lt;code&gt;.me&lt;/code&gt;, &lt;code&gt;.dev&lt;/code&gt;, or &lt;code&gt;.app&lt;/code&gt; — they look professional and are widely accepted.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;step-1-add-your-domain-to-cloudflare-amp-enable-email-routing-incoming-mail-&quot;&gt;Step 1: Add Your Domain to Cloudflare &amp;amp; Enable Email Routing (Incoming Mail)&lt;/h3&gt;
&lt;p&gt;Cloudflare is free and secure. It will handle receiving emails and forward them to your Gmail.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://dash.cloudflare.com&quot;&gt;dash.cloudflare.com&lt;/a&gt; and sign up for a free account (email + password).&lt;/li&gt;
&lt;li&gt;After logging in, click &lt;strong&gt;Add a site&lt;/strong&gt; (or &lt;strong&gt;Onboard a domain&lt;/strong&gt;).&lt;/li&gt;
&lt;li&gt;Enter your domain (e.g., &lt;code&gt;yourdomain.com&lt;/code&gt;) → Continue.&lt;/li&gt;
&lt;li&gt;Cloudflare scans your existing DNS (if any) → select the &lt;strong&gt;Free plan&lt;/strong&gt; → Continue.&lt;/li&gt;
&lt;li&gt;Cloudflare gives you two &lt;strong&gt;nameservers&lt;/strong&gt; (something like &lt;code&gt;ns1.cloudflare.com&lt;/code&gt; and &lt;code&gt;ns2.cloudflare.com&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Go back to your domain registrar (Namecheap, Porkbun, etc.):&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Find &quot;Nameservers&quot; or &quot;DNS&quot; settings&lt;/li&gt;
&lt;li&gt;Change from default to &lt;strong&gt;Custom&lt;/strong&gt; → paste the two Cloudflare nameservers&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Wait 5 to 60 minutes (sometimes up to 24 hours) for changes to propagate → refresh Cloudflare dashboard until it says &quot;Active&quot;.&lt;/li&gt;
&lt;li&gt;In Cloudflare dashboard → select your domain → go to &lt;strong&gt;Email&lt;/strong&gt; → &lt;strong&gt;Email Routing&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Get started&lt;/strong&gt; or &lt;strong&gt;Enable&lt;/strong&gt; → Cloudflare adds the needed MX records automatically.&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Go to &lt;strong&gt;Email&lt;/strong&gt; → &lt;strong&gt;Routes&lt;/strong&gt; or &lt;strong&gt;Custom addresses&lt;/strong&gt; → &lt;strong&gt;Create address&lt;/strong&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Enter email: e.g., &lt;code&gt;*yourname[at]yourdomain.com*&lt;/code&gt; (or &lt;code&gt;info@&lt;/code&gt;, &lt;code&gt;hello@&lt;/code&gt;, etc.)&lt;/li&gt;
&lt;li&gt;Destination: your real Gmail address (e.g., &lt;code&gt;*yourname[at]gmail.com*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Save&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Test: Send an email to your new custom address → it should appear in Gmail within seconds!&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You can create unlimited addresses, all forwarding to the same Gmail (or different ones).&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3 id=&quot;step-2-prepare-gmail-to-send-must-do-app-password-&quot;&gt;Step 2: Prepare Gmail to Send (Must-Do: App Password)&lt;/h3&gt;
&lt;p&gt;Gmail needs extra security for sending from custom addresses.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Go to &lt;a rel=&quot;nofollow&quot; href=&quot;https://myaccount.google.com/security&quot;&gt;myaccount.google.com/security&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Turn on &lt;strong&gt;2-Step Verification&lt;/strong&gt; if not already enabled (use your phone).&lt;/li&gt;
&lt;li&gt;Search for &lt;strong&gt;App passwords&lt;/strong&gt; → click it.&lt;/li&gt;
&lt;li&gt;Select app: &lt;strong&gt;Mail&lt;/strong&gt;&lt;br&gt;
Select device: &lt;strong&gt;Other&lt;/strong&gt; (name it e.g., &quot;Custom Email&quot;)&lt;/li&gt;
&lt;li&gt;Generate → copy the 16-character password (save it somewhere safe, no spaces).&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;step-3-add-your-custom-email-to-gmail-send-from-it-&quot;&gt;Step 3: Add Your Custom Email to Gmail (Send From It!)&lt;/h3&gt;
&lt;blockquote&gt;&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; Do &lt;strong&gt;not&lt;/strong&gt; use Cloudflare's server for sending. Use Gmail's.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Open Gmail → click the gear icon → &lt;strong&gt;See all settings&lt;/strong&gt; → &lt;strong&gt;Accounts and Import&lt;/strong&gt; tab.&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Send mail as&lt;/strong&gt; → click &lt;strong&gt;Add another email address&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Fill in:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Name: Your name or brand&lt;/li&gt;
&lt;li&gt;Email: &lt;code&gt;*yourname[at]yourdomain.com*&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Uncheck&lt;/strong&gt; &quot;Treat as an alias&quot; → Next&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;SMTP settings:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;SMTP Server: &lt;code&gt;smtp.gmail.com&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Port: &lt;code&gt;587&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Username: Your full Gmail (e.g., &lt;code&gt;*yourname[at]gmail.com*&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Password: The &lt;strong&gt;App Password&lt;/strong&gt; from Step 2&lt;/li&gt;
&lt;li&gt;Use TLS: Yes (usually default)&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;Add Account&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;Gmail sends a verification code to your custom email → it forwards to Gmail inbox.&lt;/li&gt;
&lt;li&gt;Find the code → enter it → verified!&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Now compose emails in Gmail → click the &quot;From&quot; dropdown → choose your custom address.&lt;/p&gt;
&lt;h3 id=&quot;step-4-boost-deliverability-optional-but-helpful-dns-&quot;&gt;Step 4: Boost Deliverability (Optional but Helpful DNS)&lt;/h3&gt;
&lt;p&gt;In Cloudflare DNS → add/update these TXT records:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;SPF&lt;/strong&gt; (prevents spam flags):&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-plain&quot;&gt;v=spf1 include:_spf.mx.cloudflare.net include:_spf.google.com ~all
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  (Name/Host: &lt;code&gt;@&lt;/code&gt;)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DMARC&lt;/strong&gt; (monitor reports):&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code class=&quot;language-plain&quot;&gt;v=DMARC1; p=none; rua=mailto:*yourname[at]gmail.com*
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;  (Name/Host: &lt;code&gt;_dmarc&lt;/code&gt;)&lt;/p&gt;
&lt;p&gt;No DKIM from this free setup, which is normal.&lt;/p&gt;
&lt;h3 id=&quot;testing-amp-tips&quot;&gt;Testing &amp;amp; Tips&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Send test emails to friends → check inbox/spam.&lt;/li&gt;
&lt;li&gt;Set your custom address as default in Gmail if you want.&lt;/li&gt;
&lt;li&gt;Mobile: Works perfectly in Gmail app.&lt;/li&gt;
&lt;li&gt;Stuck on verification: Regenerate App Password (common issue).&lt;/li&gt;
&lt;li&gt;Propagation slow: Wait and refresh, normal for new domains.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;alternatives-if-you-need-more&quot;&gt;Alternatives If You Need More&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Zoho Mail&lt;/strong&gt; free tier: Full features + DKIM (limited storage)&lt;/li&gt;
&lt;li&gt;Paid SMTP (e.g., SMTP2GO free tier) for better sending reputation&lt;/li&gt;
&lt;li&gt;Self-hosted if advanced&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This Cloudflare + Gmail trick is still one of the top free email hacks in 2026. Share your custom email or any questions in the comments below.&lt;/p&gt;
&lt;p&gt;Happy emailing!&lt;/p&gt;
&lt;h4 id=&quot;media-mentions-&quot;&gt;Media mentions:&lt;/h4&gt;
&lt;p&gt;Also posted on &lt;a rel=&quot;nofollow&quot; href=&quot;https://dev.to/rdjarbeng/how-to-get-a-free-professional-custom-domain-email-steps-for-beginners-on-gmail-9pj&quot;&gt;dev.to for Richard Djarbeng&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;PS: Got this email, 5th March, 2026 from someone who was able to follow this tutorial and set up their professional email:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://rdjarbeng.com/assets/images/20260305-123205.png&quot; alt=&quot;Screenshot of an email titled: Note of Appreciation on Insightful Email Setup Tutorial Made Available on rdjarbeng.com&quot; title=&quot;Screenshot of email received by Richard Djarbeng titled: Note of Appreciation on Insightful Email Setup Tutorial Made Available on rdjarbeng.com&quot;&gt;&lt;/p&gt;
&lt;p&gt;Glad to know this post helped someone &lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/17088/set-free-professional-email-address-with-gmail-and-cloudflare-even-if-you-dont-own-domain</guid>
<pubDate>Fri, 08 May 2026 18:17:20 +0000</pubDate>
</item>
<item>
<title>4 new Playwright email templates with shadcn/ui — and how to make shadcn work in email</title>
<link>https://coderlegion.com/13560/4-new-playwright-email-templates-with-shadcn-ui-and-how-to-make-shadcn-work-in-email</link>
<description>&lt;h3 id=&quot;what-is-this-&quot;&gt;What is this?&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;@playwright-labs/reporter-email&lt;/code&gt; is a Playwright reporter that emails your team the test results after each CI run. This release adds 4 new templates built on shadcn/ui.&lt;/p&gt;
&lt;h3 id=&quot;the-core-challenge&quot;&gt;The core challenge&lt;/h3&gt;
&lt;p&gt;shadcn/ui is not email-compatible out of the box. Three things break:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Radix UI&lt;/strong&gt; — shadcn uses Radix for interactive behaviour (Select, Dialog, etc.). Radix calls browser APIs (&lt;code&gt;window&lt;/code&gt;, &lt;code&gt;document&lt;/code&gt;) at import time. &lt;code&gt;@react-email/render&lt;/code&gt; runs in Node.js with none of these.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CSS variables&lt;/strong&gt; — shadcn default config generates &lt;code&gt;hsl(var(--foreground))&lt;/code&gt;. Email clients don't support CSS variables.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;JSX transform conflict&lt;/strong&gt; — in a Playwright project, esbuild replaces React's JSX with Playwright's own internal representation. That breaks &lt;code&gt;@react-email/render&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h4 id=&quot;fixes&quot;&gt;Fixes&lt;/h4&gt;
&lt;p&gt;&lt;strong&gt;Radix:&lt;/strong&gt; Rewrote all primitives as plain HTML. &lt;code&gt;SelectItem&lt;/code&gt; is a &lt;code&gt;&amp;lt;div&amp;gt;&lt;/code&gt; with a conditional &lt;code&gt;✓&lt;/code&gt; span. &lt;code&gt;Button&lt;/code&gt; is an &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tag. No Radix import anywhere.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;CSS variables:&lt;/strong&gt; Set &lt;code&gt;&quot;cssVariables&quot;: false&lt;/code&gt; in &lt;code&gt;components.json&lt;/code&gt;. shadcn then generates &lt;code&gt;bg-slate-900&lt;/code&gt; (concrete value) instead of &lt;code&gt;bg-background&lt;/code&gt; (CSS variable).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;JSX transform:&lt;/strong&gt; Added &lt;code&gt;/* @jsxImportSource react */&lt;/code&gt; pragma to every &lt;code&gt;.tsx&lt;/code&gt; component file. esbuild respects per-file pragma overrides, so React's JSX runtime is used instead of Playwright's.&lt;/p&gt;
&lt;h3 id=&quot;new-templates&quot;&gt;New templates&lt;/h3&gt;
&lt;h4 id=&quot;base-chart-pass-rate-bar&quot;&gt;&lt;code&gt;base-chart&lt;/code&gt; — pass-rate bar&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=11343803965389159841&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;import { PlaywrightReportShadcnChartEmail }
  from &quot;@playwright-labs/reporter-email/templates/shadcn/base-chart&quot;;

&amp;lt;PlaywrightReportShadcnChartEmail result={result} testCases={testCases} &amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Adds a stacked horizontal bar showing the percentage of passed / failed / skipped tests. Pure CSS, no images.&lt;/p&gt;
&lt;h4 id=&quot;base-button-cta-links&quot;&gt;&lt;code&gt;base-button&lt;/code&gt; — CTA links&lt;/h4&gt;
&lt;p&gt;&lt;img src=&quot;https://coderlegion.com/?qa=blob&amp;amp;qa_blobid=14993057654724926920&quot; alt=&quot;&quot;&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;import { PlaywrightReportShadcnButtonEmail }
  from &quot;@playwright-labs/reporter-email/templates/shadcn/base-button&quot;;

&amp;lt;PlaywrightReportShadcnButtonEmail
  result={result}
  testCases={testCases}
  reportUrl=&quot;https://ci.example.com/report/42&quot;
&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A footer with &quot;View Full Report&quot; and optionally &quot;View N Failure(s)&quot;. Buttons are &lt;code&gt;&amp;lt;a&amp;gt;&lt;/code&gt; tags styled with shadcn button variants.&lt;/p&gt;
&lt;h4 id=&quot;base-themes-6-color-themes&quot;&gt;&lt;code&gt;base-themes&lt;/code&gt; — 6 color themes&lt;/h4&gt;
&lt;pre&gt;&lt;code class=&quot;language-tsx&quot;&gt;import { PlaywrightReportShadcnThemesEmail }
  from &quot;@playwright-labs/reporter-email/templates/shadcn/base-themes&quot;;

&amp;lt;PlaywrightReportShadcnThemesEmail result={result} testCases={testCases} theme=&quot;green&quot; &amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Themes: &lt;code&gt;slate&lt;/code&gt; | &lt;code&gt;zinc&lt;/code&gt; | &lt;code&gt;rose&lt;/code&gt; | &lt;code&gt;blue&lt;/code&gt; | &lt;code&gt;green&lt;/code&gt; | &lt;code&gt;orange&lt;/code&gt;. Each changes the accent bar, headings, and row backgrounds.&lt;/p&gt;
&lt;h3 id=&quot;import-only-what-you-need&quot;&gt;Import only what you need&lt;/h3&gt;
&lt;p&gt;Each template is a separate bundle under &lt;code&gt;dist/templates/shadcn/&lt;/code&gt;. Individual imports:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;// Only loads base-select bundle, nothing else
import { PlaywrightReportShadcnSelectEmail }
  from &quot;@playwright-labs/reporter-email/templates/shadcn/base-select&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or use the barrel for multiple templates:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ts&quot;&gt;import {
  PlaywrightReportShadcnChartEmail,
  PlaywrightReportShadcnThemesEmail,
} from &quot;@playwright-labs/reporter-email/templates/shadcn&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Requires &lt;code&gt;&quot;moduleResolution&quot;: &quot;bundler&quot;&lt;/code&gt; in &lt;code&gt;tsconfig.json&lt;/code&gt; to resolve the &lt;code&gt;exports&lt;/code&gt; subpaths.&lt;/p&gt;
&lt;h3 id=&quot;run-the-preview-locally&quot;&gt;Run the preview locally&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;git clone https://github.com/vitalics/playwright-labs
cd playwright-labs &amp;amp;&amp;amp; pnpm install
pnpm --filter @playwright-labs/reporter-email build
cd packages/reporter-email/examples &amp;amp;&amp;amp; pnpm email:preview
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Opens at &lt;code&gt;http://localhost:3000&lt;/code&gt;. Edit any file in &lt;code&gt;emails/&lt;/code&gt; and the server hot-reloads.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;GitHub:&lt;/strong&gt; &lt;a rel=&quot;nofollow&quot; href=&quot;https://github.com/vitalics/playwright-labs&quot;&gt;https://github.com/vitalics/playwright-labs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;npm:&lt;/strong&gt; &lt;code&gt;@playwright-labs/reporter-email&lt;/code&gt;&lt;/p&gt;
</description>
<category>Articles</category>
<guid isPermaLink="true">https://coderlegion.com/13560/4-new-playwright-email-templates-with-shadcn-ui-and-how-to-make-shadcn-work-in-email</guid>
<pubDate>Mon, 30 Mar 2026 13:28:00 +0000</pubDate>
</item>
</channel>
</rss>