> For the complete documentation index, see [llms.txt](https://docs.maker.co/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.maker.co/features/variants-with-dynamic-content.md).

# Variants with Dynamic Content

*<mark style="color:$info;">This feature is available only on Max and Enterprise plans</mark>*

<figure><img src="/files/PbNJMisJhTHUrdfmaDLp" alt=""><figcaption></figcaption></figure>

***

### Key Benefits

* Tweak a value for a specific audience (a headline, a CTA, a hero image) without creating a whole new variant.
* Target by device, browser, URL, query params, cookies, country, city, hour of day, and more.
* Stack multiple rules: each piece of dynamic content applies on top of whichever variant the visitor sees.
* Preview exactly what each audience gets, live in the editor, before anything reaches real visitors.

***

### Steps

1. Open a project and click the variant dropdown in the toolbar.
2. Choose **Add dynamic content**. The Dynamic content panel slides in on the left.
3. Click **Add dynamic content** and give it a name (or pick one of the suggested names, like "Paid campaign welcome" or "Geo-specific pricing").
4. Click **Add condition** and define who this applies to. For example, *Query param* `utm_source` *equals* `google`.
5. Under **Changes**, pick a variable (one of your project's dynamic values), and type what it should become for visitors matching the condition.
6. Click **Save**.

That's it. Visitors who match the condition now see the changed value on your published site. Everyone else sees the normal variant content.

<figure><img src="/files/eTWMDeRmQeZC1FmVecTq" alt=""><figcaption></figcaption></figure>

***

### How It Works

Dynamic content lives in a panel that slides in from the left of the editor. It has two tabs: **Edit** and **Preview**.

Every project built with variants exposes a set of dynamic values: the texts, links, and images Maker has wired up to be swappable. A variant gives each of those values a complete alternative set. Dynamic content is lighter: it changes just the values you pick, for just the visitors you describe, layered on top of whichever variant is active.

#### Conditions

Each piece of dynamic content holds one or more numbered conditions. A condition is a single rule about the visitor or the page:

* **Device:** desktop, mobile, or tablet.
* **Browser:** Chrome, Firefox, Safari, etc.
* **Path / Host:** where on your site the visitor is.
* **Query param / Hash param:** URL parameters, like `utm_source` or `ref`.
* **Cookie / JS variable:** values set by your site or other tools.
* **Hour of day:** the current hour on the visitor's device (0-23).
* **Country / City:** the visitor's location.

Pick an operator (*equals*, *is one of* for a comma-separated list, *includes*) and a value to match against.

#### Changes

Each condition carries its own list of changes. A change picks one of your project's variables and says what it *becomes* when the condition matches; the variable's current default is shown right in the picker so you know what you're replacing. For image variables, you can **Generate** a new image with AI or **Upload** one from your files instead of pasting a URL.

#### Ordering

The Edit tab lists all your dynamic content with numbered rows and reorder arrows. Entries are applied in order, from top to bottom. If two entries change the same variable and a visitor matches both, the one lower in the list wins. Use the arrows to control priority, the pencil to edit, and the trash icon to delete (with a confirmation, since deleting can't be undone).

***

### Previewing Dynamic Content

Dynamic content matches against a visitor's *real* context, so an "hour of day" rule, for example, would fire based on the clock while you're editing. To keep your editing experience predictable, **dynamic content is not applied in the editor preview by default**. Your published site is unaffected; real visitors always get it.

To see it in action, switch to the **Preview** tab:

1. Each piece of dynamic content is listed with a **Select value** dropdown.
2. The dropdown shows the audience segments built from its conditions, for example, *Query param utm\_source equals google*.
3. Select one or more segments. The live preview reloads instantly with those changes applied, stacked in the same priority order as the Edit tab.
4. Selected segments appear as removable chips under each dropdown, with a running "N selected" count at the top.
5. Click **Reset** to clear all selections and return the preview to the plain variant.

You can select segments from several entries at once to see how combinations interact, exactly what a visitor matching all of them would see.

<figure><img src="/files/QygpkFx3v6PT58wYgdKB" alt=""><figcaption></figcaption></figure>

<figure><img src="/files/WMPizfDyOBdncdxnNHVC" alt=""><figcaption></figcaption></figure>

***

### Tips

* Dynamic content needs a name before you can save. Use the suggested name chips for inspiration on common use cases (paid campaign welcomes, returning visitor greetings, geo-specific pricing, and more).
* Use the *is one of* operator with a comma-separated list to match several values in one condition, e.g. `utm_source` is one of `google, bing, duckduckgo`.
* A single entry can hold several conditions, each with its own changes, handy for grouping all the rules behind one campaign under one name.
* Values that look like numbers or `true`/`false` are stored as numbers and booleans, so they slot cleanly into variables of those types.
* Closing the panel automatically resets any Preview tab selections, so you're never left looking at a stale preview.
* If you find yourself overriding most of a page, that's a sign you want a full variant instead; dynamic content is for surgical tweaks.

***

### FAQs

<details>

<summary>How is dynamic content different from a variant?</summary>

A variant is a complete alternative version of your project's dynamic values. Dynamic content changes just a few values, for just the visitors who match your conditions, on top of whichever variant they're seeing. Use variants for big-picture alternatives (A/B tests, distinct audiences) and dynamic content for targeted tweaks (a different headline for paid traffic, a local phone number per country).

</details>

<details>

<summary>Why don't I see my dynamic content in the editor preview?</summary>

By design. Conditions match against real visitor context: your actual device, the current hour, your location. Applying them in the editor would make the preview unpredictable while you're inspecting a variant. Use the **Preview** tab in the Dynamic content panel to apply specific segments to the live preview on demand. Published sites always apply dynamic content for real visitors.

</details>

<details>

<summary>What happens when a visitor matches more than one entry?</summary>

All matching entries apply, in the order they appear in the Edit tab (top to bottom). If two entries change the same variable, the one lower in the list takes effect. Reorder entries with the arrows to control which wins.

</details>

<details>

<summary>What can I target with conditions?</summary>

Device type, browser, URL path and host, query and hash parameters, cookies, JavaScript variables, the hour of day on the visitor's device, and the visitor's country or city. Each condition combines one of these fields with an operator (*equals*, *is one of*, *includes*) and a value.

</details>

<details>

<summary>What values can I change?</summary>

Any of your project's dynamic variables: the texts, links, and images Maker has made swappable in your project. The picker shows each variable's current default so you know what you're replacing. Image variables additionally offer AI generation and file upload.

</details>

<details>

<summary>Does dynamic content work with A/B tests and page rules?</summary>

Yes. Dynamic content is resolved after your variant strategy. Whether the visitor's variant comes from an A/B experiment bucket or a page rule, matching dynamic content is layered on top of that variant's values.

</details>

<details>

<summary>Can I undo a delete?</summary>

No. Deleting a dynamic content entry is permanent, which is why Maker asks you to confirm first. Editing is always non-destructive: you can reopen any entry and adjust its name, conditions, and changes at any time.

</details>


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.maker.co/features/variants-with-dynamic-content.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
