Say a 14-person dental clinic calls because patients have stopped getting their appointment reminders. The reminders leave from info@, which is also the address that sends the monthly oral-health letter, the end-of-year promotion and the receipt after every payment. Someone ran a promotion in September, a few hundred people pressed the spam button on it, and now the reminders land in Junk for part of the list. The receipts do too.
Nothing in the DNS is wrong. SPF passes, DKIM signs, the DMARC policy is at reject. The problem is that all of that mail is one sender as far as a mailbox provider is concerned, so the message nobody wanted and the message everybody needs share a single reputation and a single row of numbers. Nobody in the clinic can tell which of the two did the damage, and neither can we until the streams are told apart.
What one address really costs you
Two things, and the second one is the expensive one.
The first is shared reputation. Reputation follows the name that authenticated the message, so when every stream authenticates as the same name, every stream inherits the same history. Google publishes the numbers it wants from a sender: keep the spam rate below 0.10% and never let it reach 0.30%, measured on the messages recipients manually mark as spam. Google's sender FAQ says that rate is calculated daily, which is why one campaign concentrates the damage instead of spreading it. Three hundred complaints on the Tuesday a promotion goes out, against the few hundred messages the domain sends on a normal day, is a rate no receipt stream would produce, and the receipts are in the same queue when the filters react.
The second is attribution. The Postmaster Tools spam rate dashboard reports the percent of your messages marked as spam, and the compliance status dashboard applies to primary domains only, using subdomain data to decide compliance. Neither one knows that your newsletter and your invoices are different projects. With one identity across everything you get one number for everything, which tells you that something is wrong and nothing about where.
What Gmail asks you to separate
This is not a matter of taste. Google's subscription guidelines for senders, checked on 21 October 2026, say to send subscription messages and non-subscription messages from different email addresses, and they name password resets and receipts as the non-subscription kind. The same page asks senders to identify each subscription list with a human-readable identifier in the List-id: header or with a unique From: address, and says each mailing list used for subscription messages should have its own unique From: address. The main sender guidelines repeat the header request for mailing list senders.
Two more requirements from the same page shape the split. Recipients have to confirm the address they typed before any subscription mail goes to it, which Google calls double consent. Unsubscribe requests have to be processed and honoured within 48 hours. Yahoo's sender best practices, checked the same day, scope the unsubscribe duty the way you would hope: one-click is required for marketing and promotional mail and not for transactional messages such as order confirmations and password resets, a body link on its own does not satisfy it, and requests should be honoured within two days.
Read together, those pages describe a shape. Subscribed mail is a list, with an identity, a consent record and a working exit. Transactional mail is not a list, carries no unsubscribe, and has no business leaving from the same address as a campaign.
List-Id, the header that makes a list a thing
The header predates all of this. RFC 2919, a Proposed Standard published in March 2001, defines List-Id as an identifier for an email distribution list so that software can reliably recognise the messages belonging to one. The rules are short and worth following exactly: no more than one such field in a message, the identifier inside angle brackets with an optional human-readable phrase in front of it, generated by the list software rather than by a person, and minted only in a domain you have authority over.
List-Id: Clinic monthly letter <monthly.clinic.example>
List-Unsubscribe: <https://clinic.example/u/9f3a21>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
One detail in the RFC catches people out later. Mail clients treat a different identifier as a different list, so changing the value breaks their recognition of it. The identifier is a key, not a label: rename the newsletter in the human-readable phrase as often as you like, and leave the part in the brackets alone for as long as the list exists. If you are also publishing the two unsubscribe headers for the first time, the signature has to cover them, which is the subject of the one-click unsubscribe post rather than this one.
Which stream goes where
This is the decision, and it usually takes twenty minutes once somebody writes down what the business actually sends.
| Stream | What is in it | Send it from | Unsubscribe | List-Id |
|---|---|---|---|---|
| Transactional | Receipts, password resets, order confirmations | Its own address, never the campaign one | Not required by Gmail or Yahoo for this mail | No |
| Operational | Appointment reminders, invoice due notices, delivery updates | With the transactional stream, apart from campaigns | Not required, and a request to stop here is a conversation, not a toggle | No |
| Subscribed letter | The newsletter somebody asked for | Its own From: address | One-click, plus a visible link in the body | One, specific to this list |
| Promotional | Offers, launches, re-engagement sends | Its own address, separate from the letter | One-click, plus a visible link in the body | One, specific to this list |
| Internal | All-staff notices inside the company | The internal group address | Not applicable | Added by the group software |
The table stops at addresses on purpose. Giving each stream its own name in the DNS goes further, and is worth it above a few thousand messages a month, but it is a separate job with its own records and its own warm-up; the sending subdomain guide covers it. Changing the From: address and the list identity costs nothing and gets you most of the attribution.
Prove what your mail carries today
Before anybody edits a template, read a real message. Open one of each kind that actually went out and write down three things from the full headers: the address in From:, the domain in the DKIM d= tag, and whether any List-Id or unsubscribe header exists. Usually the answer is one address, one signing domain and no list identity anywhere, which is the whole problem in three lines.
Feedback-ID, the only per-stream number you get
Separating the addresses fixes the reputation half. The attribution half needs one more header. Google's Feedback Loop documentation describes a Feedback-ID header in the form a:b:c:SenderId, where the first three fields are optional identifiers the sender chooses for things like a campaign, a customer or a mail type, and SenderId is the mandatory last field: 5 to 15 characters, picked by you, and kept the same across the mail stream.
Feedback-ID: oct-letter:clinic-main:newsletter:clinicmail
Google says aggregate data is generated for the first four colon-separated fields counting from the right, and that nothing is generated when SenderId is empty. Identifiers whose spam rate looks unusual show up in the Feedback Loop dashboard in Postmaster Tools. Two conditions gate all of it: the traffic has to be DKIM-signed by a domain you own or control, with the signature applied after the header is added, and that domain has to be added and verified in Postmaster Tools before you can see any of the data.
The common mistake is to put something unique to each message in those fields. Google asks for the opposite, because the whole point is aggregation: a value that never repeats produces a dashboard of rows with one message each. Campaign, list and mail type repeat. Message IDs do not belong here.
What we check before changing anything on a client account
We work in this order, because each step changes what the next one means.
- Inventory what sends: the mail platform, the billing tool, the booking system, the shop, the CRM, whatever the owner forgot. Most of the surprises are here.
- Read the headers of one real message per stream, as above, and record the
From:address and the DKIMd=domain for each. - Check whether any list has an identity today, and whether the same address is carrying both a receipt and an offer.
- Test the unsubscribe path end to end, including whether it demands a login before it will honour anything.
- Look at what Postmaster Tools shows for the domain now, and whether the Feedback Loop is enrolled. That is the before picture.
- Only then split: new addresses, a
List-Idper list, aFeedback-IDon the campaign streams, and the records that follow them.
The mistakes we find most
A preference centre standing in for the unsubscribe button. A page that asks which topics you would like fewer of is a fine thing to put behind the visible link in the body. It is not the one-click path, which has to work without a login and without a confirmation step.
Marketing inside the receipt. The moment an order confirmation carries a promotion, it is promotional mail that happens to also confirm an order, and recipients treat it that way with the spam button.
Renaming the list identifier during a rebrand. The bracketed identifier is the key clients match on. Change the phrase in front of it instead.
New addresses, same signing domain. If every stream still signs with one DKIM d=, reputation keeps pooling: you have gained attribution without separation. Still progress, but know which half you bought.
What we watch after the split
For the first month, the per-identifier rows in the Feedback Loop dashboard and the domain spam rate beside them: the useful signal is one stream moving while the others stay flat, which is what one address was hiding. Then the unsubscribe log against the 48-hour and two-day windows, and the delivery of the transactional stream, which should now be boring.
How Guanacos Tech helps
Most of this is a decision rather than a configuration: what the business sends, which of it is a list, and which address each kind leaves from. We inventory the senders, read the real headers, draw the split, publish the identities, enrol the feedback loop so the next complaint spike has a name attached to it, and hand the owner one dashboard and one number to watch. If your invoices and your newsletter leave from the same address today, that is worth an hour with email deliverability consulting for small business before a campaign takes the invoices down with it. A 30-minute call is enough to map the streams and tell you what the split would involve.