I imported a CSV with custom fields but my template variables show 'undefined' — what should I do?
This is a real bug — fixed Apr 30, 2026 (LL#258). Previously, if your campaign template referenced a custom variable like {{custom.Linkedinconnection}} and your imported CSV didn't have that column (typo, missing column, capital-letter mismatch), the campaign engine had two failure modes:
- Pre-LL#235: render the message with a literal 'undefined' and send anyway (rude, kills reply rates).
- Post-LL#235: burn the prospect with a terminal status='failed' and last_error='template_variable_unresolved' (irrecoverable without manual operator intervention).
Customer Humair Ali hit this — 9 of 15 prospects silently failed before he noticed. The fix is two-layer:
(1) Validate-at-launch — the campaign launch path now enumerates every {{custom.<name>}} reference in your template, intersects against the actual column set in your prospect data, and BLOCKS launch with an actionable error if any references aren't satisfiable. The error names the missing column AND lists every column that DOES exist in your prospect data, so you can immediately see whether you have a typo (capital L vs lowercase l, missing s, etc.) or a genuinely-missing column.
(2) Defer-at-send — if a template variable somehow still unresolves at send time (race: campaign launched against audience N, then audience N had a column dropped before the send fired), the runtime renderer now writes linkedin_status='pending_template_variable_resolution' instead of a terminal failure. The prospect re-enters the queue on the next campaign re-evaluation, so once you fix your template OR re-import the CSV with the corrected column, the affected prospects retry automatically — no manual un-burn needed.
How to fix this on existing prospects:
- Option A — edit your template to remove the missing variable. Save the campaign. Click Resume. Affected prospects retry on the next campaign tick.
- Option B — re-import the CSV with the column populated (or rename the column to match your template's spelling). Click Resume. Affected prospects retry.
- Option C — if you used a typo (capital L on Linkedinconnection but your CSV has lowercase linkedinconnection), the simplest fix is to edit the template to use the lowercase name, save, and click Resume.
No LinkedIn API calls were made for the affected prospects (the deferred renderer doesn't touch LinkedIn), so there's no rate-limit cost to retrying.