Back to Help Center

A/B testing campaign messages

Use 'manage_variants' to list, add, or remove message arms on the first invite/DM step or on text, voice-note, video, image, and document follow-ups. Crispy assigns one deterministic arm per campaign contact at the first variant-bearing send and persists it for later steps and retries. Variable substitution runs after arm selection.

A campaign may have different arm counts per step. When the assigned index does not exist on a step, Crispy deterministically uses that step's base copy and records variant_index as NULL. 'get_variant_stats' counts only activities with a recorded non-NULL arm, so fallback/base sends do not enter per-arm results.

Sequence steps after step 0, email/InMail, and webhook variants are not wired. 'manage_variants' and 'get_variant_stats' fail closed with VARIANTS_NOT_APPLIED when those paths are configured.

Still stuck? Email [email protected] or browse answered questions.