UTM parameters filter
The UTM parameters filter matches visitors by the UTM tags of the links that brought them to your site: utm_source, utm_medium, utm_campaign, utm_term and utm_content. Personizely remembers these values for each visitor, so a visitor who arrived from a Facebook ad keeps matching "Source is facebook" as they browse and when they come back, until a new link with UTM tags replaces the value.
Available on: all platforms.
How it's evaluated
The filter doesn't read the URL of the page the visitor is on. It reads the UTM values remembered for the visitor.
What's remembered
On every full page load, Personizely looks at the five standard UTM parameters in the page's URL. Each one that's present is saved for the visitor, as decoded text (summer%20sale is saved as summer sale). Values are saved up to 255 characters. Other parameters, such as utm_id or gclid, aren't UTM values here; the Query string filter remembers them.
The values are saved before targeting runs, so the landing page itself already sees the new values.
When it's overwritten
UTMs are overwritten parameter by parameter:
- A parameter that's in the URL replaces the saved value for that parameter, even if it has a different value or an empty one (?utm_campaign= saves an empty value).
- A parameter that's not in the URL keeps its saved value. Nothing is cleared: not on pages without UTMs, not on a new visit, and not after a period of time.
So the saved values are the most recent value seen for each parameter, which isn't always one campaign's set. If a later link carries only some UTMs, the visitor ends up with a mix:
Visit | URL parameters | Saved source | Saved medium | Saved campaign | Saved content |
|---|---|---|---|---|---|
1 | utm_source=facebook&utm_medium=paid_social&utm_campaign=spring_sale&utm_content=video_a | paid_social | spring_sale | video_a | |
2 (direct, no UTMs) | none | paid_social | spring_sale | video_a | |
3 | utm_source=newsletter&utm_medium=email | newsletter | spring_sale | video_a |
After visit 3, "Campaign is spring_sale" still matches, although the visitor came from your newsletter. "Source is facebook" no longer matches. To check that the values belong together, add several conditions to the same filter: all of them must match.
The values start over only when Personizely sees the person as a new visitor: after they clear cookies and site data, in a private window, or on another browser or device. Visitor data is kept in a first-party cookie and browser storage; the cookie lasts 1 year by default.
Targeting the current URL instead
If you want only the UTMs of the link the visitor just clicked:
- Widgets: use the Query string rule, for example Query utm_source is facebook. It reads only the current page's URL, so the widget doesn't follow the visitor to pages without the parameter.
- Campaigns: set the campaign's page to Multiple pages with Include query on, and a rule such as Include pages containing utm_source=facebook, or a RegExp such as [?&]utm_source=facebook(&|$) to avoid matching facebook_ads.
Options
The filter reads: UTM Parameters match the following conditions. Click Add condition and pick a parameter for each row.
Option | What it does | Values / default |
|---|---|---|
Parameter | Which saved UTM value to check | Source, Medium, Campaign, Term, Content |
Operator | How the value is compared | is (default for a new row), is not, contains, does not contain, is empty, is not empty |
Value | The text to compare with | Required, except for is empty / is not empty |
With several rows, all of them must match. To match any of several values, use separate filters in a group set to any, or separate groups.
Behavior details
- Case-sensitive. Facebook and facebook are different values. If your links aren't consistent, use contains with the common part, or add one row per spelling in a group set to any.
- Exact text, no wildcards. is compares the whole value; contains matches part of it.
- Missing equals empty. A parameter the visitor has never had counts as empty, so is empty, is not and does not contain match visitors who never arrived with that UTM.
- Single-page storefronts. Only full page loads update the saved values. Parameters added to the URL by an in-page navigation are picked up on the next full page load.
- Placeholders. {visitor.utmSource} and the other UTM fields in dynamic text show the saved values too.
Examples
- Paid social visitors: Medium is paid_social, to show a matching offer on every page after an ad click.
- One campaign's audience, strictly: Source is facebook and Campaign is spring_sale in the same filter, so a later visit from another source no longer matches.
- Exclude email traffic: Medium is not email, on a newsletter signup popup.