Analytics¶
Track campaign performance with built-in analytics including send volume trends, conversion funnels, reply classification breakdowns, and CSV exports.
Dashboard Overview¶
The analytics tab provides a comprehensive view of your outreach performance:
flowchart LR
A[Campaign Analytics] --> B[Volume Trends]
A --> C[Conversion Funnel]
A --> D[Reply Classification]
A --> E[Response Rate]
A --> F[Placement Rate]
A --> G[CSV Exports]
style A fill:#e3f2fd
style B fill:#e8f5e8
style G fill:#fff3e0
Metrics¶
Send Volume Trends¶
A line chart showing daily email send volume over a configurable time window (7, 14, 30, or 90 days).
- X-axis: Date.
- Y-axis: Number of emails sent.
- Use case: Spot trends, ensure consistent outreach cadence, stay within daily caps.
Conversion Funnel¶
A bar chart showing lead counts at each status stage:
| Stage | Description |
|---|---|
| Discovered | Total leads found. |
| Contacted | Leads that received an outreach email. |
| Replied | Leads that responded (interested or neutral). |
| Placed | Leads that resulted in a published backlink. |
- Use case: Identify bottlenecks in your outreach pipeline.
Reply Classification¶
A breakdown of auto-classified replies:
| Classification | Color | Meaning |
|---|---|---|
| Interested | Green | Positive response — follow up! |
| Not interested | Red | Declined — auto-suppressed. |
| Out of office | Yellow | Auto-responder — schedule follow-up. |
| Replied | Blue | General response — needs review. |
Response Rate¶
Percentage of sent emails that received any reply:
Placement Rate¶
Percentage of contacted leads that resulted in a published backlink:
Analytics API¶
Campaign Analytics¶
API: GET /api/v1/backlink-outreach/campaigns/{campaign_id}/analytics
Query parameters:
| Parameter | Type | Default | Description |
|---|---|---|---|
days |
int | 30 |
Number of days to include in trends. |
Response:
{
"total_leads": 150,
"leads_by_status": {
"discovered": 80,
"contacted": 45,
"replied": 18,
"placed": 7,
"bounced": 5
},
"total_attempts": 52,
"total_replies": 23,
"replies_by_classification": {
"interested": 12,
"not_interested": 5,
"out_of_office": 3,
"replied": 3
},
"response_rate": 0.44,
"placement_rate": 0.16,
"daily_send_volume": [
{"date": "2025-01-15", "count": 8},
{"date": "2025-01-16", "count": 12}
]
}
Reporting Snapshot¶
Cross-campaign analytics across all campaigns for the authenticated user.
API: GET /api/v1/backlink-outreach/reporting/snapshot
Response:
{
"total_campaigns": 5,
"total_sends": 342,
"total_replies": 87,
"total_placements": 14,
"overall_response_rate": 0.25,
"overall_placement_rate": 0.04
}
Reply counting
The reporting snapshot counts OutreachReply records (not status == "replied" on attempts). This ensures accuracy — a lead marked "replied" manually without an actual reply record won't inflate the count.
CSV Exports¶
Export campaign data as CSV files for CRM import, spreadsheet analysis, or client reporting.
Export Leads¶
API: GET /api/v1/backlink-outreach/campaigns/{campaign_id}/export/leads
Export Attempts¶
API: GET /api/v1/backlink-outreach/campaigns/{campaign_id}/export/attempts
Export Replies¶
API: GET /api/v1/backlink-outreach/campaigns/{campaign_id}/export/replies
CSV Safety¶
All exports include these safety measures:
| Measure | Purpose |
|---|---|
| Explicit fieldnames | Only expected columns are included. |
extrasaction="ignore" |
Unexpected fields are silently dropped. |
| Formula injection sanitization | Cells starting with =, +, -, @ are prefixed with a single quote to prevent formula injection in spreadsheets. |
Export loading
Exports may take a few seconds for large campaigns. The UI shows an "Exporting..." state with a disabled button while the download is in progress.
UI Features¶
Time Window Selector¶
Choose from 7, 14, 30, or 90 days for trend charts. The analytics data is re-fetched when the window changes.
Separate Loading States¶
Each data section (attempts, replies, analytics) has its own loading indicator, so slow analytics queries don't block the entire page.
Error Handling¶
If analytics or export requests fail, a toast notification shows the error message. On 5xx server errors, the store automatically retries read operations once with exponential backoff.
Next: API Reference — full endpoint documentation.