PageBuilder
Visual section builder for MODX 3. Draft and publish without overwriting resource content

Appends UTM parameters from the CMP registry to any URL. Values come from the query string, $_SESSION['utm'], or the record default_value in pb_utm_params.
Link to a landing or form with the same tags as the current visit without hand-building query strings in the template.
Template, chunk outside PageBuilder, custom buttons. For url/button fields inside sections, use {{utm:key}} in the inspector instead.
| Parameter | Default | Description |
|---|---|---|
url | empty | Target URL. Empty → empty output |
params | empty | JSON with extra query params. Keys in params override the registry |
[[!PageBuilderUtmUrl?
&url=`https://example.com/landing`
]]{'!PageBuilderUtmUrl' | snippet : [
'url' => 'https://example.com/landing'
]}[[!PageBuilderUtmUrl?
&url=`/contacts/`
¶ms=`{"utm_content":"hero-cta"}`
]]{'!PageBuilderUtmUrl' | snippet : [
'url' => '/contacts/',
'params' => '{"utm_content":"hero-cta"}'
]}pdoTools registers a modifier on pdoToolsOnFenomInit:
<a href="{$button.url|utm_query}">{$button.label}</a>Same as the snippet for URLs from section data.
For first-visit tags in links, call PageBuilderUtmSession before render or rely on the PageBuilder plugin.