Campaign values are case-sensitive in Google Analytics guidance. SpringSale, springsale and spring_sale can become separate labels even when people intended one initiative.

Write a small shared vocabulary

Decide which source labels represent platforms and senders, which medium labels represent channels, and which delimiter separates words. Record examples beside the rule and appoint a place where changes are reviewed. The useful property is repeatability: two people preparing the same channel should choose the same value. A builder can preserve and encode that decision, but it cannot discover the organization’s reporting model from one pasted destination.

Keep normalization deliberate

Automatic lowercasing or space replacement feels convenient until it changes a platform macro, a legacy identifier or a value that must match another system. UTMLink rejects only boundary whitespace and forbidden controls; it leaves ordinary case and punctuation visible. If your written convention requires lower-case tokens, prepare them that way and review the final rows. The absence of hidden cleanup makes discrepancies easier to notice before publication.

A practical review before publishing

Read the final address from the destination through the last fragment character. Confirm that the host and path still identify the intended public page, that unrelated filters or product identifiers remain present, and that every campaign value follows the naming sheet used by your team. Copy the link into a plain-text editor before placing it in an email, advertisement or document so rich-text software cannot hide a changed character. Open it only when you are ready to visit the destination, then check the browser address bar and the analytics implementation separately. A syntactically well-built link cannot prove that a page exists, that redirects preserve its query, or that an analytics property attributes the visit as expected.