Full Answer
Testing UTM preservation is about following a single tagged link through the entire path your customers actually take. Start by building a complete URL with utm_source, utm_medium, and utm_campaign, ideally with your normal link builder so the test matches production. Then click it, don't paste a clean URL, because the redirects you're testing only fire on a real click.
Inspect the address bar at the final destination, after every hop has run. If the parameters are intact, the chain preserved them; if they're missing or rewritten, you've located a stripping point to fix. Do this across environments, because results differ: test on mobile and desktop, on Safari as well as Chrome, and with an ad blocker enabled, since filter lists and Intelligent Tracking Prevention remove parameters that a default browser leaves alone.
GA4 Realtime is the second half of the test. Load your tagged link and confirm the session appears under the expected source and medium, not Direct, within a couple of minutes. For a WooCommerce store, take the test one step further and place a test order through the tagged link. If the landing session attributes correctly but the order shows no campaign, the gap is between landing and checkout, typically a payment redirect. Capturing first-touch source server-side at landing closes that gap and lets you verify attribution order by order rather than trusting the URL to survive.