UTM parameters label a campaign URL so a compatible analytics setup can identify the source, medium and campaign associated with a visit. Screpy's UTM Link Builder adds those labels to your destination, preserves unrelated query values and the fragment, and lets you copy the finished link. Optional fields distinguish a creative, paid keyword or campaign ID.
Building a URL does not install tracking or prove that a visit will be recorded correctly. This tool creates one link from your inputs without visiting it, collecting clicks or verifying your analytics. Use it to prepare consistent campaign labels, then check delivery and measurement separately.
Choose the destination and campaign you want to identify
Start with the page visitors should reach, not automatically the homepage. For an imaginary webinar promotion, use https://example.com/webinar/?lang=en#register as the destination. The lang=en query value belongs to the page, and #register identifies a section. Both should remain when campaign labels are added.
Decide where you will place the link and which initiative it represents. A newsletter, a partner mention and a social post can point to the same landing page while carrying different sources or media. Keep one campaign name when those placements belong to the same campaign and your reporting plan groups them together.
Enter the complete HTTP or HTTPS URL without embedded login credentials. Screpy constructs the address but does not verify that the page exists or that the fragment works. Choose the intended public destination first; adding tags cannot repair a broken or irrelevant landing page.
Assign each UTM field a clear job
Source, medium and campaign are required by this form. They answer different questions: who sent the traffic, what kind of placement carried the link, and which initiative it belongs to. Do not fill all three with the same word simply to complete the form.
| Field and URL parameter | Purpose | Example and requirement here |
|---|---|---|
Source — utm_source |
Identifies the referring source | customer_newsletter; required, up to 100 characters. |
Medium — utm_medium |
Describes the marketing medium | email; required, up to 100 characters. |
Campaign — utm_campaign |
Names the shared initiative | webinar_launch; required, up to 100 characters. |
Term — utm_term |
Identifies a paid keyword when relevant | Optional, up to 200 characters; leave blank for this newsletter example. |
Content — utm_content |
Distinguishes creatives or link placements | primary_button; optional, up to 200 characters. |
Campaign ID — utm_id |
Carries your existing campaign identifier | wb_042; optional, up to 100 characters. |
These meanings follow Google Analytics' campaign-URL guidance. The tool does not invent an ID, look up a keyword or check an ad account. Optional fields should carry useful information you actually maintain, not invented values to make every box nonempty.
Analytics platforms can support additional parameters, such as utm_source_platform, beyond these six fields. They are not editable fields in this builder. An accepted medium value also does not prove that a platform will assign the channel group you expect; use the naming rules and reporting requirements of your actual analytics setup.
Build a consistent example campaign URL
For the fictional webinar newsletter, use the source customer_newsletter, medium email, campaign webinar_launch, content primary_button and ID wb_042. Leave term blank because this example does not identify a paid keyword. Build the link, then inspect the generated parameters before copying it.
The resulting example is:
https://example.com/webinar/?lang=en&utm_source=customer_newsletter&utm_medium=email&utm_campaign=webinar_launch&utm_content=primary_button&utm_id=wb_042#register
The original lang=en remains before the new parameters, and the fragment stays at the end. No empty utm_term is added. This is a calculated illustration, not a published campaign or evidence of visits.
For a second link in the same email, keep the shared source, medium, campaign and ID, but use a meaningful content label such as footer_text. That gives the two placements different labels without pretending they are separate initiatives. Whether your reports collect and expose that distinction still needs verification.
Agree spelling, separators and case before sharing links. Screpy preserves value case: Email and email remain different strings. A lowercase convention is often easier to maintain, but the builder does not enforce it or merge earlier campaign labels. Keep a shared naming reference so teammates reuse the same values rather than inventing abbreviations each time.
Review existing tags before replacing them
If the destination already includes a managed UTM parameter, Screpy shows its existing values and asks for confirmation. It does not generate a new URL or silently choose one value from duplicates at this stage. Compare the existing labels with your proposed campaign before selecting the replacement checkbox and building again.
Consider this illustrative old link:
https://example.com/webinar/?lang=en&utm_source=old&utm_source=partner&utm_content=old_banner#register
It contains two source values and an old content label. With replacement confirmed, source customer_newsletter, medium email, campaign webinar_launch, and all optional fields blank, the result is:
https://example.com/webinar/?lang=en&utm_source=customer_newsletter&utm_medium=email&utm_campaign=webinar_launch#register
Both old sources and utm_content=old_banner disappear. Confirmation removes every occurrence of the six managed names, then adds each supplied nonempty value once. It does not preserve an old optional value when its corresponding field is left blank. Enter any optional value you intend to keep before confirming.
The managed names are exactly utm_source, utm_medium, utm_campaign, utm_term, utm_content and utm_id. Other query names, including differently capitalized keys or additional campaign parameters, are not automatically normalized into these names. Review them separately instead of assuming the builder has cleaned every possible tracking parameter. Unrelated query values and the fragment remain.
Enter plain text and let the builder encode it
Enter labels as ordinary text, not pre-encoded URL fragments. Leading and trailing spaces are trimmed; value case is preserved. Spaces and special characters inside a value are encoded when the query is built.
For example, raw campaign text Launch + demo becomes utm_campaign=Launch+%2B+demo: the spaces serialize as +, while the literal plus sign becomes %2B. If you instead type Launch%20demo, the percent sign is encoded too, producing Launch%2520demo. That represents the literal characters you entered, not the intended space. URLSearchParams documentation explains this distinction.
Existing query encoding may also be serialized differently while representing the same values, such as a space changing from %20 to +. A signed or otherwise encoding-sensitive address can depend on its exact representation. Use a suitable campaign destination and verify such links after modification rather than assuming preservation of values guarantees preservation of a signature.
The destination input allows up to 2,048 characters and the final generated URL up to 4,096. A result exceeding the output limit is rejected rather than clipped. Shorten your labels or use a more appropriate destination; do not manually cut the generated address and risk losing a query value or fragment.
Verify the destination and campaign reporting separately
Copy the generated link only after reviewing the destination and parameter table. A successful-generation result means an address was constructed from accepted inputs. It does not confirm that the page responds, a redirect preserves the tags or an analytics property records them.
Before distributing the link:
- Open the complete generated URL and confirm that it reaches the intended page, language or product state and section.
- Inspect any unexpected redirect. Use the Redirect Checker for its HTTP chain, then check whether the destination still carries the intended campaign information. That checker does not verify analytics collection.
- Confirm that your intended analytics setup is installed and receiving data under the applicable consent and collection conditions. The builder cannot diagnose a missing tag, blocked collection or an unrelated property.
- Make an appropriate controlled visit and compare the resulting campaign dimensions in that analytics system, allowing for its processing and reporting behavior. Do not assume every click will appear immediately or be attributed identically.
For Google Analytics, the campaign reporting guide identifies session source, medium and campaign dimensions in Traffic acquisition. Review the right dimensions rather than searching for the entire tagged URL in every page-path report. A missing row needs investigation of delivery, collection and reporting, not repeated regeneration of the same link.
Keep campaign links useful and safe to share
Campaign labels should describe the placement or initiative, not identify an individual visitor. Do not put email addresses, phone numbers, credentials or other sensitive personal values in the labels or destination query. They become part of the URL you distribute and can enter analytics data. Google's data-redaction guidance describes protections with limited coverage; it is not a reason to include information that should not be there. This builder does not anonymize your inputs.
Use campaign tags for the acquisition context you intend to measure. For ordinary links between your own pages, measure the internal interaction separately rather than relabeling it as an external campaign. The effect of tags depends on the analytics system; do not assume every tagged internal click starts a new session.
Keep a shared record of the final URL, source, medium, campaign, content placement, intended publication and owner. Save the actual distributed link before changing its labels later, so comparisons refer to known versions. Copying or downloading a report does not create a shared campaign dashboard.
Screpy does not shorten the link, create a QR code, generate a batch or monitor future visits. The useful deliverable is a reviewed campaign URL with a naming convention your team can maintain, plus a separate check that the destination and measurement behave as intended.