How to measure a newsletter send with UTM links
Decide what a successful send means first
Before you write the subject line, decide what you want the send to do. For a product newsletter, the goal might be trial signups. For a content newsletter, it might be article reads or time on page. For an announcement, it might be visits to a launch page.
The metric you track should match that goal. A newsletter can look good in an email tool because it gets clicks, but those clicks may not turn into anything on your site. UTM links help you connect the two.
Use one UTM convention for every newsletter
UTM parameters work best when they are boring and predictable. Pick a source name for your newsletter list and keep it stable. Use email as the medium. Change the campaign for each send.
A simple convention might be:
utm_source=product-newsletter utm_medium=email utm_campaign=2025-04-14-launch utm_content=header-cta
A full link would look like this:
https://example.com/trial?utm_source=product-newsletter&utm_medium=email&utm_campaign=2025-04-14&utm_content=header-cta
The source tells you which newsletter or list sent the visitor. The medium tells you it was email. The campaign identifies the specific send. The content identifies the placement within the email.
Tag different placements separately
If you only tag the main button, you will not know whether the inline text link or the footer link actually did the work. Use utm_content to separate placements.
Use values like:
top-buttoninline-linkfooter-linkps-link
This lets you see which position in the email drives useful traffic. You can then repeat the placements that work and stop hiding links where nobody acts on them.
Add conversion tracking before you send
UTM parameters tell you where a visit came from. They do not tell you what the visitor did after arriving. If your goal is a signup, purchase, or download, make sure that action is tracked as an event or a destination page.
For example, if you use measuremy.site, a signup button can be marked like this:
<button data-measuremysite-event="signup_click">Sign up</button>
You can then view those signup clicks by UTM campaign and see which newsletter send produced them. If you use another analytics tool, use its event or goal tracking feature and test it before the send goes out.
Test every link in a real email
Email services often wrap links for click tracking. Some redirects preserve UTM parameters. Some do not. The only way to know is to send a test email to yourself, click each link, and look at the final URL in your browser.
Check that the parameters are still present after any redirect. If they are stripped, you may need to use a different link format or add the parameters back after the email service has processed the link. This is a manual check, but it prevents you from losing an entire send of campaign data.
Read the campaign report after the send
Once the newsletter is out, wait for traffic to arrive and then look at the campaign breakdown in your analytics tool. Do not stop at total visits. Look at the report by campaign and content.
Useful checks include:
- Visits from the campaign compared with previous sends.
- Which
utm_contentvalue sent the most visitors. - How many visitors completed the primary goal.
- Which landing pages received the campaign traffic.
- Whether the traffic went to the intended page or wandered elsewhere.
If the campaign shows a large number of visits but almost no goal completions, the problem may be the landing page, the offer, or a mismatch between the email promise and the page.
Compare sends over time
A single newsletter send is not enough to draw conclusions. Compare several sends that use the same source and medium but different campaign names. That keeps the comparison as clean as possible.
Record the campaign name, list size, send date, visits, and goal completions for each send. Over time, you can see which topics, formats, or calls to action tend to bring useful visitors rather than just clicks.
Watch for delayed conversions
Some readers click immediately. Others open the email later or keep the tab open and return. Do not judge a send by the first hour. Check the campaign report after a day, then again after a few days.
If your product has a longer decision cycle, you may need to check back after a week or two. The important part is to use the same window each time so your comparisons are fair.
Avoid common UTM mistakes
Small inconsistencies make newsletter measurement harder than it needs to be. Common mistakes include:
- Using
newsletter,email, andweekly_digestas different sources for the same list. - Creating broad campaign names like
aprilthat do not identify the send. - Tagging only the main button and ignoring article links.
- Forgetting to tag the plain-text version of the email.
- Changing the naming convention halfway through a month.
- Assuming email clicks and site visits will match perfectly.
Email tools count clicks on their side. Analytics tools count visits on your site. The numbers can differ because of tracking blocks, redirects, or people who click but never load the page.
Build a small repeatable report
After each send, write down a few numbers in a simple document or spreadsheet. Include the campaign name, list size, visits, goal completions, and any notes about the subject line or offer. This takes a few minutes and makes future sends easier to compare.
If you use measuremy.site, you can also ask a coding agent to read the analytics over MCP and produce a campaign summary. That can save you from exporting and stitching together reports by hand.
The point is not to collect UTM tags for their own sake. A consistent tagging system lets you compare newsletter sends over time and see which topics, formats, and placements bring people who actually do something on your site. Once the convention is in place, measuring a send becomes a quick review rather than a forensic project.
See it on your own site
measuremy.site is cookieless analytics your coding agent can read. 30-day free trial, no card. Plans from $9/month.
Start free trial See the live demoAdd measuremy.site analytics to this project: connect the measuremy.site MCP server at https://a.measuremy.site/mcp for all my projects (claude mcp add --scope user; it signs in with OAuth, no key, and one sign-in covers every site), then tell me how to sign in. Details: measuremy.site/llms.txt
Free tools
- Free UTM link builder: Add utm_source, medium and campaign to any link.
- UTM link checker: Find broken UTM tags and see which GA4 channel a link lands in.
- Link shortener with click tracking: Short links with a click count by day and country.
More from the blog
- How to calculate your website conversion rate, and what to compare it to
- Is my A/B test result significant? A plain-English guide with a worked example
- What is bounce rate, how is it calculated, and is yours a problem?
- How to add a visitor counter to your website or GitHub README
- How much traffic does a website get? How to estimate any site's visits
- How to track QR code scans: count them, and see which poster worked
- How to see how many people clicked your link (without a paid shortener)
- How to check if your Google Analytics 4 tag is installed (and only counting once)
- Why GA4 shows your campaign traffic as Unassigned (and how to fix the links)
- Does your redirect keep your UTM tags? How to check before a campaign goes out
- How I built a self-hosted analytics MCP server on Cloudflare Workers and D1
- UTM tracking explained: what the parameters mean and how to use them
- Conversion funnel analysis for small sites: a practical guide
- Sudden drop in website traffic? A checklist for finding the cause
- What is an MCP server? A plain-English guide for people who run websites
- How to track Hacker News traffic
- Adding Analytics to a Framer Site
- How to ask your coding agent about your analytics
- What Is Bounce Rate and How Is It Calculated?
- A practical website analytics retention policy
- Map your site's funnel from first visit to signup
- What Is a Good Bounce Rate?
- How to automate a weekly traffic report
- A Practical Privacy-Friendly Analytics Checklist
- Adding an MCP server to Claude Code
- How long should you keep analytics data?
- How to Build a Small MCP Server That Actually Helps
- How to Find the Biggest Drop Off in a Funnel
- What Is the Urchin Tracking Module?
- What Microsoft MCP servers actually do
- UTM parameters for email newsletters
- Track Button Clicks Without Google Tag Manager
- How to track the results of a social media post without cookies
- How to track traffic from a GitHub README
- How to measure a product launch without guessing