UTM Tracking for Flodesk: How to Build and Validate Campaign Links
UTM tracking for Flodesk starts with utm_source=flodesk — lowercase, the platform name — for all email sends from Flodesk Workflows and Email Blasts. Flodesk is a design-first email marketing platform launched in 2019, widely used by photographers, coaches, online course creators, and solopreneurs for its flat-fee pricing model ($38/month for unlimited emails) and template library built around polished visual design. Unlike enterprise email platforms that include a UTM management settings panel, Flodesk has no built-in UTM builder. Every tracked link must be constructed outside Flodesk — before opening the template editor — and pasted as a static URL into the email design. This means Flodesk email campaigns are a common source of (direct) / (none) or email / (none) attribution in GA4 when teams forget to build and apply tracked links before sending. The solution is to build all tracked links with mlz build --source flodesk before touching Flodesk's editor, using utm_content to distinguish each Workflow step or CTA variant, and validating destination URLs before activating any Workflow or dispatching any Email Blast.
The correct utm_source and utm_medium for Flodesk
Use utm_source=flodesk — lowercase, the platform name — for all email sends from the Flodesk platform. Never use utm_source=email, utm_source=newsletter, or a campaign name as the source value. The source identifies the platform or origin that sent the email, not the channel type or campaign label. GA4's default channel grouping rules match on utm_medium=email (alongside source values that don't match organic, cpc, or referral patterns) to assign sessions to the Email channel — the source value provides the platform-level attribution detail within that channel.
The medium for all Flodesk email sends is utm_medium=email. Flodesk is an email-only platform — it does not support SMS or push notifications. Every link tracked from a Flodesk send should use utm_medium=email. Do not use utm_medium=flodesk: that would prevent GA4 from recognising the channel as Email and would route the traffic to Unassigned instead.
| Source value | Problem | Use this? |
|---|---|---|
email |
Describes the channel, not the platform — collapses Flodesk sends with all other email providers | ✗ No — use for medium, not source |
newsletter |
Describes the send type, not the platform — creates a separate GA4 row unrelated to Flodesk | ✗ No — too generic, use in campaign slug |
Flodesk |
Mixed case — GA4 treats as separate dimension from flodesk |
✗ No — mlz build enforces lowercase |
flodesk |
— | ✓ Yes — lowercase, platform name, aggregates cleanly |
Because Flodesk has no built-in UTM configuration and no native integration with GA4's recommended parameter format, the entire tracking setup depends on consistently applying utm_source=flodesk manually to every link in every email. A single send without tracked links creates a gap in email attribution that cannot be recovered after the send. Build all tracked URLs before opening Flodesk's template editor — not during it.
Flodesk Workflows — UTM tracking for automated email sequences
Flodesk Workflows are automated email sequences triggered by a subscriber joining a segment, submitting a Flodesk form, being added via API, or manually enrolled. A Workflow is a series of emails separated by time delays — a welcome series, an onboarding sequence, a course delivery sequence, a product launch sequence, or a post-purchase nurture. Each Workflow email step that contains a CTA linking to a destination URL needs a tracked URL with a unique utm_content value, so that GA4 can attribute sessions and conversions to individual Workflow steps independently.
Without per-step utm_content values, all sessions from a Workflow's emails aggregate under the same campaign dimension row in GA4 — making it impossible to determine which step drove a conversion or generated the most link clicks. Define the content identifier for each Workflow step before building any tracked URL, using a positional and descriptive slug: step-1-welcome, step-2-freebie-delivered, step-3-offer-intro, step-5-last-chance. The step number makes GA4 reports readable in chronological sequence; the purpose slug makes the report self-documenting without requiring cross-reference to the Workflow diagram.
# Workflow step 1 — welcome email with lead magnet CTA
$ mlz build \
--url "https://example.com/download" \
--source "flodesk" \
--medium "email" \
--campaign "welcome-series" \
--content "step-1-welcome" \
--validate
{
"tracked_url": "https://example.com/download?utm_source=flodesk&utm_medium=email&utm_campaign=welcome-series&utm_content=step-1-welcome",
"validation": { "valid": true }
}
# Workflow step 3 — offer intro email
$ mlz build \
--url "https://example.com/course" \
--source "flodesk" \
--medium "email" \
--campaign "welcome-series" \
--content "step-3-offer-intro" \
--validate
{
"tracked_url": "https://example.com/course?utm_source=flodesk&utm_medium=email&utm_campaign=welcome-series&utm_content=step-3-offer-intro",
"validation": { "valid": true }
}
Paste each tracked URL as the link destination in the corresponding Workflow email step in Flodesk's template editor. Flodesk's editor uses a drag-and-drop block-based interface — the link URL is set in the button or text link settings within the block editor. Set it to the full tracked URL returned by mlz build as a static string. After building all tracked URLs for a Workflow, run mlz links list --campaign "welcome-series" to confirm that every step has a validated tracked URL before activating the Workflow.
For Workflows where the same email contains multiple CTAs pointing to different destination pages — a primary offer CTA and a secondary FAQ page CTA — build separate tracked URLs for each destination with a distinct utm_content value that identifies both the step and the CTA position: step-3-offer-hero-cta, step-3-offer-faq-cta. This preserves per-CTA attribution at the step level without requiring separate Workflow steps or separate campaign slugs.
Flodesk Email Blasts — UTM tracking for one-off sends
Flodesk Email Blasts are one-off emails sent to a subscriber segment at a scheduled time or dispatched manually. Blasts are used for product announcements, promotional campaigns, sale launches, newsletter issues, and any send that does not require the delayed multi-step structure of a Workflow. Unlike Workflows where the campaign slug identifies the full sequence, a Blast campaign slug should identify the specific marketing initiative: black-friday-2026, course-launch-june, monthly-newsletter-2026-06.
For Email Blasts with a single primary CTA, the utm_content value can describe the CTA position or variant: hero-cta, body-cta. For Blasts with multiple CTAs pointing to different destinations — a featured product CTA, a sale category CTA, a clearance CTA — build a separate tracked URL for each with a distinct content slug: featured-product-cta, sale-category-cta, clearance-cta. Blasts that serve as one-off sends within a larger campaign initiative (for example, a pre-launch teaser Blast and a launch-day Blast both part of a course launch campaign) should share the same campaign slug with content slugs distinguishing the individual sends: campaign="course-launch-june" with content="pre-launch-teaser" and content="launch-day".
Flodesk forms and landing pages — what not to tag as email
Flodesk includes built-in form and landing page functionality — opt-in forms embedded on external websites, pop-up forms, and standalone Flodesk-hosted landing pages. These form pages attract traffic from social media posts, organic search, paid ads, and direct links. When someone arrives at a Flodesk landing page from a LinkedIn post and submits the opt-in form, that visit is from LinkedIn, not from Flodesk email. Do not apply utm_source=flodesk to links shared publicly to Flodesk landing pages — that source value is reserved for traffic sent from within Flodesk email messages.
Apply the correct source for the channel that distributes the link: utm_source=linkedin for a LinkedIn post linking to a Flodesk landing page, utm_source=instagram for an Instagram bio link, utm_source=google for a paid search ad. The destination happens to be a Flodesk landing page, but the source is the channel that sent the visitor there, not the platform that hosts the page. Mixing up source and destination platform is one of the most common Flodesk UTM errors and produces impossible attribution data — sessions from social media appearing under email attribution in GA4.
Flodesk UTM tracking gotchas
- Flodesk has no built-in UTM manager — manual tracking required for every link
- Flodesk does not include a UTM settings panel, a link tracking configuration screen, or any equivalent of Klaviyo's UTM tracking defaults. Every CTA button, text link, and image link in every Flodesk email must have UTM parameters manually appended to the destination URL. In practice this means building tracked URLs outside Flodesk — using
mlz buildbefore opening the template editor — and setting each link destination in Flodesk to the full tracked URL. Teams that build links directly in Flodesk's template editor (appending UTM parameters by hand in the link settings field) are prone to typos, inconsistent naming, and missed links. Build tracked URLs in a single batch before touching the template editor and paste the results in — do not construct UTM strings manually inside Flodesk. - Template duplication does not update tracked URLs to the new Workflow or Blast
- Flodesk makes it easy to duplicate Workflows and Email Blast templates — the duplicated email retains all design, copy, and links from the original. When you duplicate a Workflow template, the tracked URLs in the duplicate still contain the UTM parameters from the original, including the original's campaign slug and content values. If you launch a new Workflow using a duplicated template without rebuilding the tracked URLs, GA4 attributes sessions from the new Workflow to the original's campaign — making the new Workflow invisible in attribution reports. Always build new tracked URLs for every distinct Workflow, even when the email design and copy are nearly identical to an existing Workflow. The cost of running
mlz buildfor a batch of new tracked URLs is trivial compared to the cost of discovering attribution data is wrong after a send. - Flodesk's click-tracking redirect usually preserves UTM parameters — but verify it
- Flodesk wraps email links in a click-tracking redirect that routes through Flodesk's infrastructure to record click events before forwarding the subscriber to the destination URL. In standard Flodesk configurations, this redirect preserves UTM query parameters intact at the final destination. Verify this by obtaining a click-tracking wrapped link from a Flodesk test send and running
mlz checkagainst it — the command follows the complete redirect chain and reports whether UTM parameters arrive at the destination. If the Flodesk redirect strips UTM parameters, GA4 attributes the resulting sessions as direct or untracked traffic, silently eliminating email attribution for every send that uses that link. This verification step is especially important after Flodesk platform updates or if Flodesk changes its click-tracking infrastructure. - utm_source=flodesk should not appear on links shared outside email
- Flodesk users often share content from within Flodesk's ecosystem — posting a Flodesk landing page URL to Instagram, sharing a Flodesk checkout link in a Facebook group, or linking to a Flodesk-hosted page in a blog post. When these externally shared links carry
utm_source=flodesk, GA4 misattributes the traffic from those external channels to email. The result is artificially inflated email attribution and invisibility for the actual acquisition channels. Reserveutm_source=flodeskexclusively for links that appear inside Flodesk email messages and are only accessible to subscribers who open those emails. All other links to Flodesk-hosted pages should carry the UTM source of the channel distributing them. - Segment-based sends should not use utm_source to distinguish segments
- Flodesk allows sending Email Blasts to specific subscriber segments — for example, sending a different promotional email to subscribers who purchased and a different email to subscribers who only opted in. Some teams create separate source values to distinguish these segments:
utm_source=flodesk-buyers,utm_source=flodesk-leads. This fragments platform-level attribution in GA4: sessions from both sends should appear under theflodesksource dimension for platform-level roll-up analysis. Distinguish segment-specific sends through the campaign slug instead —utm_campaign=june-promo-buyers,utm_campaign=june-promo-leads— using a shared campaign root (june-promo) for aggregate campaign analysis and a segment suffix for segment-level drill-down.
Flodesk UTM naming conventions
Recommended UTM parameter values for Flodesk, aligned with GA4 default channel groupings and a lowercase-hyphenated taxonomy:
- utm_source:
flodesk— always, for all links inside Flodesk Workflow email steps and Email Blasts. Never on links to Flodesk-hosted pages shared outside email. - utm_medium:
email— for all Flodesk sends. Flodesk is email-only, so there is no other medium option. Never useutm_medium=flodesk. - utm_campaign: Lowercase, hyphenated, initiative-level slug. For Workflows: the sequence name —
welcome-series,onboarding-seq,product-launch-june. For Email Blasts: the specific send initiative —black-friday-2026,monthly-newsletter-2026-06,course-launch-june. Segment-specific Blasts that are part of the same initiative: share the campaign root and distinguish through the campaign suffix or content value. - utm_content: Per Workflow step:
step-1-welcome,step-2-freebie-delivered,step-3-offer-intro,step-5-last-chance. Per CTA within a step if multiple destinations:step-3-offer-hero-cta,step-3-offer-faq-cta. Per Email Blast CTA:hero-cta,featured-product-cta, or per send if the Blast is one of several in a campaign series:pre-launch-teaser,launch-day. - utm_term: Optional for Flodesk. Use only if sending segment-specific Blasts where the audience segment requires independent attribution in GA4:
segment-buyers,segment-leads. Preferable to encoding the segment in the campaign slug when the initiative is the same for all segments and only the audience differs.
See the UTM naming conventions guide for the full cross-platform reference and the UTM tracking for developers guide for programmatic generation and validation at scale.
FAQ
- Does Flodesk have a built-in UTM tracker?
- No. Flodesk does not include a UTM management feature, a link tracking settings panel, or any equivalent of the UTM configuration options found in Klaviyo, Mailchimp, or ActiveCampaign. Every tracked link for a Flodesk campaign must be built outside the platform — using
mlz buildor any other UTM builder — and pasted as a static URL into Flodesk's email template editor. If you send a Flodesk email with untracked links, GA4 attributes the resulting sessions as direct or untracked traffic, with no connection to the Flodesk send. There is no retroactive fix after a send has been dispatched. - Should I use utm_source=email or utm_source=flodesk?
- Use
utm_source=flodesk. The source parameter identifies the platform or origin that sent the email, not the channel type.utm_source=emailis not a standard GA4 source value and collapses attribution for Flodesk sends together with every other email platform your organisation uses — Mailchimp, Klaviyo, Iterable — under the same source row in GA4, making platform-level comparison impossible.utm_source=flodeskcreates a distinct, platform-specific row in GA4 source reports. The channel assignment to Email is handled byutm_medium=email, not by the source value. - How do I track individual Workflow steps in GA4?
- Use a unique
utm_contentvalue for each Workflow step that contains a CTA. Define content identifiers for all steps before building any tracked URLs:step-1-welcome,step-2-freebie-delivered,step-3-offer-intro. Build the tracked URL for each step withmlz build --campaign "welcome-series" --content "step-1-welcome" --validateand paste the returnedtracked_urlas the CTA link destination in the corresponding Flodesk Workflow step. GA4 attributes sessions and conversions to individual steps through the utm_content dimension — each step is independently measurable in GA4's campaign and content reports without requiring separate Workflows, separate campaign slugs, or separate GA4 segments per step. - What if I duplicated a Flodesk Workflow — do I need to rebuild the tracked URLs?
- Yes. When you duplicate a Flodesk Workflow, all links in the duplicate retain the tracked URLs from the original, including the original's campaign slug and content values. If you activate the duplicate without rebuilding tracked URLs, GA4 attributes all sessions from the new Workflow to the original campaign — the duplicate Workflow is invisible in attribution reports. Build a fresh batch of tracked URLs for the new Workflow using the new campaign slug before configuring any step in the duplicated Workflow template. Run
mlz links list --campaign "new-workflow-slug"after building to confirm all steps have new tracked URLs before activating. - Do UTM parameters survive Flodesk's click-tracking redirect?
- In standard Flodesk configurations, yes — Flodesk's click-tracking redirect preserves UTM query parameters through to the final destination URL. Verify this by obtaining a click-tracking wrapped URL from a Flodesk test send and running
mlz check "https://click.flodesk.com/..."against it. The command follows the full redirect chain and reports whether UTM parameters arrive intact at the destination. If Flodesk's redirect strips parameters, GA4 attributes the sessions as direct traffic, silently eliminating email attribution. Re-verify after any Flodesk platform updates that may affect link redirect behaviour.
Related reading
Build Flodesk campaign links from the terminal
Pass --source "flodesk" and --medium "email" to mlz build to get a normalised, validated tracked URL ready to paste into any Flodesk template as a static link destination. Build all tracked URLs before opening Flodesk's template editor — one per Workflow step with a distinct --content value, one per Email Blast or per CTA within a Blast. Run --validate to confirm that destination URLs resolve correctly before activating any Workflow or dispatching any Blast. The key rule for Flodesk specifically: because Flodesk has no built-in UTM manager, the entire tracking setup depends on consistently applying tracked URLs to every link before the send. A single untracked send cannot be fixed after dispatch — build the links first.
npm install -g missinglinkz
Free plan: 1,000 links/month. No credit card. See the UTM tracking for developers guide for the full programmatic workflow including API and MCP integration.