Why launch shows "some prospects missing template data"

When your campaign template references a custom field that isn't filled in on every prospect (for example, a placeholder like {{custom.hook}} when five of sixty-nine prospects have no hook value), WarmySender blocks the launch and names up to five affected prospects per missing field. You can fix the data and re-launch, remove those prospects from the audience, or click Launch anyway — affected prospects are parked and auto-resume the moment their data is filled in.

What this means

Short answer: you're trying to launch a campaign, but the launch dialog says one or more prospects don't have the data your template references — for example, your message text uses {{custom.hook}} but a few prospects in the audience have no value in their hook field. WarmySender refuses to send those messages with a blank or broken placeholder, so it stops the launch and shows you exactly who's affected and which field is missing.

You probably saw a dialog that looks something like this:

Campaign template references variables that are missing on enrolled prospects.

The variable {{custom.hook}} is referenced in step 1, but 5 of 69 prospects don't have a hook value: Marie Dupont, James Carter, Priya Sharma, Tomás Rivera, Anna Schmidt.

[Fill in missing data]  [Remove affected prospects]  [Launch anyway]

The dialog names up to five affected prospects per missing field, so you can spot-check who's flagged and decide what to do. The full list is available from the campaign's prospect list filtered to "missing data."

WarmySender is a 4-pillar outreach platform — Cold Emailing, Email Warmup, LinkedIn Outreach, and Multichannel sequences. This launch-time check runs on every channel: if your template references a custom field that some prospects don't have, the same dialog appears whether you're launching a cold email campaign, a LinkedIn campaign, or a multichannel sequence that uses both.

Why this happens

Short answer: personalization placeholders only work when every prospect has a value in the referenced field. If your template includes {{custom.hook}} but five prospects in your imported list have no hook value, those five would receive a message with a blank spot or a literal placeholder — which is exactly the kind of mistake that ends up in screenshots on social media. We block the launch instead.

A common shape of this problem: you ran an outside tool that generates a personalized opening line per prospect (an "icebreaker" or "hook"), exported the prospects to a CSV with a hook column, and imported the list into WarmySender. The outside tool worked for sixty-four prospects but failed silently on five — maybe the prospect's profile was thin, the tool hit an error, or a few rows came back blank. Your template includes {{custom.hook}} because most prospects have one, but the five blank rows would render as Hi Marie, , with an awkward gap at the start of the message.

Other common shapes:

The launch-time check catches every shape automatically. You don't have to remember to inspect your data — WarmySender does the inspection for you and tells you exactly which prospects and which field need attention before any message goes out.

Three ways to fix it

Short answer: you have three options — fill in the missing data on the named prospects, remove them from the audience, or launch anyway and let WarmySender park them until their data is filled in. There's no wrong choice; the right one depends on whether the affected prospects are valuable enough to fix versus skip.

Option 1 — Fill in the missing data on the named prospects, then re-import

Best when the affected prospects are valuable and you can produce the missing field for them. Steps:

  1. Note the affected prospect names from the launch dialog (the dialog shows up to five per missing field, with a link to the full list if you have more).
  2. Open your source data — the CSV you imported, your spreadsheet, your CRM, or whichever tool generated the per-prospect field — and fill in the missing values for those prospects.
  3. Re-import the CSV with the missing values now populated. Choose Update existing prospects in the import dialog — WarmySender matches by email address (or LinkedIn URL on a LinkedIn-only campaign) and adds the new values to the existing prospect rows without disturbing the rest of your data.
  4. Re-launch the campaign. The launch dialog should now pass with all prospects ready to go.

If your missing field is something an AI tool generates (a personalized hook, a research note, a tailored value-prop), you can also fill the field manually for just the few affected prospects from the prospect detail page — open each one, edit the custom field directly, and save. Often the affected count is small enough (five out of sixty-nine in the example above) that hand-filling is faster than re-running the tool.

Option 2 — Remove the affected prospects from the audience

Best when the affected prospects aren't worth fixing — for example, they were marginal leads anyway, or producing the missing field for them would take more effort than the expected return justifies.

  1. Click Remove affected prospects in the launch dialog. WarmySender removes them from the campaign's audience in one click — they stay in your prospect database, they just don't go into this campaign.
  2. Re-launch the campaign. The remaining prospects all have the data they need, so the launch passes immediately.

The removed prospects are not deleted. They're still in your prospect list and available for any future campaign — you'd just need to add the missing field before enrolling them.

Option 3 — Launch anyway

Best when you want the campaign running for the prospects whose data is complete, while keeping the affected prospects parked until their data is filled in. This is the path most customers choose.

  1. Click Launch anyway in the launch dialog. The campaign launches immediately for every prospect whose data is complete; the affected prospects are parked — held aside in a waiting state, not sent, not deleted, not lost.
  2. Fix the missing data when you can — re-import the CSV with the field populated, or edit the prospects one by one from the prospect detail page. The moment a prospect's data is complete, they automatically rejoin the normal sending flow and the campaign sends to them just like any other prospect, respecting your sending window, daily limits, and account ramp.

No clicks needed once the data is fixed. You don't have to find the parked prospects, click Resume, or do anything else — the platform watches for the missing data, notices the moment it appears, and resumes the prospect automatically. The first sends for previously parked prospects typically start landing within a few minutes of the data being filled in.

How we keep your account safe

Short answer: affected prospects do not send with missing data — full stop. No "Hi Marie, , I noticed your team..." goes out. No blank placeholder, no literal token text, no rude undefined. The parked prospects sit in a waiting state until their data is complete, and only then do they enter the normal sending flow with your usual sending window, daily limit, and account ramp.

This protects two things at once. First, your reputation as a sender — recipients seeing a broken message with a visible placeholder is the fastest way to land in their spam folder and lose them as a future contact. Second, your daily sending budget — parked prospects don't consume your daily caps, don't burn ramp budget, and don't count against your account's safety limits. Nothing burns. When the parked prospects eventually resume, every send goes through the same account-safety gates as any normal send: per-account daily limits, weekly limits, sending window, ramp ceiling, and per-recipient cooldown.

Why we don't auto-skip them

Short answer: a prospect with a missing custom field might still be a great lead — the missing field might be something you can fill in with a minute of effort. Auto-skipping them silently would mean losing valuable prospects that are simple to recover. So we surface the choice to you instead of making it for you.

This is a deliberate design decision. The launch dialog is the moment you have the full audience in front of you and you can see exactly who would be affected. That's the right time to make the call — fix the data, remove the prospect, or park them for later. Burying that decision (auto-skip and don't tell you, or auto-skip and put a small note somewhere you might miss) would mean prospects you'd have wanted to fix get quietly excluded. We'd rather give you the choice up front.

If you launch with the parked-prospect path repeatedly without ever filling in the missing data, the parked prospects accumulate in your campaign's waiting for data bucket and are visible on the campaign detail page. They don't time out or expire — they wait as long as you need. If you decide later that you're not going to fill in their data, you can remove them from the campaign in one click and they'll exit the parked state.

Common questions

How do I know which prospects are missing data?

The launch dialog names up to five affected prospects per missing field directly. For each missing variable like {{custom.hook}}, the dialog shows up to five prospect names that don't have a value in the referenced field — for example: "5 of 69 prospects don't have a hook value: Marie Dupont, James Carter, Priya Sharma, Tomás Rivera, Anna Schmidt." If the affected count is larger than five, the dialog links to the full filtered list so you can see everyone.

What happens to the prospects when I launch anyway?

They're parked — held in a waiting state, not sent, not deleted, not lost. The campaign launches normally for every prospect whose data is complete; the affected prospects sit aside with a status that says they're waiting for their data to be filled in. The moment any parked prospect's missing field has a value (via re-import or by editing them individually), they automatically rejoin the normal sending flow within seconds.

How long do parked prospects wait?

As long as you need. There's no time-based expiration — parked prospects wait until either (a) their data is filled in and they auto-resume, or (b) you decide to remove them from the campaign. They don't consume your daily sending budget, they don't burn ramp progress, and they don't show up as "failed" or "errored" anywhere. They're explicitly in a waiting state by design.

Will I see a notification when they resume?

The campaign's parked-prospect count on the campaign detail page drops as prospects resume — that's the in-app signal. Each newly resumed prospect appears in the campaign's normal activity log when their first send goes out. If you want to track resumes proactively, the campaign detail page surfaces a "Waiting for data" tile with the current count; refresh it after a re-import and you'll see the count drop.

Can I review the affected prospects before launching?

Yes. The launch dialog lists up to five affected prospect names per missing field, with a link to the full filtered list on the campaign's prospect page. You can open the prospect detail page for any of them to see their full data, decide whether they're worth fixing, and either fill in the missing field on the spot or remove them from the audience — all without leaving the launch flow.

Can I prevent this from happening before I launch in the first place?

Yes — use the Preview pane in the step editor before launching. It renders your message with a real prospect's data substituted in. Switch the preview's prospect selector through a few different prospects in your audience; if any show a blank where a custom field should be, that's a prospect whose data is missing. You'll catch the same issue the launch dialog catches, with the bonus of seeing exactly how the rendered message reads for affected prospects.

Will fixing the data trigger an immediate send to parked prospects?

The parked prospects rejoin the normal sending flow within seconds of their data being filled in, but the first sends respect your sending window, daily limits, account ramp, and per-recipient cooldown — same as any other prospect. So if your daily limit is already exhausted on the day you fix the data, the first sends to resumed prospects will land on the next sending window. There's no burst.

Does the launch-time check affect my account safety on LinkedIn or my email reputation?

No. The check runs entirely on our side before any send goes out — no LinkedIn message attempt, no email connection, no provider-side signal at all. Parked prospects don't consume daily limits, don't affect ramp progress, and don't show up as a "failure" on your LinkedIn account or your sender reputation. The whole point is that broken sends never happen — your account safety is strengthened, not weakened.

What if the missing field is one I never intended to use?

If you wrote {{custom.hook}} in your template but realize you don't actually need the hook field, just remove the placeholder from your message text and re-launch. The launch-time check only flags fields you've actually referenced in your message — remove the reference and the check passes for every prospect, no matter what data they have. You can also use a default fallback like {{custom.hook | default: ""}} if you want the placeholder to render as nothing for prospects without the field; this counts as a complete template and the launch passes.

People also ask

Common adjacent questions about the launch-time check and parked prospects that come up alongside this guide.

Where do I see the parked prospects after launching anyway?

On the campaign detail page, a Waiting for data tile shows the current count of parked prospects. Click into it for the full list. Each prospect's row shows which field they're missing, so you can see at a glance whether the same field is missing across several prospects (suggesting a re-import is the right fix) or whether different prospects are missing different fields (suggesting hand-fills).

Does the same launch-time check run on cold email campaigns?

Yes. The same custom-field check runs on every channel WarmySender supports — cold email, LinkedIn, and multichannel sequences that combine both. If your template references a custom field that some prospects don't have, the launch dialog appears with the same options regardless of which channel the campaign uses. The check covers subject lines and message bodies on both channels, plus LinkedIn invitation notes and InMail subject lines.

What if I add new prospects to a running campaign after launching anyway?

The same check runs on the new prospects at enrollment time. If any of them are missing the referenced field, they're parked in the same waiting state — they don't send with missing data, they wait for their data to be filled in. The campaign keeps sending normally to every prospect whose data is complete.

Can I park prospects intentionally instead of fixing them right away?

Yes — that's exactly what Launch anyway is for. Park them at launch, fix the data on your own schedule, and they'll resume automatically when the data is filled in. There's no penalty for parking prospects, no time pressure, and no risk to your account safety. Some customers use this deliberately: launch the campaign immediately for the bulk of the audience, then progressively fill in the missing data for the edge-case prospects over the next few days as time permits.

What if the data I fill in is wrong or low-quality?

The launch-time check only verifies that the field has a value — it doesn't check that the value is good. If you fill in a low-quality value (a one-word filler, a stand-in like "TBD", or a typo), the prospect will resume and send with that value substituted into the message. The fix is to use a sensible default fallback in your template (like {{custom.hook | default: "I came across your profile and thought I'd reach out"}}) for any field whose data quality you can't fully trust — that way, blank values render as the fallback text instead of being parked, and you have control over what shows up in low-quality cases.

Does this same check catch typos in built-in variables like {{firstName}}?

A typo in a built-in variable name (like writing {{firstNaem}} with letters transposed) renders as an empty string at send time and doesn't trigger this launch-time dialog, because the platform doesn't know that name was intended to be a built-in variable. Use the Preview pane in the step editor to catch built-in variable typos before launching — preview the message against a few prospects you know have names, and if the position is blank, the variable name has a typo. For custom field typos (where your template references {{custom.linkedinconnection}} but your CSV column is {{custom.linkedinConnection}} with different capitalization), the launch-time check catches the mismatch and names the affected prospects.

Can I bulk-fix all the parked prospects at once?

Yes. The fastest way is a re-import — export your prospect list to a CSV, fill in the missing column for the affected rows in your spreadsheet tool of choice, and re-import with Update existing prospects. WarmySender matches on email address (or LinkedIn URL for LinkedIn-only campaigns) and adds the new values to the existing prospects in one pass. As soon as the import completes, every parked prospect whose missing field is now filled in resumes automatically within seconds.

Still stuck after working through the launch dialog? Email [email protected] with the campaign name and one prospect that's flagged as missing data, and we'll take a look right away.