What is the “Message-ID”?

Still have a question, spotted an error, or have a better explanation or a source we should cite?

Every email gets a unique ID when it's sent, kind of like a tracking number for a package. That's the Message-ID. It looks like <1234567890.abcdef@yourdomain.com> and lives in the email's headers (not visible to most readers).

Your email server (or ESP) generates the Message-ID automatically when the message leaves. It's how mail systems tell one message from another. Without it, servers can't reliably deduplicate copies of the same email, thread conversations together, or track replies. If you've ever seen the same newsletter land in your inbox twice, a missing or duplicate Message-ID is often the reason.

Format matters. A proper Message-ID has three parts: a unique string (usually a timestamp or random hash), the @ symbol, and your sending domain. Good examples: <20231215143022.abc123@harbormail.io>, <f8e7d6c5@lighthouse.net>. Bad examples: <12345> (no domain), <message@localhost> (generic domain), or just missing entirely.

Most ESPs (Mailchimp, SendGrid, Postmark) handle this correctly by default. You rarely need to touch it. But if you're sending through a custom SMTP setup or a poorly configured server, you might generate malformed Message-IDs (or none at all). That raises red flags. Spam filters notice. Mailbox providers notice. It won't tank your deliverability on its own, but it's one more signal that your setup isn't professional.

When you reply to an email, the In-Reply-To header references the original Message-ID. That's how threading works. If the Message-ID is broken, threading breaks. Conversations turn into chaos.

You can check your Message-IDs by looking at the full email headers in your inbox (most mail clients have a "View Source" or "Show Original" option). Or send yourself a test email and run it through our free header analyzer to see if the Message-ID looks right.

Contributors

Who worked on this answer

Every name links to their profile. Every company links to their site. Real people, real accountability.

Ask an AI · tailored to your setup

Get personalized guidance

I read this on the Email Almanac about the Message-ID header: "Every email gets a unique ID when it's sent. That's the Message-ID. It looks like and lives in the email's headers. Your email server or ESP generates it automatically. Without it, servers can't deduplicate copies, thread conversations, or track replies." Help me understand how this applies to MY specific situation: 1. Should I worry about Message-IDs? (or does my ESP handle it) 2. How do I check if mine are formatted correctly? 3. What breaks if the Message-ID is missing or malformed? 4. Are there cases where I'd need to generate them myself? --- My details (the more you share, the better the advice): - Email platform/ESP: e.g. Mailchimp, SendGrid, custom SMTP server - Sending setup: managed ESP, self-hosted SMTP, transactional API - What I'm sending: newsletters, transactional emails, internal notifications - Current challenge: [e.g. duplicate emails landing, threading broken, deliverability drop]

Edit the yellow boxes, then send to the AI of your choice.