Campaign statuses and lifecycle
A guide to every status badge a campaign can show, what triggers each transition, and how to act on - or fix - the state you see.
Overview
Every campaign in Ken AI moves through a defined lifecycle: from a blank Draft through active Processing, into a Ready-to-launch state, and finally into Sending, Paused, or Completed. The campaign list at /campaigns shows a colored status badge for each campaign. Hovering the badge when it reads "Processing" reveals which specific sub-stage (for example, "Segmenting" or "Generating links") is running right now.
This article explains what each status means, what action buttons appear at each stage, and what to check when a campaign is stuck or showing an unexpected status.
Before you start
You need an active Ken AI workspace and at least one campaign created. Campaign status transitions are triggered either by the system (as contacts are enriched and verified) or by user actions (clicking Start, Launch Campaign, Pause Campaign, or Resume Campaign inside the campaign detail view). There are no special plan restrictions for viewing statuses, but launching a campaign requires that all readiness checks have passed.
How to read and act on campaign statuses
Step 1 - Open the campaigns list
Go to /campaigns in the sidebar. Each row shows the campaign name, one or more status badges, and metrics (emails sent, clicks, positive replies). If a campaign has multiple active states at once - for example "Processing" and "Ready" - both badges appear side by side.
Step 2 - Understand what each status means
| Badge | Color | What it means | |-------|-------|---------------| | Draft | Gray | The campaign exists but workflows have not started. Setup is still in progress. | | Processing | Light orange | The pipeline is actively working: scraping, qualifying, segmenting, finding emails, personalizing, or rewriting. Hover the badge to see which sub-stages are running. | | Ready | Orange | At least one contact has cleared every pipeline stage and the campaign can be launched. Processing may still be running alongside this badge. | | Launching | Pulsing blue | The campaign has been submitted to the sending layer and is being set up there. No action is needed. | | Sending | Blue | Emails are actively going out. | | Paused | Medium gray | Sending has been paused. No new emails are going out until you resume. | | Completed | Dark blue | The campaign has finished sending to the full contact limit. | | Error | Red | Something went wrong - see Troubleshooting below. |
Step 3 - Use the action button in the campaign detail
Open any campaign to see the action button in the header. The button changes as the campaign moves through its lifecycle:
- Draft - button reads "Start". Clicking it runs the pre-launch checklist first. If any check fails, a toast lists each failing reason and the campaign does not start.
- Processing (Building) - button reads "Pause". Clicking it stops the pipeline.
- Ready - button reads "Launch Campaign". Clicking it begins the sending setup.
- Sending - button reads "Pause Campaign".
- Paused - button reads "Resume Campaign".
- Error - button reads "Restart".
- Completed - no action button is shown.
Step 4 - Clear the pre-launch checklist before starting a Draft
When a campaign is in Draft, the header shows a checklist of everything the backend requires before it will accept a Start. The campaign cannot start until all items are passing. The checklist covers:
- At least one contact has been imported
- Campaign name is set
- Contact limit is greater than zero
- A valid sending schedule is configured (days, start time, end time, and a supported timezone)
- At least one email sequence step with copy exists
- Every AI variable used in the copy maps to a prompt that will produce output at send time
Fix each failing item in the campaign settings, then click Start again. The checklist refreshes automatically after every save - you do not need to reload the page.
How it works
A campaign carries two internal states at the same time. One tracks where the data pipeline is (scraping, qualifying, segmenting, and so on). The other tracks where email sending is (not started, scheduled, sending, paused, completed). The platform resolves those two states into the badge or badges you see, using a fixed priority order: the sending state takes precedence first; only when sending has not started does the system interpret the pipeline state.
This design means two badges can appear simultaneously. When a campaign is still enriching contacts but already has some that are fully ready, it shows both "Processing" and "Ready" at the same time. That is intentional - it means the campaign has launch-ready contacts now and you do not have to wait for the full pipeline to finish before clicking Launch Campaign.
A failed launch is treated as still-ready, not broken. If the delivery setup succeeds but the contacts export step fails, the campaign resolves back to "Ready" and the "Launch Campaign" button reappears. This avoids a dead end where a retry was impossible without a manual database fix.
The Processing badge is expanded by a deny-list approach: any sub-stage flag the backend reports that is not in the "finished" set is shown as an active sub-stage. This means new pipeline stages surface in the UI automatically as the platform adds them.
When sending is active, the backend collapses all statuses to "Sending," but the frontend reconstructs a "Processing" pill alongside it when in-flight sub-stages are detected. So a sending campaign that is still personalizing late-arriving contacts shows "Processing + Sending."
The platform also records a launch timestamp the first time a campaign enters "Sending," and it keeps a full audit log of every status transition. That log is what powers the lifecycle metrics the team uses to measure draft-to-launch time.
Troubleshooting & debugging
Symptom: Campaign is stuck on "Processing" for hours
- Likely cause: One pipeline stage is stalled (common with large contact lists or enrichment timeouts).
- What to check: Hover the Processing badge to see which sub-stage is named. If the same sub-stage has been listed for several hours, contact support with the campaign ID and sub-stage name. Do not Pause and Restart unless support advises it - that can interrupt an enrichment batch in progress.
Symptom: "Start" button is grayed out on a Draft campaign
- Likely cause: One or more readiness checks are failing.
- What to check: Open the campaign detail. The checklist under the action button shows which items are not passing (marked with a red indicator). Fix each one - common blockers are a missing sending schedule, no imported contacts, or an AI variable in the copy that has no matching output prompt.
Symptom: Campaign shows "Error" after clicking Launch Campaign
- Likely cause: The delivery export step failed after the delivery layer was set up.
- What to check: Click "Restart" - the platform detects that setup succeeded and treats the campaign as Ready again, so a retry usually works. If Error persists after a second attempt, contact support with the campaign ID.
Symptom: Campaign shows "Ready" but I expected it to show "Error" after a failed launch
- This is correct behavior, not a bug. A launch failure where delivery setup succeeded resolves back to "Ready" so the retry path is clear.
Symptom: Both "Processing" and "Ready" badges appear at the same time
- This is expected. It means enrichment is still running on some contacts but enough have cleared every stage that the campaign can be launched now. You can launch immediately or wait for more contacts to finish processing.
Symptom: Campaign shows "Processing" even though sending is active
- This is expected. When contacts are still being personalized or rewritten while sending is underway, the UI shows both "Processing" and "Sending." The sending is not blocked - emails go out on schedule while the pipeline continues in the background.
Symptom: Timezone validation error when saving the campaign schedule
- Likely cause: The configured timezone is not in the supported list. Raw "UTC," "GMT," and "Etc/UTC" are not accepted by the sending layer.
- What to check: Open the campaign's sending schedule settings. If the timezone reads "UTC" or "GMT," the platform will automatically coerce it to "Atlantic/Reykjavik" - Iceland stays on UTC year-round with no daylight-saving shift, making it the only accepted zone that preserves true UTC semantics. If you see a 422 error from the sending layer, this coercion may not have applied yet; re-save the schedule after selecting a valid timezone from the dropdown. The dropdown only shows supported options, so selecting from it avoids this issue entirely.
- Where to look: If validation passes on the Ken side but the campaign still errors at launch, check whether the stored timezone is in the sending layer's accepted list. Support can verify this against the allowed timezone list.
Symptom: Draft campaign shows no "Processing" activity even though contacts were imported
- Likely cause: Campaigns in Draft status are deliberately excluded from automatic background processing. The pipeline does not start until you click Start and the campaign passes the readiness checklist.
- What to check: Confirm the campaign is still in Draft (not Processing). If it is, this is expected behavior - the platform deliberately withholds enrichment and email-finding jobs until you explicitly start the campaign. Click Start, clear any failing checklist items, and the pipeline will begin.
Symptom: Campaign shows "Completed" but emails sent is lower than the contact limit
- Likely cause: Some contacts were bounced, unsubscribed, or ineligible before the full limit was reached, causing the pipeline to exhaust valid contacts.
- What to check: Check the Analytics tab for bounce and unsubscribe counts. This is a terminal state - duplicate the campaign with a fresh contact list if you want to continue outreach.
FAQ
Can I launch a campaign before processing finishes? Yes. When the campaign shows both "Processing" and "Ready," the "Launch Campaign" button is available. You launch the contacts that are already ready, and the system continues to process the rest. Newly ready contacts are added to the sending sequence automatically.
What is the difference between Paused and Completed? "Paused" means you stopped sending manually - you can resume at any time. "Completed" means the campaign reached its contact limit and there is nothing left to send. Completed is a terminal state.
Why does my campaign say "Processing" when it is also sending? The pipeline and the sending layer run in parallel. "Processing" here means some contacts are still being enriched or personalized. Those contacts will enter the sequence once ready. This is normal behavior for large campaigns.
I clicked "Start" and nothing happened. Why? If any readiness checks are failing, clicking Start shows a toast for each failing reason but does not start the campaign. Read the toast messages and fix the listed issues before trying again.
Can a campaign go from Completed back to Sending? No. Completed is a terminal state. To send more emails to the same audience, duplicate the campaign from the campaign list.
How long does a campaign typically stay in "Launching"? Launching is usually a brief transition - seconds to a few minutes. The pulsing blue badge indicates setup is in progress. If Launching persists for more than 15 minutes, contact support.