> ## Documentation Index
> Fetch the complete documentation index at: https://docs.growthxai.com/llms.txt
> Use this file to discover all available pages before exploring further.

# A/B Testing Message Variants

> Test two versions of a message, or two whole paths, and read the result — including which one gets positive replies.

There are two ways to test, and a report for both. Most people want the first.

## 1. Variants inside a step

**Send invitation**, **Send message**, **Send InMail** and **Send email** can each hold up to **5 variants** of their text.

<Steps>
  <Step title="Add a variant">
    In the step's settings, click **Add variant**. Give it a label (A, B, "short version") and write its text. Email variants have their own subject.
  </Step>

  <Step title="Set the weights">
    Weights decide the split. Two variants at 50 / 50 is the usual start. The weights are shown as percentages next to the step.
  </Step>

  <Step title="Publish and wait">
    Every lead is assigned a variant when they reach the step.
  </Step>
</Steps>

**Assignment is sticky.** A lead's variant comes from a hash of the enrollment and the step, so it is random across leads but always the same for one lead. A retry, a preview and the actual send all show the same variant. That is why the numbers can be trusted.

Each variant's character count is checked against the step's limit on its own. An invitation note that is too long fails every time it is tried, so the validator treats it as a blocking error.

## 2. A/B split step

To test **whole paths** — invite with a note versus without, LinkedIn-first versus email-first — use the **A/B split** step in the Logic group. Each branch gets a label and a weight, and everything after the branch is part of the test.

Assignment works the same way: sticky per lead.

## Reading the results

Results appear on the step in the builder and on the **Sequences** tab of [Reports](/reports/reports-overview).

Per variant: **sent**, **accepted**, **replied** and **interested**, with the three rates.

<Info>
  **Interested** is the number that matters. A message that gets lots of replies saying "please stop" is not the winner. Judging on positive replies is possible because every reply is [classified by intent](/inbox-and-manual-messaging/inbox-overview#intent).
</Info>

### When a winner is declared

No winner is shown until **every variant has at least 100 sends**. Below that the report says there isn't enough data yet, and shows the raw counts only.

Above it, the leading variant is marked, and each other variant gets a confidence figure from a two-proportion test — how sure we are that the difference is real and not chance. Treat anything under about 90% as "keep running".

### Promote the winner

**Promote variant** sets that variant to 100%, removes the others and publishes a new version. Leads already assigned to a losing variant finish on the text they were given; nobody's conversation changes mid-thread.

Promotion is available for message variants, not for an A/B split step — there the branches are whole paths, and which one to keep is your decision.

## Tips

* Test **one thing at a time**. Two variants that differ in length, tone and call to action tell you nothing about which change worked.
* Give it enough volume. At 20 invitations a day per sender, 100 sends per variant on a two-way test is about a week on one sender.
* Test the **first touch** first. It has the largest audience and the biggest effect on everything downstream.

## Related articles

* [Sequence Nodes](/sequences/creating-managing-sequences/sequence-nodes)
* [The Reports Page](/reports/reports-overview)
* [Personalization Variables and Fallbacks](/sequences/creating-managing-sequences/personalization-variables)
