Operations
Campaigns & Leads
Bison campaign sync, lead statuses, interested/not-interested flow
What This Does
After contacts are uploaded to Email Bison, they become leads in active campaigns. The dashboard syncs campaign data back from Bison and tracks lead engagement — replies, interest signals, and conversation threads.
How Campaign Sync Works
A Celery Beat task runs every hour to sync campaign data from Bison:
- Fetches all campaigns for each workspace
- Pulls lead statuses, reply counts, and conversation data
- Updates
client_leadstable with latest statuses - Bison API always returns 15 items per page regardless of
per_pageparam — the sync paginates usingmeta.last_page
Lead Statuses and Interest Flow
Source of Truth: Bison
is_interestedis set ONLY by thelead_interestedBison webhook- AI audit flags
needs_review=Truebut NEVER setsis_interested=True sentiment_source='bison'means Bison classified this leadsentiment_source='pending_bison'means awaiting Bison's verdictsentiment_source='ai_audit'means AI classified (not interested per Bison)
Pipeline Stages
| Stage | Meaning |
|---|---|
new | Fresh lead, no engagement yet |
contacted | Email sent |
replied | Lead replied to email |
follow-up | In follow-up sequence |
interested | Confirmed interested (Bison webhook) |
not_interested | Confirmed not interested |
unsubscribed | Lead opted out |
bounced | Email bounced |
Note: Bison uses hyphens (follow-up) — the system normalizes to underscores internally.
How To Use It
Viewing Campaigns
- Go to Campaigns in the sidebar
- Select workspace — see all synced campaigns with send dates, open rates, reply counts
- Click a campaign to see individual leads
Viewing Leads
- Go to Leads in the sidebar
- Filter by workspace, month, status, interest
- Click a lead to see conversation thread (via
bison_conversation_url)
Common Issues
| Symptom | Cause | Fix |
|---|---|---|
| Campaigns not showing | Sync hasn't run yet or Bison tokens expired | Check last sync time. Go to Settings → Bison Tokens to verify |
Lead shows pending_bison for days | Bison hasn't classified yet | Normal for low-engagement leads. AI audit will eventually classify |
| Conversation URL returns 404 | Bison conversation was deleted or lead was removed | Expected for cleaned-up leads |
| Reply count mismatch | Sync lag — Bison data is up to 1 hour behind | Wait for next sync cycle |
Related Alerts
- BisonAPIHighErrorRate: Campaign sync will fail if Bison is down
- EmailPeriodicQueueDepthHigh: Campaign sync tasks queued >20