Does this work for Meta Ads too?
Yes. Facebook Ads and Meta Ads workflows overlap here, and the same builder supports Meta-style dynamic values.
Can I keep existing landing-page parameters?
Yes. Existing non-UTM query params are preserved when the final URL is rebuilt.
Is this browser-only?
Yes. The link is generated locally and no server processing is required.
Where do I put UTM parameters for a Facebook ad?
In the URL parameters field at ad level in Ads Manager, under the destination section. Enter them without a leading question mark, and Meta appends them to the website URL when the ad delivers.
What are Facebook's dynamic URL parameters?
Double-brace macros substituted at delivery: {{campaign.name}}, {{adset.name}}, {{ad.name}}, {{ad.id}}, {{placement}} and {{site_source_name}}. They let campaign structure flow into analytics without you maintaining it by hand.
Should utm_source be facebook, meta, or ig?
Pick one and hold it. GA4 groups by the exact case-sensitive string, so mixing facebook, Facebook and meta produces three sources. If you want to distinguish Instagram from Facebook, use {{site_source_name}} in utm_content rather than changing the source.
Does this only work for Facebook, or for Instagram too?
Both. Ads Manager runs Facebook, Instagram, Messenger and Audience Network placements from the same ad, so the same parameter string covers them all. Use {{placement}} or {{site_source_name}} to tell them apart in the data.
What about fbclid?
Meta adds it at click time for its own attribution. It sits alongside your UTM parameters and does not conflict with them, but it does mean your landing page receives a parameter you did not set.