GA4 moved UTM tracking into a more flexible but less obvious structure than Universal Analytics. Your quickest path is Reports → Acquisition → Traffic acquisition. That table shows sessions grouped by session source/medium by default, which pulls directly from your UTM tags. Click the dropdown at the top of the data table and switch to "Session campaign" to see utm_campaign values, or toggle to "Session source" and "Session medium" individually. For deeper analysis, go to Explore in the left sidebar and create a free-form report. Add dimensions like Session source, Session medium, Session campaign, Session content, and Session term. These map to your five standard UTM parameters. You can cross-reference them with conversion events, revenue, or engagement metrics in the same workspace. This is where Ottawa SEO does most UTM auditing because you can pivot and filter without pre-built report limitations. If you're debugging in real-time, open Reports → Realtime and expand the event stream at the bottom. Click any event and look under "Event parameters" or "User properties" to confirm UTM values are firing. GA4 stores them as event-scoped parameters when the session starts, so they persist across the user journey. One gotcha: GA4 only captures UTM data if the parameter is present when the session begins. If someone lands on a non-UTM page then navigates to a UTM-tagged URL, that second tag gets ignored. Also, GA4 auto-tags Google Ads traffic with gclid, which overrides manual UTM tags from the same click. If you're running paid campaigns on other platforms or tracking email/social precisely, append UTMs to every destination URL and test them with the GA4 DebugView before launch. We typically set up a saved Exploration report for each client with UTM dimensions, conversion events, and revenue columns so stakeholders can self-serve campaign performance without learning GA4's interface from scratch.