Overview

Documents / AB Testing

A/B testing (Campaigns) overview

When a page is not converting as well as you hoped, the everyday question is simple: would a different headline, button, or layout actually help? An A/B test answers that by showing some visitors the current experience and others a changed experience, then comparing results. In CROForge that test lives as a campaign in the product UI. The same object is an experiment in the API, the database, and Smart Code. This page is the map of that object: what it contains, which tabs you use, and when it actually runs on a visitor’s site.

Words used on this page

WordEveryday meaningMeaning in CROForge
A/B testA fair comparison of two (or more) versions of something to see which performs better.A campaign that assigns eligible visitors to a Control or a Variation, then measures linked metrics.
CampaignA named effort you run for a period of time (a marketing campaign, a launch).The name you see in the UI list, hub, and reports. It is the same record as an experiment.
ExperimentA structured test with a hypothesis, a method, and a result.The API and runtime name for a campaign. Routes, statuses, and Smart Code all use this model.
ControlThe unchanged original you compare against.The baseline variation, usually with empty JS and CSS so the live site is left as-is.
Variation / VariantAn alternative version of the original.A named experience with optional jsCode and cssCode, plus a traffic percentage.
TrafficPeople arriving at a site or page.Eligible visitors who passed domain, URL, and audience checks and can be assigned a variation.
Sticky assignmentOnce you are put in a group, you stay in that group.After a visitor is bucketed into a variation, that choice is stored so they keep seeing the same experience.
ConfigurationThe settings that define how something works.The first hub tab. Sub-tabs are Pages, Variations, Metrics, and Audience.
ReviewA last look before you go live.The hub tab that summarizes the campaign before and after you finish configuration.
ReportA results summary after something has been running.The hub tab with per-campaign charts and tables. It is not a separate global dashboard.
Smart CodeA small script you add to a website.The CROForge snippet that decides whether a running experiment applies, assigns a variation, injects CSS/JS, and sends events.
WorkspaceA shared place for a team’s work.The tenant that owns users, sites, campaigns, and Data Vista definitions. The campaign route lives under it.

Screenshot

Filename: ab-test-list.png (campaigns list with search, filters, and status badges). Place the file under docs/assets/placeholders/. Paste the screenshot into WordPress after you copy this article; do not add an image tag here.


Campaigns in the UI, experiments in the API

Teams talk about “running a campaign.” Engineers talk about “the experiment object.” CROForge uses both on purpose. In the sidebar you open A/B and work with Campaigns. When Smart Code fetches live tests, when statuses are stored, and when URLs include an experiment id, the same record is an experiment.

These docs follow that split: campaign for what you click in the product, experiment when describing data, routes, and runtime. You are never looking at two different things.

What you can do from A/B

Open a workspace, then A/B. That list is the home for every campaign in the workspace.

  • Search, filter, and sort campaigns, then start, pause, archive, or delete in bulk (use bulk actions carefully on Running tests).
  • Create a new campaign; it opens as Draft so nothing is applied on the live site yet.
  • Configure it in order: Pages → Variations → Metrics → Audience.
  • Open Review and confirm the summary before you launch.
  • Change status along Draft → Running → Paused or Completed, then Archive, Trash, or Clone.
  • Open the code editor to write variation JS and CSS.
  • Open Report for that campaign’s analytics.

The campaign hub

Each campaign opens on a hub. The route is /workspace/{id}/ab-test/{experimentId}. Optional query params include tab, configTab, and reviewTab.

Top tabs

TabEveryday meaningWhat you do here
ConfigurationSet up the test.Wizard for pages, variations, metrics, and audience. Use Prev, Next, Save, and Discard.
ReviewRead the plan back to yourself.Summary of targeting, variations, metrics, and audience before (and after) you go live.
ReportSee what happened.Charts and tables for this campaign only.

Configuration sub-tabs

Work them in this order. Each answers one question.

OrderTabQuestion it answers
1PagesWhere can this test run? Include and exclude URL rules.
2VariationsWhat do visitors see, and how is traffic split?
3MetricsHow will we decide a winner? Link Data Vista metrics.
4AudienceWho is allowed into the test? Attach a Data Vista segment.

Anatomy of a campaign

Think of the campaign as a folder that holds everything the runtime needs.

Campaign (Experiment)
├── Title & status
├── Pages (URL include / exclude)
├── Variations (Control + variants, JS/CSS, traffic %)
├── Metrics (linked Data Vista metrics)
├── Audience (segment, e.g. All Traffic)
├── Review summary
└── Report

When Smart Code actually applies a campaign

A campaign sitting in the list is not automatically changing your site. Smart Code applies it only when all of the following are true.

  1. The campaign status is Running (Draft, Paused, Completed, Archived, and Trash are not applied live).
  2. The current page matches URL targeting (at least one Include matches, and no Exclude matches).
  3. The visitor matches the attached segment (Audience). All Traffic means “no extra conditions.”
  4. The visitor is assigned a variation. That assignment is sticky so they do not bounce between Control and a variant on later visits.

Runtime evaluation order is: domain allowlist → URL targeting → segment → variation assignment. If any earlier step fails, Smart Code skips the experiment for that page load.

Changing JS, CSS, URLs, or the segment while a campaign is Running can bias results, because some visitors already saw the old experience. Prefer pause → edit → resume, and note the change.

Related reading