Files
ALwrity/docs-site/docs/features/backlink-outreach/campaign-management.md

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.*