Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.abtestly.com/llms.txt

Use this file to discover all available pages before exploring further.

Targeting

Every experiment defines two things about who sees it:
  1. Locations — which URLs the test runs on
  2. Audiences — which visitors are eligible
A visitor sees the test only if both match. If either fails, they see the original (no bucket assignment, no MTU consumed).

Locations

Locations specify URLs. Supported match types:
TypeExampleMatches
URLhttps://example.com/pricingExact URL only
URL contains/pricingAny URL with this substring
URL starts withhttps://example.com/blog/Any blog post
URL ends with.htmlAny HTML page
URL matches regex^/products/[0-9]+$Numeric product IDs
Hostnameapp.example.comSubdomain match
Query stringutm_source=emailVisitor came from a specific UTM
Multiple conditions combine with OR by default (any match). Switch the conjunction to AND to require all conditions.

Audiences

Audiences filter visitors. Supported conditions:
ConditionExamples
Devicemobile, tablet, desktop
BrowserChrome, Safari, Firefox, Edge, …
Operating systemiOS, Android, macOS, Windows, Linux
Country / regionVia Cloudflare geo
LanguageBrowser locale (en, en-US, fr, etc.)
New vs returningHas this user been bucketed before?
ReferrerCame from twitter.com, news.ycombinator.com, etc.
UTM parametersutm_source, utm_medium, utm_campaign, utm_term, utm_content
CookiesE.g. logged_in=true
Custom attributesSet via JS: window.abtestly.identify({ plan: 'pro' })
Day of week / hour of dayTime-windowed campaigns
JS conditionArbitrary expression evaluated against the page
Multiple audience conditions combine with AND by default (visitor must match all). Switch to OR per condition group via the conjunction toggle.

Saved Locations and Audiences

If you run multiple tests targeting the same URLs or the same visitor segment, save the conditions as a reusable Location or Audience in your site detail page (Locations / Audiences tabs). Then reference them from experiments instead of copy-pasting rules. Saved Locations and Audiences are site-scoped — each site has its own set. This matches the natural mental model: visitor segments and URL patterns are inherent to a property, not your whole org.

Bucketing

Once a visitor passes targeting, they’re bucketed into a variant. Bucketing is:
  • Deterministic — same visitor + same experiment = same variant, every time
  • Independent across tests — a user’s assignment in test A doesn’t influence test B
  • Persistent — assignment is cached in localStorage and persists indefinitely (until they clear browser data or you change the experiment’s bucketing salt)
The hash function is MurmurHash3 with a per-experiment salt, the same algorithm used by Optimizely and Adobe Target. Variant weights split visitors proportionally (e.g., 50/50, 33/33/33, or 90/10 for ramps).

Traffic allocation

The experiment-level traffic allocation percentage controls what share of eligible visitors enter the test at all. Common patterns:
  • 100% — full launch test
  • 10% — early ramp; only 1 in 10 eligible visitors gets bucketed, the rest see control without being recorded as exposures
  • 50% — half-traffic A/B with statistical significance gates before scaling
Visitors who don’t make the allocation cut don’t consume an MTU.

Quick reference

ScenarioSetup
Test only on pricing pageLocation: URL contains /pricing
Test only on mobileAudience: device = mobile
Test only US visitorsAudience: country in [US]
Test only logged-in usersAudience: cookie logged_in = true
Test on new visitors onlyAudience: new_returning = new
Test on returning visitors from emailAudience: utm_source = email AND new_returning = returning
Ramp test to 10% of trafficExperiment-level traffic allocation = 10%
Test on weekday business hoursAudience: day_of_week in [mon-fri] AND hour_of_day in [9..17]