Question Marks, Ampersands and Spaces: Check a Tagged URL Before Sharing

October 13, 2026
Swiftlinks
Swiftlinks
Swiftlinks
Swiftlinks
47 mins read
Question Marks, Ampersands and Spaces: Check a Tagged URL Before Sharing

A tagged URL is an address with extra labels attached to it. Those labels might describe an email campaign, a social post, or a printed invitation. When the address is correct, the page opens as intended and your measurement tools can read the campaign information. When it is wrong, visitors might reach the wrong page, lose a filter, or arrive without the labels you expected.

Most mistakes happen while someone is editing a perfectly ordinary destination. A second question mark slips in. An ampersand becomes part of a campaign name. A copied space changes how a value is interpreted. These are small errors, but shortening the address afterward can hide them behind a neat alias.

This guide gives you a way to read, build, and test a tagged URL before you publish it. The examples use example.com, a reserved domain for documentation. They are illustrative addresses rather than working campaigns or promises about a particular analytics setup.

Read the address in separate parts

Start with https://example.com/workshop. The scheme is HTTPS, the hostname is example.com, and the path is /workshop. If this page is wrong, no campaign parameter can make it right. Open the untagged address first and check that visitors can reach the workshop information without your administrator session.

Next comes the query, introduced by a question mark. In https://example.com/workshop?utm_source=newsletter, the query contains one field. Its name is utm_source and its value is newsletter. The equals sign separates the name from its value.

Additional fields usually follow ampersands. A complete illustrative campaign address could be https://example.com/workshop?utm_source=newsletter&utm_medium=email&utm_campaign=autumn_workshop. Think of each ampersand as a boundary between entries, rather than decoration in the address.

A fragment, when present, begins with a hash symbol. It can identify a section of a page, such as #schedule. Put the query before the fragment. Writing campaign fields after the hash does not make them ordinary query parameters sent to the destination server.

Reading these parts aloud can expose errors. Say “page, query, source, medium, campaign, section.” If a fragment appears halfway through your campaign fields, stop and rebuild the address instead of trying to patch it by eye.

Use one question mark to introduce the query

A common mistake is appending a ready-made campaign suffix to a destination that already contains a query. Suppose the page address is https://example.com/catalogue?category=chairs. Adding ?utm_source=newsletter produces an address with a second question mark in its query content. It does not create a second independent query.

The intended address is https://example.com/catalogue?category=chairs&utm_source=newsletter. The existing category stays in place, and the new campaign field begins after an ampersand. This distinction matters when the original parameter selects a product, date, language, or location.

Do not delete the original query just to make tagging easier. You could accidentally change the destination experience. A catalogue filtered to chairs and an unfiltered catalogue may be different campaign promises, even though they share the same path.

A URL builder that parses the address is safer than concatenating strings. If you work without a builder, keep a copy of the original destination and compare it with the finished address. Check every original field, not just the campaign labels you added.

Before sharing, ask a second person to verify the selected category or event. They do not need to understand URL syntax to notice that your link opens tables when the message promised chairs.

Keep separators out of unencoded values

The ampersand has a job in a query. If your campaign name is “spring & summer,” inserting that phrase directly can create an unintended boundary. The receiving page might interpret summer as a separate field rather than part of the campaign name.

Prefer a simple internal naming convention, such as spring_summer. Campaign labels are for consistent reporting, so they do not need to reproduce punctuation from a public slogan. A readable label is easier to compare across a spreadsheet and an analytics report.

When a value genuinely needs punctuation, use a tool that encodes it correctly. Do not replace every ampersand in the entire address, because the separators between fields must remain separators. Encode the value, not the complete URL as though it were one undivided text string.

This is especially important when a query value is itself another URL. A redirect destination inside a parameter needs deliberate handling. Avoid assembling nested redirects casually; they can be difficult to inspect and can introduce security concerns if the destination accepts arbitrary addresses.

For normal campaign work, start with the actual landing page and add a few agreed labels. If someone supplies a complicated address with several embedded URLs, ask the owner what each part does before changing it.

Handle spaces through a builder

Spaces can be represented in more than one valid way depending on the URL component and the tool building it. MDN explains that URL search handling and URLSearchParams can serialize spaces differently, using %20 or +. That difference alone does not prove a link is broken. See the MDN searchParams documentation.

The practical mistake is assuming that a visible space can always be pasted unchanged into any context. An email editor, spreadsheet, browser, or messaging app may alter the address. A URL copied from a formatted document can also contain unexpected line breaks.

For campaign labels, avoiding spaces is often the easiest team convention. Choose lowercase words separated by underscores or hyphens and apply that choice consistently. Do not switch between autumn launch, autumn_launch, and autumn-launch unless you intentionally want different values.

If a builder encodes your value, do not encode its output again. Double encoding can turn an intended encoded character into literal encoded text. You might see %2520 where you expected %20, because the percent sign was encoded a second time.

Store both the descriptive campaign name and the exact machine label in your register. The descriptive name can use natural language, while the label remains stable and easy to verify.

Add tags without removing useful destination settings

Campaign tags are only one part of a destination query. Your address may already contain a language choice, product identifier, pagination setting, or referral code. Treat these as existing requirements until the destination owner confirms otherwise.

For an illustrative registration page, event=writing101 might select the correct workshop. Removing it could send visitors to a general events listing. That is a navigation change, not merely a reporting change.

Keep a before-and-after record. The before column holds the original public destination. The after column holds the tagged destination. A reviewer should be able to identify every intentional difference between the two.

Also inspect the final page rather than relying only on string comparison. Some destinations redirect to a canonical address or rewrite their visible query after processing it. The page should still show the intended content, and your analytics checks should confirm the values where possible.

If the destination is signed or time limited, ask its owner before modifying it. Extra fields may be unsupported, and the URL might not be appropriate for a durable public campaign. A short alias does not make an expiring destination permanent.

Build an address step by step

Consider an illustrative community workshop newsletter. The public destination is https://example.com/workshops?topic=photography#dates. The team wants source newsletter, medium email, and campaign autumn_photography.

First, verify that the photography filter and dates section work. Next, use a builder to add the three campaign fields to the existing query. Keep the fragment at the end. Save the resulting destination in the campaign register before creating a short link.

The finished structure should preserve topic=photography, add each campaign field once, and retain #dates after the query. Duplicate utm_campaign fields are not a useful shortcut. Different systems may resolve repeated names differently, making reports harder to understand.

After building, open the address directly in a private browser window. Check the visible workshop topic and try the registration action. If registration is not open yet, verify the expected message rather than recording the test as a completed registration.

Only then shorten the entire tagged destination. Open the short address from the exact email draft where it will appear. This catches mistakes introduced by the publishing tool, including a hyperlink whose visible text differs from its actual target.

Check the hyperlink, not just the text

In a rich-text editor, the words shown to readers and the underlying address are separate. A button labeled “View workshop dates” might still point to a previous campaign, even when the displayed copy looks correct.

Use the editor's link control to inspect the target. If you duplicate a newsletter or landing page, assume copied links need review. Copying an old campaign is convenient precisely because it carries old settings along with the useful layout.

Plain-text contexts have their own risks. A full stop placed immediately after a URL may or may not be included by the application detecting the link. Put the address on its own line when clarity matters, and open the delivered test message to confirm what is clickable.

For spreadsheets, examine whether the cell stores plain text, a hyperlink object, or a formula. Editing visible text may leave an existing hyperlink unchanged. Test from the actual exported or shared version rather than only from the editing screen.

Do not rely on screenshots to verify destinations. A screenshot shows appearance, not the actual href. A successful check includes opening the delivered link and observing the destination.

Diagnose symptoms in a useful order

If the page opens incorrectly, compare the original destination with the final address first. A missing product or language parameter is more immediately relevant than an absent campaign label. Restore the intended page before investigating reporting.

If the page is correct but the campaign label is wrong, inspect spelling, capitalization, duplicate fields, and encoding. Search your register for another version of the same campaign. A naming mismatch can make correct traffic look missing when it appears under a different row.

If labels vanish from the visible URL, do not automatically conclude that they were lost. The destination may clean its address after reading them. Use the site's analytics testing workflow or ask its maintainer whether query processing is expected.

If the short address fails while the long address works, investigate the shortener separately. Confirm the saved destination, account status, expiration settings, and any applicable limits. Changing query punctuation repeatedly will not fix a disabled alias.

When you discover a mistake, record the corrected address, the time of the change, and the placements affected. That helps explain why traffic before and after the correction may differ.

A review routine for a busy team

Give each campaign a builder and a reviewer. The builder prepares the destination; the reviewer opens it from the final placement. This small division is more dependable than asking the same person to reread their own address several times.

Use a short approval record: destination confirmed, original query preserved, campaign labels checked, final message tested. Add a date and the reviewer's initials. Avoid a large checklist that nobody completes under launch pressure.

Maintain one approved label dictionary rather than letting every contributor invent spelling. Include examples of allowed source, medium, and campaign formats. The dictionary should describe decisions, not merely contain a list of unexplained past values.

When a campaign repeats, create a new register row instead of silently overwriting the previous one. You can reuse a proven structure while preserving a record of the earlier destination and dates.

The goal is a readable trail from message to short address to final page. If another person can follow that trail without asking you what a cryptic code means, the process is working.

A builder handoff for people who do not edit code

You do not need to understand a programming language to use a URL builder well. Give the builder the verified page address and the approved campaign values, then save its complete output rather than copying only the part after the question mark.

If the tool offers a preview, compare that preview with the page you originally opened. Confirm any existing category or language setting before accepting the result. A builder reduces manual punctuation errors, but it cannot decide whether you selected the correct workshop or product.

Keep a short instruction beside the team template: use the original public destination, choose values from the dictionary, generate the complete address, and test it before shortening. This helps a new contributor repeat the process without learning conventions through trial and error.

When replacing the builder or template, test a destination that already contains a query and a fragment. A tool that works only for a clean homepage may fail on the addresses your campaigns actually use.

Frequently asked questions

Can I add tags to the short link itself?

Some services can forward query parameters, but that is configuration dependent. Building the tagged destination before shortening avoids assuming forwarding behavior. If your workflow requires parameters on the short address, test that exact behavior and document it before relying on it.

Is a plus sign always wrong?

No. In common query form encoding, it can represent a space. Its meaning depends on context. Use a parser or builder to create your query values rather than manually replacing every plus sign you see in an unfamiliar URL.

Should I remove every existing parameter?

No. Existing fields may control the page, offer, or language. Remove a field only when you know it is unnecessary and have tested the resulting destination. Otherwise, you risk changing the promise made in the campaign.

Will correct syntax guarantee accurate reporting?

It prevents a class of avoidable errors, but reporting also depends on destination instrumentation, consent choices, filtering, time windows, and the tool's processing rules. A syntactically valid URL is a necessary check, not proof that every report will match every click.

What should I keep after the campaign ends?

Keep the original destination, tagged version, short address, placement, active dates, and correction history. These records help you maintain old links and interpret later traffic without rebuilding the campaign from memory.

Keep reading

More posts from our blog

Add UTM Parameters Before Shortening a Link: A Practical Guide
By Swiftlinks October 13, 2026
A short link can make a campaign easier to share. It cannot repair a destination that was tagged incorrectly. The dependable workflow is to prepare...
Read more
Track an Instagram Bio Campaign Without Losing Link History
By Swiftlinks October 13, 2026
Your bio link is a small piece of a much larger journey. Someone sees a post, visits your profile, opens the link, and decides whether the next page...
Read more
Measure WhatsApp Broadcast Links Without Tracking Individual Recipients
By Swiftlinks October 13, 2026
A WhatsApp campaign is easy to send and surprisingly easy to measure badly. Reusing one link across every message hides the differences between...
Read more