---
description: "What you can personalise with Dalton: tests for one audience, copy that changes by URL parameter or market, one test across countries, winners deployed to a segment, and landing pages per ad."
---

# What You Can Build

::: info The short answer
Dalton can run a test for one audience only, change copy inside a variant based on the URL, run one test across several countries or domains, and keep a winner only for the visitors it won with. Landing pages matched to each Meta ad are in beta. Most of this needs no setup beyond targeting and a prompt to the editor agent. Country, language and cookies can't be used as a test audience yet.
:::

## Overview

| You want to... | How in Dalton | Page |
| --- | --- | --- |
| Test only on paid traffic, email traffic or mobile | Click the audience in the editor and pick **Device**, **Traffic** or **Visitor** | [Personalise by Audience](/personalise/by-audience) |
| Test only for one UTM campaign | **Advanced → Query parameter**, for example `utm_campaign` is `spring-sale` | [Personalise by Audience](/personalise/by-audience#a-test-for-one-campaign) |
| Change a headline per URL parameter value inside one variant | Ask the editor agent for a mapping of value to headline | [Personalise by Audience](/personalise/by-audience#change-copy-per-parameter-value) |
| Change copy per market inside one variant | Ask the editor agent to fill in the copy per locale path or domain | [One Test Across Markets](/personalise/across-markets) |
| Run one test across several countries or domains | One targeting group with rules on each domain or locale path | [One Test Across Markets](/personalise/across-markets) |
| Keep a winner only where it won | **Deploy → Smart deploy** or **Custom**, by device, channel or country | [Deploy to a segment](/personalise/by-audience#deploy-to-a-segment) |
| Send each Meta ad to a page version matched to its message (beta) | **Landing Pages**, with Meta connected and a subdomain pointed at Dalton | [Landing Pages for Ads](/personalise/landing-pages) |
| Test several pages or a whole template at once | One targeting group that covers every page | [Multi-Page Experiments](/advanced/multi-page-experiments) |
| Build variants in your Shopify theme (developer) | Your developer builds both versions in Liquid; the variant flips a switch | [Below](#variants-built-in-your-theme) |
| Drive Dalton from Claude or ChatGPT | Connect the Dalton MCP server | [MCP Server](/advanced/mcp-server) |

## Two ways to add logic

**Targeting decides who enters the test.** Device, traffic source, new or returning visitor, a query parameter or the referrer. Every rule must match. Visitors outside the audience see your page as it is and don't count in the results.

**Variant code decides what each visitor sees.** A variant can read the page URL, the path, the domain and the page itself. So one variant can show a different headline per campaign, or Finnish copy on `/fi-FI/` and German copy on `/de/`. You don't write this code. Describe the logic to the editor agent and it writes it.

Use targeting when only one group should be in the test. Use logic in the variant when everyone is in the test but the copy should fit where they came from.

## After the test

A test that wins for some visitors and loses for others doesn't have to be all or nothing. When you deploy, Dalton can keep the change only for the device, channel or country where it won. See [Deploy to a segment](/personalise/by-audience#deploy-to-a-segment).

## Variants built in your theme

If your developer prefers to build in the theme, they can put both versions in Liquid and let Dalton decide who sees which. The Dalton variant only flips a switch, for example an attribute your theme's CSS reacts to:

```js
document.documentElement.setAttribute('data-ab-header', 'b')
```

Make the original the version that shows when the attribute isn't set, so visitors see it if the script doesn't run. Dalton still handles targeting, the split, keeping visitors in their variant and the results.

## What isn't possible yet

- **Country, language, cookie or logged-in state as a test audience.** Country is available when you deploy a winner, not when you set up a test.
- **Reading the visitor's country in variant code.** Use the domain or locale path instead.
- **Text tokens without code**, such as <code v-pre>{{utm_term}}</code> typed into a headline. Ask the editor agent to build the mapping instead.
- **OR between audience rules.** Every audience rule must match.
