# Preflight checks

Every readiness check Victoria AI runs before a campaign activates, what each message means, and how to fix it.

When you turn a campaign on, Victoria runs a readiness check before anything sends. The same check runs whether you activate in the app, through the AI Sales Copilot, or from a connected assistant or the API.

## How the preflight works

Turn on the switch at the top of **Campaigns → your campaign**. A window lists every check:

- **Failed** checks block activation. **Activate Campaign** stays disabled until you fix them.
- **Warnings** don't block. You can still select **Activate Campaign**; read each one first.
- **Passed** checks are collapsed under "N checks passed".

Each failed or warning check shows the exact problem and a **Fix →** link to the tab or page where you fix it. After fixing, close the window and turn the switch on again to re-run the check.

## Preflight check: Sequence has steps

**Message:** "Sequence has no steps. Add at least one step to start outreach."

The sequence (Variation A) is empty. **Fix:** open **Sequence** and add at least one step, or pick a template when you create the campaign.

## Preflight check: All steps have content

**Message:** "N steps are missing content."

An email step has no subject or no body, or a LinkedIn message step has no text. This blocks activation. Connection requests without a note are fine. **Fix:** open **Sequence**, click each empty step and fill it in.

## Preflight check: Variation B has steps

Shown only when A/B testing is on. **Message:** "Variation B has no steps. Add steps or disable A/B testing."

**Fix:** on **Sequence**, switch to **B** and select **Copy from Variation A** or add steps. Or select **Disable A/B**. See [A/B testing](https://docs.versionseven.ai/help/ab-testing).

## Preflight check: Variation B steps have content

Shown only when A/B testing is on. **Message:** "Variation B: N steps are missing content."

This blocks activation, like the check for Variation A. **Fix:** switch to **B** on **Sequence** and fill in every email and LinkedIn message.

## Preflight check: Variables resolve

**Message:** "Unknown variables: `{x}`. Check for typos or add them as custom/AI fields."

A variable in the copy isn't a lead field, a custom field from your leads, or one of the campaign's active AI Personalization fields. Variable names must match exactly. **Fix:** correct the spelling, or create an AI Personalization field with that name, or upload leads with a column of that name. See [Personalization fields](https://docs.versionseven.ai/help/personalization-fields).

## Preflight check: All leads have data for sequence variables

**Message (warning):** "N lead-variable gaps", naming each variable and how many leads lack it, ending "you can activate, or enrich them first."
**Message (blocking):** the same list, ending "upload or enrich before activating."

Some enrolled leads have no value for a lead field or custom field the sequence uses. At or below 10% of leads missing a variable, it's a warning; above that, it blocks. AI fields aren't counted. **Fix:** fill in the missing data on **Leads** (re-upload or enrich), remove those leads, or take the variable out of the copy.

## Preflight check: No double-bracket variables

**Message:** "Double-bracket variables: `{{x}}`", followed by a reminder to use single brackets, such as `{first_name}`.

`{{first_name}}` isn't a variable in Victoria and would send a broken message. **Fix:** on **Sequence**, change every `{{name}}` to `{name}`.

## Preflight check: Accounts assigned

**Message:** "No accounts assigned. Assign at least one in Settings."

**Fix:** open **Settings → Connected Accounts** and select at least one account. If the list is empty, connect one on **Sender Accounts** first.

## Preflight check: Leads, sequence, and accounts align

This check fails or warns for any of these messages:

- "Sequence has LinkedIn steps but no LinkedIn account is assigned." **Fix:** assign a LinkedIn account in **Settings → Connected Accounts**.
- "Sequence has email steps but no email account is assigned." **Fix:** assign a mailbox in **Settings → Connected Accounts**.
- "N of M leads have no email", followed by "add a LinkedIn step or remove LinkedIn-only leads" or "They will be skipped". The sequence has no LinkedIn steps, but some leads only have a LinkedIn URL. It warns when 10% or fewer of the leads are affected (they're skipped) and blocks above that. **Fix:** add LinkedIn steps, or remove those leads, or add their emails.
- "N LinkedIn-only leads", followed by "assign a LinkedIn account in Settings". **Fix:** assign a LinkedIn account in **Settings → Connected Accounts**.
- "N of M leads have no LinkedIn URL", followed by "add an email step or remove email-only leads" or "They will be skipped". The sequence has no email steps, but some leads only have an email. Same thresholds. **Fix:** add email steps, or remove those leads.

## Preflight check: Accounts not active in another campaign

**Message:** "N accounts are also active in "Other campaign". Each account should run in one campaign at a time."

An account you assigned already sends for another active campaign. This blocks activation. **Fix:** pause the other campaign, or unassign the account in this campaign's **Settings → Connected Accounts** and assign a different one. Settings marks an account in use as **Active in:** with the other campaign's name.

## Preflight check: Accounts within subscription limit

This check fails for either message:

- "N assigned accounts are no longer active. Reconnect on the Sender Accounts page." An assigned account is disconnected. **Fix:** reconnect it on **Sender Accounts**, or unassign it. See [Reconnect a sender](https://docs.versionseven.ai/help/reconnect-a-sender).
- "You have N active LinkedIn accounts but your subscription covers M. Increase quantity in Billing." You have more active accounts on one platform than your plan covers. **Fix:** add seats or mailboxes in **Credits & Billing**, or disconnect accounts you don't use.

## Preflight check: Email sender domains authenticated (SPF, DKIM, DMARC)

Victoria checks the DNS records of each assigned mailbox's domain. A result older than 24 hours is checked again during the preflight.

- **Blocking:** "… failed the email authentication check (no SPF record). Fix SPF/DMARC on the Sender Accounts page before activating." **Fix:** add or correct the record named in the message, then re-check on **Sender Accounts**. See [DNS setup](https://docs.versionseven.ai/help/dns-setup).
- **Warning:** "… passed the email authentication check with warnings." You can activate; the details are on **Sender Accounts**.
- **Warning:** "We couldn't verify SPF, DKIM and DMARC for … yet." The check couldn't complete. You can activate; it retries on its own.

## Preflight check: Leads enrolled

**Message:** "No leads enrolled. Upload leads in the Leads tab."

**Fix:** open **Leads** and use **Find Leads**, **Add Lead** or **Upload CSV**.

## Preflight check: Active subscription

This check fails with one of these messages. Every fix is on **Credits & Billing**:

- "No subscription found. Start a trial in Billing."
- "Payment failed. Update your card in Billing to resume sending." See [Failed payments](https://docs.versionseven.ai/help/failed-payments).
- "Subscription is canceled. Reactivate in Billing."
- "Subscription is set to cancel at period end. Reactivate in Billing."
- "Trial has ended. Add a payment method in Billing." See [Free trial](https://docs.versionseven.ai/help/free-trial).
- "Subscription is not active. Check Billing."

## When the preflight can't run

If the window says **Couldn't check readiness**, the check itself didn't complete. Select **Retry**. If it keeps failing, close the window and try again in a minute; a campaign is never activated without a completed check.
