The symptom
The welcome flow, the abandoned cart flow, the post-purchase flow and the winback flow all go out from the same email tool, to the same audience, pointing at the same site. In the account, they look like four separate assets with four separate jobs. In GA4, they often look like one blurry lump called Email, or worse, they don't look like anything at all.
A client asks which flow actually drives revenue. The honest answer, most months, is a shrug. The email tool can say how many people opened and clicked. It has no idea what happened after that. GA4 might know a session started, but if the campaign parameters on that click don't match what GA4 is looking for, it doesn't even know the session came from email.
Nobody set out to break this. Someone built the welcome flow eighteen months ago and typed whatever felt right into the campaign field. Someone else built the cart flow last quarter and typed something different. Every flow works fine as email. None of them add up to a channel.
Why it happens
GA4 matches a string, not an intention
GA4 doesn't infer that a link came from an email tool. It reads two parameters on the URL, utm_source and utm_medium, and checks them against a fixed rule. Per Google's Analytics Help documentation, the Email default channel group matches when "Source = email|e-mail|e_mail|e mail OR Medium = email|e-mail|e_mail|e mail". Nothing else qualifies. A flow tagged utm_medium=newsletter, utm_medium=crm or utm_medium=e-blast is real email traffic that GA4 will not group as Email, because none of those strings are in the rule.
This is why four flows built by four people over two years rarely land in one channel. Nobody wrote the rule down, so nobody enforced it, and each flow drifted toward whatever the person building it assumed was close enough.
Where GA4 stops
Even a correctly tagged click only gets GA4 as far as a session with a source, a medium and a campaign name. GA4 has no concept of "flow step 3 of the abandoned cart sequence" unless that detail is written into utm_campaign or utm_content itself. If two different flows both use utm_campaign=abandoned-cart, GA4 reports them as one campaign, and the question "did the second reminder or the third one convert this person" has no answer in the data.
There's also a plumbing risk worth naming honestly. Most email tools route clicks through their own tracking link before redirecting to your site, and depending on how that's configured, the redirect can drop or rewrite the parameters you set. Whether that happens is tool and setup specific, so it's not a claim to make in general, it's a reason to check the landing URL a flow actually delivers, not just the one drafted in the email editor.

Consent removes another slice before any of this matters
A correctly tagged, correctly delivered click can still arrive with no consent to measure it. Per Google's Analytics Help documentation on consent mode, a basic implementation that blocks tags until consent is granted means "no data is collected" for that visit at all. An advanced implementation keeps sending cookieless pings, which Google says are "used for behavioral and conversion modeling, to fill the gaps in your data," but that's an aggregate estimate applied across the property, not a credit to the specific flow that sent the click. Either way, the flow that technically worked, the person opened it, clicked it and bought, doesn't show up as that flow having worked.
What comes back into the tool
The email platform's side of the story ends at the click. Opens, clicks and unsubscribes are its native data. Whether that click became a purchase lives on the website, in GA4 or in the order system, and getting it back into the email tool takes a deliberate integration, usually matched by campaign parameters, not by which subscriber clicked. Without that link built and maintained, whether the winback flow paid for itself stays a website question and an email question that never talk to each other, and it's one more reason the 15-30% of conversions that consistently go uncaptured across agency accounts includes clicks nobody can trace back to the flow that sent them.
What good looks like
Fix the string before the flow ships, not after a client asks. Every flow uses the same utm_medium value, the one GA4 actually matches, and Google's own guidance backs the same principle: "only one unique utm_medium for each distinct channel." Then utm_campaign carries the thing that actually varies, the flow itself, written the same way every time: welcome-flow, abandoned-cart-1, abandoned-cart-2, winback-90day. One page, one convention, checked against the live URL a flow delivers, not just the one drafted in the editor.
That convention only holds if the data behind it is trustworthy enough to check against. This is where Archon Pixel earns its place: a first-party analytics pixel that streams events, unsampled, into a BigQuery table your team owns, so flow-level reporting doesn't depend on GA4's UI holding four different naming habits together correctly. It doesn't get around consent, no setup does, but it gives you one dataset to check a naming convention against instead of guessing from a channel report that's already blending flows together.

FAQ
Does every flow need its own utm_source?
No, and changing it flow to flow is usually what breaks the channel grouping. Keep utm_source and utm_medium fixed across every email flow from the same tool, and put the thing that actually differs, the flow, in utm_campaign.
Why does some of our email traffic show up as Direct or (not set) instead of Email?
Usually one of two causes: the campaign parameters didn't survive the trip from the drafted link to the delivered link, or the medium value doesn't match GA4's Email rule. Both produce the same symptom from different causes, which is covered in more depth here.
Does consent mode block email click tracking completely?
It depends on the implementation. A basic setup collects nothing until consent is granted. An advanced setup keeps sending cookieless pings that feed aggregate modeling, but that's a property-wide estimate, not attribution back to one flow. More detail on what each option actually gives up.
Can our email platform show us on-site revenue by itself?
Generally not without a deliberate integration, and even then it's matched by campaign parameters rather than by the individual subscriber. Treat a claim that your ESP shows conversions as something to verify per tool, not a default to assume.
Should utm_campaign values ever change once a flow is live?
Only on purpose, and rarely. Renaming a live flow's campaign value splits its history in GA4 into two unrelated rows, before and after the rename, which makes trend reporting on that flow wrong until enough new data accumulates under the new name.
If a naming convention audit sounds like a week nobody has, a free tracking audit maps where your email flows actually land before you have to explain the gap to a client.