Maverick Docs
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:

  1. Fetches all campaigns for each workspace
  2. Pulls lead statuses, reply counts, and conversation data
  3. Updates client_leads table with latest statuses
  4. Bison API always returns 15 items per page regardless of per_page param — the sync paginates using meta.last_page

Lead Statuses and Interest Flow

Source of Truth: Bison

  • is_interested is set ONLY by the lead_interested Bison webhook
  • AI audit flags needs_review=True but NEVER sets is_interested=True
  • sentiment_source='bison' means Bison classified this lead
  • sentiment_source='pending_bison' means awaiting Bison's verdict
  • sentiment_source='ai_audit' means AI classified (not interested per Bison)

Pipeline Stages

StageMeaning
newFresh lead, no engagement yet
contactedEmail sent
repliedLead replied to email
follow-upIn follow-up sequence
interestedConfirmed interested (Bison webhook)
not_interestedConfirmed not interested
unsubscribedLead opted out
bouncedEmail bounced

Note: Bison uses hyphens (follow-up) — the system normalizes to underscores internally.

How To Use It

Viewing Campaigns

  1. Go to Campaigns in the sidebar
  2. Select workspace — see all synced campaigns with send dates, open rates, reply counts
  3. Click a campaign to see individual leads

Viewing Leads

  1. Go to Leads in the sidebar
  2. Filter by workspace, month, status, interest
  3. Click a lead to see conversation thread (via bison_conversation_url)

Common Issues

SymptomCauseFix
Campaigns not showingSync hasn't run yet or Bison tokens expiredCheck last sync time. Go to Settings → Bison Tokens to verify
Lead shows pending_bison for daysBison hasn't classified yetNormal for low-engagement leads. AI audit will eventually classify
Conversation URL returns 404Bison conversation was deleted or lead was removedExpected for cleaned-up leads
Reply count mismatchSync lag — Bison data is up to 1 hour behindWait for next sync cycle
  • BisonAPIHighErrorRate: Campaign sync will fail if Bison is down
  • EmailPeriodicQueueDepthHigh: Campaign sync tasks queued >20

On this page