get
https://production-api.shoutaboutus.com/api/v1/campaign/dashboard/metrics
Get aggregated email/SMS campaign performance stats and audience contact counts for the authenticated user's company over a given date range, optionally scoped to one store.
Auth: Account — authentication (inside the authenticated api. group; route lives under the campaign/dashboard account group). Scope is implicit: the controller filters RsCampaign, so a caller only ever sees their own company's campaigns. An optional store_id is further validated by an ownership check.
Rate limit: No rate limit.
Request
- Query:
start_date(stringY-m-d, required) — start of the metrics window; parsed withstartOfDay. - Query:
end_date(stringY-m-d, required) — end of the window; must beafter_or_equal:start_date; parsed withendOfDay. - Query:
store_id(integer, optional / nullable) — scope metrics to a single store; must belong to the auth user's company hierarchy (an ownership check).
Response — { data. } envelope. (Note: the controller returns successResponse(['status' => 'success', 'data' => [.]]), so the success payload is nested as data.data.)
status(string) — literal"success".data.email_performance.sent(int) — non-test emails withsent_atin range.data.email_performance.delivered(int) — emails withdelivered_atin range.data.email_performance.opened(int) — emails withopened_atin range.data.email_performance.clicked(int) — emails withclicked_atin range.data.email_performance.unsubscribed(int) — emails withunsubscribed_atin range.data.email_performance.rates.delivered(float) —delivered / sent * 100, rounded 2dp (0 when sent=0).data.email_performance.rates.opened(float) —opened / sent * 100.data.email_performance.rates.clicked(float) —clicked / sent * 100.data.email_performance.rates.unsubscribed(float) —unsubscribed / sent * 100.data.email_performance.rates.sent(float) —sent / currentEmailValidContacts * 100(denominator = audience rows in range withis_email_valid = valid).data.sms_performance.sent(int) — non-test SMS withsent_atin range.data.sms_performance.delivered(int) — SMS withdelivered_atin range.data.sms_performance.link_clicked(int) — SMS withlink_clicked_atin range.data.sms_performance.failed(int) — SMS wherestatus = failedORfailed_atset, with the failure/send/creation timestamp in range.data.sms_performance.rates.delivered(float) —delivered / sent * 100.data.sms_performance.rates.link_clicked(float) —link_clicked / sent * 100.data.sms_performance.rates.failed(float) —failed / sent * 100.data.sms_performance.rates.sent(float) —sent / currentSmsValidContacts * 100(denominator = audience rows in range withis_phone_valid = valid).data.audience.current_contacts(int) — valid, non-testCampaignAudienceDatarows created within the window.data.audience.previous_contacts(int) — same count over the immediately preceding window of equal length.data.audience.change_percent(float) —(current - previous) / previous * 100, rounded 2dp (0 when previous=0).
Errors: 422 on validation failure.
Recent Requests
Log in to see full request history
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
Loading…
