112 lines
3.6 KiB
Markdown
112 lines
3.6 KiB
Markdown
# Campaign Management
|
|
|
|
Campaigns are the top-level organizational unit for backlink outreach. Every lead, email, attempt, reply, and analytics data point belongs to a campaign.
|
|
|
|
## Creating a Campaign
|
|
|
|
A campaign requires only a name. Add a description and keywords to make discovery and reporting easier.
|
|
|
|
**API:** `POST /api/v1/backlink-outreach/campaigns`
|
|
|
|
```json
|
|
{
|
|
"name": "SaaS Growth Blogs Q3",
|
|
"description": "Outreach to SaaS marketing blogs for guest post placements",
|
|
"keywords": ["SaaS", "growth marketing", "B2B"]
|
|
}
|
|
```
|
|
|
|
**UI:** Navigate to **Backlink Outreach → Campaigns → + New Campaign**.
|
|
|
|
!!! tip "Naming conventions"
|
|
Use a consistent naming scheme like `[Vertical] [Content Type] [Period]` — e.g., "Fitness Guest Posts June" or "AI Startups Roundup Q3".
|
|
|
|
!!! warning "Ownership validation"
|
|
Campaigns are scoped to the authenticated user. API calls with a `campaign_id` that does not exist or belongs to another user return `404 BacklinkCampaignNotFoundError`. This applies to all campaign operations (get, delete, add leads, send emails, etc.).
|
|
|
|
## Campaign List View
|
|
|
|
The campaign list shows:
|
|
- **Name** and description
|
|
- **Lead count** broken down by status
|
|
- **Creation date**
|
|
- **Quick actions**: Add leads, view analytics, manage templates
|
|
|
|
## Campaign Detail View
|
|
|
|
Click a campaign to see its full detail:
|
|
- **Leads tab**: All leads with status, quality score, and actions.
|
|
- **Email tab**: Compose and preview outreach emails.
|
|
- **Outreach tab**: Send emails, view attempts, manage follow-ups.
|
|
- **Inbox tab**: Replies with auto-classification tags.
|
|
- **Analytics tab**: Campaign-specific charts and metrics.
|
|
|
|
## Managing Leads
|
|
|
|
### Adding Leads
|
|
|
|
**Single lead:**
|
|
`POST /api/v1/backlink-outreach/campaigns/{campaign_id}/leads`
|
|
|
|
```json
|
|
{
|
|
"website_url": "https://example.com",
|
|
"website_title": "Example Marketing Blog",
|
|
"contact_email": "editor@example.com",
|
|
"quality_score": 0.85,
|
|
"relevance_score": 0.72,
|
|
"guest_post_likelihood": 0.65,
|
|
"source": "manual"
|
|
}
|
|
```
|
|
|
|
**Bulk add:**
|
|
`POST /api/v1/backlink-outreach/campaigns/{campaign_id}/leads/bulk`
|
|
|
|
Send an array of lead objects to add multiple leads at once.
|
|
|
|
### Updating Lead Status
|
|
|
|
Lead status lifecycle:
|
|
|
|
```mermaid
|
|
stateDiagram-v2
|
|
[*] --> discovered
|
|
discovered --> contacted: Send outreach email
|
|
contacted --> replied: Lead replies (interested)
|
|
contacted --> bounced: Email bounced / not interested
|
|
replied --> placed: Backlink published
|
|
replied --> lost: Lead declined after reply
|
|
placed --> [*]
|
|
lost --> [*]
|
|
bounced --> [*]
|
|
```
|
|
|
|
**Single update:** Click the status button on a lead card.
|
|
|
|
**Bulk update:** Select multiple leads → choose new status → confirm.
|
|
|
|
!!! warning "Bulk status updates"
|
|
Bulk updates may partially fail. If some leads can't be updated, the response includes a `failed` list and the UI shows a warning toast with the count of failures.
|
|
|
|
## Deleting a Campaign
|
|
|
|
`DELETE /api/v1/backlink-outreach/campaigns/{campaign_id}`
|
|
|
|
!!! warning "Irreversible"
|
|
Deleting a campaign removes all associated leads, attempts, replies, and analytics data. This action cannot be undone.
|
|
|
|
## Campaign Organization Best Practices
|
|
|
|
| Practice | Why |
|
|
|---|---|
|
|
| One campaign per vertical | Keeps leads relevant and analytics clean. |
|
|
| Add keywords at creation | Powers better discovery queries later. |
|
|
| Review leads before sending | Avoid wasting daily caps on low-quality leads. |
|
|
| Archive completed campaigns | Keeps the campaign list manageable. |
|
|
| Use consistent naming | Easier to find and compare campaigns later. |
|
|
|
|
---
|
|
|
|
*Next: [Discovery](discovery.md) — finding opportunities with AI-powered search.*
|