Campaigns

Understanding Campaigns

A Campaign is the foundation of all outreach in Popp AI. It defines how your AI agent communicates with candidates, what questions to ask, and what happens when a conversation completes.

How Campaigns and Conversations Relate

┌─────────────────────────────────────────────────────────┐
│                       CAMPAIGN                          │
│  • Defines the outreach strategy                        │
│  • Contains AI agent configuration                      │
│  • Sets screening questions                             │
│  • Configures closing method (scheduling, call, etc.)   │
│                                                         │
│   ┌─────────────┐  ┌─────────────┐  ┌─────────────┐     │
│   │Conversation │  │Conversation │  │Conversation │     │
│   │  (John)     │  │  (Sarah)    │  │  (Mike)     │     │
│   └─────────────┘  └─────────────┘  └─────────────┘     │
└─────────────────────────────────────────────────────────┘
  • A Campaign is created once and can have many conversations
  • Each Conversation belongs to exactly one campaign
  • The campaign's settings (agent, questions, closing method) apply to all its conversations

Campaign Types

TypeUse Case
APPLICANT_OUTREACHReach out to candidates who have applied for a job
NEW_CANDIDATE_OUTREACHProactively source and engage new candidates
ENGAGEMENT_OUTREACHRe-engage candidates for non-job related purposes (e.g., surveys, events)

Communication Channels

Campaigns can communicate through different channels:

ChannelDescription
SMSText messages to mobile phones
WHATSAPPWhatsApp messaging
EMAILEmail messaging

Closing Methods

When a conversation completes successfully, the campaign determines what happens next:

MethodDescription
MEETING_URLProvide a scheduling link (e.g., Calendly)
PHONE_NUMBERProvide a phone number to call
CUSTOMCustom closing message
CALENDAR_MEETING_INTEGRATIONUse Popp's built-in scheduling

Campaign Statuses

StatusDescription
DRAFTCampaign is being configured
LIVECampaign is active and accepting conversations
ARCHIVEDCampaign is no longer active

Creating a Campaign

Currently, campaigns are created through the Popp AI dashboard. Once created, you can:

  1. Get the Campaign ID from the URL: https://ai.joinpopp.com/campaign/outbound/{CAMPAIGN_ID}
  2. Use the API to create conversations within that campaign
  3. List and filter campaigns via the API

List Campaigns

curl -X GET "https://api.popp.ai/v1/campaigns" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

Filter Campaigns

You can filter campaigns by various criteria:

# Filter by status
curl -X GET "https://api.popp.ai/v1/campaigns?campaignStatus=LIVE" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

# Filter by type
curl -X GET "https://api.popp.ai/v1/campaigns?campaignType=APPLICANT_OUTREACH" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

# Filter by channel
curl -X GET "https://api.popp.ai/v1/campaigns?channel=SMS" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

Get a Specific Campaign

curl -X GET "https://api.popp.ai/v1/campaigns/{campaignId}" \
  -H "x-api-key: YOUR_API_KEY" \
  -H "x-organization-id: YOUR_ORGANIZATION_ID"

Campaign Response

{
  "id": "10fe477c-5a4a-451d-9f18-b8340e2154e8",
  "organizationId": "org_123456",
  "campaignTitle": "Software Engineer Outreach",
  "campaignStatus": "LIVE",
  "type": "APPLICANT_OUTREACH",
  "channel": "SMS",
  "closingMethod": "MEETING_URL",
  "meetingUrl": "https://calendly.com/your-company/interview",
  "needsReview": false,
  "agent": {
    "id": "agent_abc123",
    "agentName": "Alex",
    "agentTone": "PROFESSIONAL"
  },
  "questions": [
    {
      "questionType": "TEXT",
      "content": "Do you have 5+ years of experience with React?",
      "isMandatory": true
    }
  ]
}

API Reference

Next Steps