Skip to main content
GET
Analyze campaign performance over a specific time period. Essential for tracking improvements and identifying trends.

Path Parameters

number
required
Campaign ID

Query Parameters

string
required
Your SmartLead API key
string
required
Start date in YYYY-MM-DD format. Interpreted as the start of that day.
string
required
End date in YYYY-MM-DD format. Interpreted as the end of that day.
string
default:"UTC"
IANA time zone used to resolve the start and end of each day, for example America/New_York. Defaults to UTC.
The range between start_date and end_date must be 30 days or less. A wider range returns 400 Bad Request.

Response Fields

number
Campaign ID
number
ID of the user who owns the campaign
string
Campaign creation timestamp
string
Campaign status, for example ACTIVE, PAUSED, COMPLETED, ARCHIVED
string
Campaign name
string
The start_date you supplied, echoed back
string
The end_date you supplied, echoed back
string
Emails sent in the date range
string
Leads that received a first-sequence email in the date range
string
Opens in the date range
string
Distinct leads who opened in the date range
string
Clicks in the date range
string
Distinct leads who clicked in the date range
string
Replies in the date range, excluding any reply explicitly marked as ignored
string
Every reply received in the date range, with no exclusions. See Separating out-of-office replies.
string
Replies in the date range from leads not categorised as out-of-office. See Separating out-of-office replies.
string
Emails blocked in the date range
string
Bounced emails in the date range
string
Unsubscribes in the date range
string
Total campaign records not in a STOPPED state. This is a campaign-lifetime figure and is not limited to the date range.
string
Campaign records in a DRAFTED state. This is a campaign-lifetime figure and is not limited to the date range.
All count fields are returned as strings.

Separating out-of-office replies

Automated out-of-office replies are counted as replies. Two fields let you separate them from genuine ones:
Both come from reply categorisation alone, so they do not depend on the per-campaign ignore out-of-office setting. You get the split whether or not that toggle is on — which matters, because turning it on is not retroactive.

Worked example

A campaign receives 6 replies. The ignore out-of-office toggle is off, which is the default. Reading it:
  • reply_count is 5, but 3 of those are automated out-of-office replies.
  • non_ooo_reply_count is 3, so you can report on genuine replies without the auto-replies skewing the number.
  • Out-of-office replies are 6 - 3 = 3.
  • Row 6 counts towards non_ooo_reply_count but not reply_count, because it was flagged as ignored for a reason unrelated to out-of-office.

When the toggle is already on

Same idea, but out-of-office replies are also flagged as ignored, so they drop out of reply_count too. Here non_ooo_reply_count (3) is higher than reply_count (1). That is correct — see the warning below.
non_ooo_reply_count can be higher than reply_count. This is expected, not a bug.reply_count drops every reply flagged as ignored, and that flag is set by three separate things:
  1. Out-of-office replies, but only when the ignore out-of-office toggle is on
  2. Replies whose sender is not the lead — forwards and self-sends
  3. Replies you ignore by hand in the master inbox
non_ooo_reply_count only excludes out-of-office. Causes 2 and 3 are not out-of-office, so those replies are counted here while reply_count drops them.Compare non_ooo_reply_count against total_reply_count, never against reply_count.
If reply categorisation has not run for a campaign, leads stay uncategorised and non_ooo_reply_count equals total_reply_count.Categorisation is stored per lead and reflects that lead’s most recently categorised reply. A lead that sends an out-of-office reply and later a genuine reply is counted as non-OOO for both.

Response Example