Skip to content

UTM Parameters in AcelleMail — Tracking Clicks to Your Analytics Tool

Configure UTM tags once in your campaign settings — AcelleMail appends them to every link in the email automatically. This guide walks the campaign-level + global UTM settings, the post-send click report, and how the UTMs land in Google Analytics or Plausible.

Why UTMs and where they go

UTM parameters are query-string tags appended to your campaign's outbound links — ?utm_source=newsletter&utm_medium=email&utm_campaign=spring_launch — that your analytics tool (Google Analytics, Plausible, Fathom, Matomo) reads to attribute traffic + conversions back to the email that drove them.

Without UTMs, every click from your email shows up as (direct) / (none) in analytics. With UTMs, you see "spring_launch newsletter drove 1,847 sessions and 312 conversions" — the kind of report you can defend in a quarterly review.

The good news: AcelleMail handles this for you at the campaign level. Set it once, every link gets tagged.

Set UTMs in the campaign builder

1. Open campaign settings → URL parameters

When you create or edit a campaign, the Tracking (or URL parameters) section in campaign settings has fields for the standard UTM keys:

  • utm_source — where the click came from. For email: usually newsletter or your brand name like acellemail.
  • utm_medium — the channel. Almost always email for AcelleMail-driven sends.
  • utm_campaign — the specific campaign identifier — spring_launch_2026, weekly_digest_w17, cart_abandonment_v3.
  • utm_term (optional) — usually paid-search specific, sometimes used for segment-of-list identification.
  • utm_content (optional) — variant identifier — header_cta vs footer_cta to A/B test which link position pulls more.

A standard configuration:

utm_source:   newsletter
utm_medium:   email
utm_campaign: spring_launch_2026

Click Save. AcelleMail will append these to every link in the email automatically — you don't need to add ?utm_source=... to each individual <a href> in the body.

2. Verify in Preview

Open the email Preview, hover over any link — the URL shown at the bottom of the screen will include the UTM query string. If you don't see it:

  • Check that Tracking is enabled in the campaign settings (some installs default it off)
  • The link is to your own domain (some setups skip UTM-tagging on external partner links)
  • The URL doesn't already have query parameters that conflict (AcelleMail will append &utm_source=... rather than overwrite)

Read the click report after sending

Tracking log — per-click audit

Campaign → Tracking log tab shows every action (open, click, bounce) with timestamp + subscriber:

Tracking log — per-event audit

For UTM verification, find a Click row → the destination URL stored is the original link (without UTMs) — AcelleMail tracks the click event server-side via the redirect, then forwards the user to the URL with UTMs appended.

Click log — link-level click breakdown

The Click log tab focuses on click events specifically:

Click log per subscriber

Links report — aggregated per-link totals

The Links report rolls everything up — per-link click count + unique clickers:

Links report — per-link aggregate

This is the most useful view for content optimization: "Did our footer CTA outperform the header CTA?" → look at the per-link click count.

Click map — visualisation of where clicks went

The Click map overlays click counts on the rendered email:

Click map overlay

The heatmap tells you the same thing as the Links report, but visually — useful for layout decisions ("our main button is below the fold; almost all clicks come from the inline text link above").

Campaign overview — top-line metrics

The campaign Overview tab shows the summary:

Campaign overview

This is what you screenshot for stakeholder reports — open rate, click rate, unsubscribe rate, all aggregated.

How the UTMs show up in Google Analytics

After the campaign sends and recipients click, your analytics tool (GA4 / Plausible / etc.) starts recording sessions with the source = newsletter / medium = email / campaign = spring_launch_2026.

In Google Analytics 4: Reports → Acquisition → Traffic Acquisition → filter by Session source / medium = newsletter / email.

In Plausible: filter by Source = newsletter directly on the dashboard.

The UTMs persist across page navigations within the session, so even if the recipient clicks your email → lands on /pricing → navigates to /signup → converts, the conversion is attributed back to the email.

Common UI signals + fixes

Symptom Likely cause UI fix
Click count on AcelleMail report doesn't match analytics-tool sessions UTM-tagged links going through redirect strip the UTMs at some hop Verify the destination URL in Preview hovers — should still have UTMs after AcelleMail's click-redirect
Multiple campaigns showing up as same source in analytics Same utm_campaign value used for both sends Use unique utm_campaign per send — include week or version number
utm_source = (direct) in GA despite UTMs being set Analytics drops UTMs on HTTPS → HTTP redirects, OR JS-driven SPAs that don't read URL params Make sure your destination uses HTTPS end-to-end; if SPA, configure your analytics tool to read query string on every route change
Want to A/B test header vs footer CTA Use utm_content differently per variant — header_cta vs footer_cta But: AcelleMail's campaign-level setting applies one utm_content to all links; need link-level override (see Advanced)

Common UTM conventions worth adopting

Field Recommended pattern Why
utm_source One per-channel identifier, lowercase, hyphenated Stays consistent across years; "newsletter" works forever
utm_medium Always email for AcelleMail sends Standard convention; analytics tools group it predictably
utm_campaign {campaign_type}_{date_or_version}_{variant} cart_abandon_2026q2_a is parseable + sortable
utm_content Variant identifier when A/B testing header_cta vs footer_cta; button_red vs button_green
utm_term Only when running paid keyword tests in parallel Usually leave blank for organic email
Advanced: per-link overrides, dynamic UTM via merge tags, integration patterns

When the campaign-level UTMs aren't granular enough — typically when you're A/B testing within a single send, or when you need per-recipient personalization in the UTM itself — drop to link-level overrides.

Per-link override in the email body:

Click any link in the AcelleMail builder → right panel → Tracking section. Toggle "Override campaign UTMs for this link". Set per-link values:

header CTA:
  utm_source:   newsletter
  utm_medium:   email
  utm_campaign: spring_launch_2026
  utm_content:  header_cta

footer CTA:
  utm_source:   newsletter
  utm_medium:   email
  utm_campaign: spring_launch_2026
  utm_content:  footer_cta

This gives you two click reports in your analytics tool, both attributed to spring_launch_2026, but you can break down which CTA pulled more.

Dynamic UTM via merge tag (per-recipient personalization):

Write the link directly in HTML mode with the merge tag in the URL:

<a href="https://example.com/upgrade?utm_source=newsletter&utm_medium=email&utm_campaign=spring_launch&utm_term={{ subscriber.signup_plan }}">
  Upgrade your plan
</a>

Now utm_term = pro or enterprise per recipient. Useful for cohort analysis in GA4: "did the click-to-upgrade rate differ across plan tiers?"

Server-side click-to-conversion attribution:

If you're running your own backend (e.g. a Laravel app, a Next.js app), capture UTMs server-side at first request and persist them in the session or a cookie:

// Laravel middleware example
if ($request->has('utm_source')) {
    session([
        'first_touch' => [
            'source' => $request->get('utm_source'),
            'medium' => $request->get('utm_medium'),
            'campaign' => $request->get('utm_campaign'),
            'landed_at' => now(),
        ],
    ]);
}

Then attach to the conversion event when the user signs up or purchases. This sidesteps analytics-tool quirks (especially the GA4 referrer-detection limits) for your most important conversions.

Integration with Plausible / Fathom (privacy-friendly analytics):

Both read the standard UTM query-string params with no extra configuration. Filter the dashboard by Source = newsletter to see all email-driven traffic; further filter by Campaign = spring_launch_2026 for per-campaign attribution. No GA4 setup ceremony required.

AcelleMail API to populate UTM values dynamically per campaign:

If you create campaigns programmatically (e.g. from a marketing-automation backend), the campaign update endpoint accepts the UTM fields:

curl -X PATCH "https://acellemail.com/api/v1/campaigns/{campaign_uid}" \
  -H "Authorization: Bearer $ACELLE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "track_open": true,
    "track_click": true,
    "url_tags": {
      "utm_source": "newsletter",
      "utm_medium": "email",
      "utm_campaign": "weekly_digest_w17",
      "utm_content": "auto_generated"
    }
  }'

Useful for: triggered campaigns where the campaign name encodes a date (weekly_digest_w17 → week 17), automated A/B variant naming, or syncing UTM conventions across many campaigns in bulk.

Disabling AcelleMail's click-redirect — by default, AcelleMail's tracker rewrites every link to a tracking redirect (e.g. https://acellemail.com/c/abc123/d/xyz) so it can count the click before forwarding. The UTMs survive the forward. If you need raw direct links (e.g. for a press release where the URL should be pristine), turn off click tracking per campaign: campaign settings → Tracking → uncheck Track click → UTMs are still appended, but no redirect hop.

Related articles

5 comments

3 comments

  1. lequan.saigon
    we had to add custom utm parameters to get the cross-campaign attribution we wanted — the defaults werent quite enough.
  2. ravi.kumar.del…
    The funnel-attribution model explanation is the clearest I've read. The 'last-touch vs first-touch' framing especially
    1. admin
      Thanks. Pass it along if it helps your team.
  3. linhvu.dev
    Can the analytics be exported to a data warehouse? We feed everything into BigQuery for cross-channel reporting
    1. admin
      suppression list import via csv captures all opt-outs including preference-center ones if you exported with the right field set. the export filter defaults exclude some — check the 'include unsubscribed' checkbox on mailchimp's export wizard.

More in Analytics & Reporting