# SplitDuck setup instructions
## What SplitDuck is
SplitDuck continuously A/B tests the copy on this website (headlines, buttons,
body text) and automatically shows the best-performing version to visitors.
You mark which text to test in the HTML; the site owner writes the alternative
versions ("variants") in the SplitDuck dashboard. No variant copy lives in code.
## 1. Install the script
Add this to the
of every page, as early as possible, before any other
content. Replace YOUR_SITE_KEY with the site's key. If you don't have it, ask the
site owner: it's shown on the Setup page of the SplitDuck dashboard.
## 2. Tag experiments
Add a data-splitduck attribute to each element whose text should be tested:
Find a better headline
Rules:
- The value is the experiment's name. Use a short, stable, snake_case name
(e.g. "headline", "hero_subheadline", "pricing_cta"). Names are unique per
site: the same name on two pages is the same experiment.
- Never rename an existing tag. A new name creates a new experiment and starts
its results from zero.
- The element must contain plain text only. SplitDuck replaces the element's
entire text content, so any nested markup (links, , icons, spans) is
lost. Put the attribute on the innermost element that holds just the text.
- The element must be in the page's HTML when it loads. SplitDuck scans for
tags once, when the page finishes loading; elements added later by
client-side JavaScript are not picked up.
- The current text becomes the "control" the first time a visitor loads the
page. Leave the original copy in place; don't put variant text in code.
- Tag copy that is the same for every visitor. Don't tag personalised or
dynamic text (names, prices, dates, counts).
## 3. Tag goals (conversions)
Call splitduck.track() when a visitor completes the action you want more of:
splitduck.track("signup_completed");
Rules:
- Use a short, stable, snake_case event name describing a completed action
(e.g. "signup_completed", "checkout_started", "demo_booked").
- Call it once, at the moment the action succeeds (after a successful form
submit or API response, not on the button click that starts it).
- It is safe to call before the SplitDuck script has finished loading; calls
are queued and sent once it loads.
- Tracking an event only registers it. The site owner then picks it as the
goal for each experiment in the SplitDuck dashboard; until then it doesn't
count as a conversion.
- An experiment doesn't run until it has a goal: visitors see the original
text and nothing is recorded.
## 4. Verify
Load a page with at least one tagged element in a browser. The browser console
logs "[splitduck] connected — N experiment(s) active.", and each tagged element
appears under Experiments in the SplitDuck dashboard.