A campaign report is the definitive view of one campaign's performance. It is richer than the dashboard because it captures step-level behavior, reply quality, and cost attribution for the specific campaign. Reports are generated on demand, scheduled for recurring delivery, and exported as PDF or CSV for client review. This article covers report structure, the scheduled delivery system, and the patterns for agency reporting.
Report Structure
Every campaign report has seven standard sections.
1. Summary
Headline metrics for the campaign: total sent, delivered, open rate, reply rate, positive reply rate, bounce rate, unsubscribe rate. Target versus actual where targets were set.
2. Timeline
Send volume per day across the campaign's lifespan. Bar chart for volume, line overlay for reply rate. Shows pacing and whether reply rate is stable, rising, or falling as the campaign progresses.
3. Step Performance
Per step metrics. Each step shows delivered count, open rate, click rate, reply rate, skip rate (contacts who hit a send_only_if=false condition).
The most useful view in step performance is the open rate decay across steps. Step 1 at 50 percent dropping to step 4 at 15 percent is normal. A flat or rising open rate across steps indicates early steps are underperforming relative to the list quality.
4. Reply Intent Distribution
Pie chart and table of replies by intent category. Interested, not interested, objection (with sub-category: price, timing, authority, need, competition), OOO, meeting request, referral, negative.
A well-performing campaign skews toward interested and meeting request. A campaign with most replies as not interested needs copy or targeting work.
5. Bounce and Complaint Detail
Per bounce classification breakdown with raw SMTP codes for a sample. Complaint events with source ISP.
Hard bounces concentrated on a specific domain or MX host are a signal the target list has a quality issue concentrated in one source.
6. Contact Sample
A sample of contacts from the campaign with their status: engaged (opened or replied), not engaged, bounced, unsubscribed. Helps sales managers spot-check actual recipients rather than relying on aggregates.
7. Recommendations
Automated recommendations from the Growth Brain. Examples:
"Reply rate is 30 percent below workspace average for similar campaigns. Consider A/B testing subject line."
"Step 3 has the lowest engagement. Either shorten the sequence to 2 steps or rewrite step 3 copy."
"Bounce rate is acceptable but concentrated on 3 recipient domains. Investigate the list source."
Generating an Ad-Hoc Report
From the Campaign detail page, click Generate Report. Pick the time range (defaults to the campaign's lifespan) and the output format (PDF, CSV, or HTML for in-browser view).
PDF reports are generated asynchronously for campaigns over 10k sends. A notification appears when ready. The generation is typically under 2 minutes.
Scheduling a Recurring Report
For agencies running client reports weekly, the scheduled report feature automates the workflow.
From the Campaign detail, click Schedule Report. Configure:
- Frequency. Daily, weekly, monthly, or cron expression.
- Recipients. Internal team emails, client contact emails, Slack webhooks.
- Format. PDF, CSV, both.
- Sections. Choose which of the seven sections to include.
- White label. For agencies, apply the client's branding template.
The ScheduledReport object fires on the configured cadence. ReportDelivery records track successful and failed deliveries.
Weekly client report pattern
Typical agency setup for a weekly client report:
- Schedule: Monday 9 AM client time zone
- Recipients: client primary contact plus backup
- Format: PDF with client branding
- Sections: Summary, Timeline, Step Performance, Reply Intent, Recommendations
- Omit: Bounce and Complaint Detail (usually internal), Contact Sample
The result is a branded, client-friendly report that arrives the same time every Monday without any manual work.
Report Templates
Report layouts are configurable through ReportTemplate objects. Default templates cover the common patterns:
- Executive summary (top-line metrics only)
- Operator report (full detail, internal view)
- Client report (polished, white label-ready)
- QBR report (quarterly business review with trend data)
Custom templates can reorder sections, add custom metrics, or inject company-specific commentary blocks.
Multi-Campaign Reports
Sometimes a single-campaign report is not the right view. A "Q2 Outreach Performance" report spans many campaigns.
The multi-campaign report builder selects a campaign filter (by date range, type, client, or tag) and rolls up metrics across the selected set. The output is a unified report with per-campaign rows and aggregate totals.
Useful for:
- Quarterly reviews
- Client renewal conversations
- Board-facing outbound performance slides
Custom Metrics
Custom reports support custom metrics computed from raw events. Examples:
- Cost per positive reply
- Meetings booked per thousand sent
- Pipeline generated per sequence step
- Revenue per campaign
Custom metrics are defined as expressions over the SendOutcomeLog and CRM-derived tables. The expression language is a subset of SQL. The platform evaluates expressions at report generation time.
Delivery Tracking
Every delivery attempt writes a ReportDelivery row: recipient, delivered_at, status, error_reason if failed. A delivery dashboard shows recent successes and failures.
Common failure modes:
- Recipient email bounces (invalid client contact)
- Slack webhook 401 (rotated webhook URL)
- PDF generation timeout on very large reports
The platform retries transient failures with exponential backoff.
Report Access Controls
Reports contain sensitive performance data. Access is controlled by:
- Workspace membership. Only members of the workspace can view reports in the UI.
- Portal visibility. Agency sub-client portals can be configured to show only specific reports.
- Scheduled report recipients. Deliveries go only to configured recipients; no public share link by default.
- Public share URLs. Optional per report. When enabled, generates a tokenized URL that can be shared externally. Expires configurable, defaults to 7 days.
Export Formats
PDF. Best for external sharing. Branded, fixed layout.
CSV. Best for further analysis in a spreadsheet or BI tool.
HTML. Best for in-platform viewing. Interactive charts.
JSON. Best for programmatic consumption. Full metric set, typed.
JSON exports are accessed via the Reports API: GET /api/v1/reports/:id/export?format=json.
Historical Archives
Every generated report is archived. The archive is accessible from the Reports list, sorted by generation date. Archive retention defaults to 12 months and is configurable up to 7 years for compliance.
Troubleshooting
"Report shows zero sends even though I know the campaign sent"
Date range filter is wrong. Defaults to the campaign's start and end, which may not include recent sends for an active campaign. Widen the date range.
"Scheduled report did not arrive"
Check the delivery log. Most common cause is a bounced recipient email. Second most common is a Slack webhook that was rotated.
"Custom metric shows an error"
The expression references a field that does not exist or has a typo. Open the custom metric editor; the expression validator shows the specific error.
"PDF generation timed out"
The campaign has too many data points for the default generation window. Split into multiple smaller date ranges or request an async generation for the full range. Async generation has a 30 minute timeout versus the 2 minute sync timeout.
Frequently Asked Questions
Can a report show data from multiple workspaces?
No. Reports are workspace scoped. Multi-workspace rollups would require breaking tenant isolation and are not supported.
How real-time are report metrics?
Most metrics are within 5 minutes of real time. CRM-derived metrics (revenue, pipeline) are within 1 hour. Aggregated trend charts refresh on a daily schedule and may lag by up to 24 hours for high-volume workspaces.
Can I embed reports in an external dashboard?
Yes, through the API. The Reports API returns data as JSON that can be rendered in any BI tool. There is no direct iframe embed because of session security.
Is there a limit on scheduled reports per workspace?
Soft limit 50. Above that, request an increase. Very high limits (hundreds of scheduled reports) indicate the workflow might be better served by a custom integration.
What to Read Next
Useful next pages after this one: Dashboard Overview for the cross-campaign view, Reply Intelligence for the classification that drives reply intent sections, and Campaign Analytics for the real-time live metrics on active campaigns.