Constant Contact Email Reporting API
Use the email reporting endpoints and methods to get reporting data for email campaigns you sent to contacts.
Use the email reporting endpoints and methods to get reporting data for email campaigns you sent to contacts.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/constant-contact-email-reporting-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: The Constant Contact, Inc. V3 public API, for building integrations with Constant Contact, the leading small-business email marketing platform.
version: 3.0.178
title: AppConnect V3 Email Reporting API
contact:
name: webservices@constantcontact.com
license:
name: Private
url: https://www.constantcontact.com/legal/terms-of-use
servers:
- url: https://api.cc.email/v3
tags:
- name: Email Reporting
description: Use the email reporting endpoints and methods to get reporting data for email campaigns you sent to contacts.
paths:
/reports/email_reports/{campaign_activity_id}/links:
get:
tags:
- Email Reporting
summary: GET an Email Links Report
description: 'Use this method to return link details, including the number of unique contacts that clicked each link in an email campaign activity, and the type of action associated with clicking each link. To include link details for links that were not clicked, set the `no_clicks` query parameter to `true`.
You can return reporting data for `primary_email` and `resend` role email campaign activities. For more use case information, see [Get an Email Links Report](/api_guide/email_links_report.html) in the API guide.'
operationId: getCampaignActivityLinkStats
parameters:
- name: campaign_activity_id
in: path
description: The unique ID for an email campaign activity.
required: true
x-example: 8892baf9-970a-4de6-8400-fa4ec461987c
schema:
type: string
format: uuid
- name: no_clicks
in: query
description: Set this query parameter to `true` to return details for links that were not clicked in the response results.
required: false
x-example: 'true'
schema:
type: boolean
default: false
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/EmailLinks'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getCampaignActivityLinkReport
/reports/email_reports/{campaign_activity_id}/tracking/sends:
get:
tags:
- Email Reporting
summary: GET an Email Sends Report
description: Use this method to get each contact that was sent a specific email campaign activity. This sends report includes general contact data such as the date and time that the email campaign activity was sent to a contact's email address, the contact's first and last name, and unique ID. This report lists the most recent activity first. For more use case information, see [Get an Sends report for an Email Campaign Activity](/api_guide/email_summary_sends_report.html) in the API guide.
operationId: getSends
parameters:
- name: campaign_activity_id
in: path
description: The unique ID for an email campaign activity to use for this report.
required: true
x-example: 8892baf9-970a-4de6-8400-fa4ec461987c
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/SendsTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getEmailSendsReport
/reports/email_reports/{campaign_activity_id}/tracking/opens:
get:
tags:
- Email Reporting
summary: GET an Email Opens Report
description: Use this method to get each time a contact opened a specific email campaign activity. This report includes general contact information such as the contact's email address and unique ID, the date and time they opened the email campaign activity, and the type of device they used to open it. This report lists the most recent activity first. For more use case information, see [Get an Opens report for an Email Campaign Activity](/api_guide/email_summary_opens_report.html) in the API guide.
operationId: getOpens
parameters:
- name: campaign_activity_id
in: path
description: The unique ID for an email campaign activity to use for this report.
required: true
x-example: 8892baf9-970a-4de6-8400-fa4ec461987c
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/OpensTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getEmailOpensReport
/reports/email_reports/{campaign_activity_id}/tracking/unique_opens:
get:
tags:
- Email Reporting
summary: GET an Email Unique Opens Report
description: Use this method to get a unique opens report that provides details about the last time that each contact opened the specified email campaign activity. This report includes general contact information such as the contact's email address and unique ID, the date and time they opened the email campaign activity, and the type of device they used to open it. This report lists the most recent activity first. For more use case information, see [Get an Unique Opens Report for an Email Campaign Activity](/api_guide/email_summary_unique_opens_report.html) in the API guide.
operationId: getUniqueOpens
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
x-example: 8892baf9-970a-4de6-8400-fa4ec461987c
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/OpensTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getUniqueOpensReport
/reports/email_reports/{campaign_activity_id}/tracking/didnotopens:
get:
tags:
- Email Reporting
summary: GET an Email Did Not Opens Report
description: Use this method to get a report listing each contact that was sent, but did not open the specified email campaign activity. This report lists contact information such as the contact's email address and unique ID, and the date and time that the email campaign activity was sent. This report lists the most recent activity first. For more use case information, see [Get a Did Not Opens Report for an Email Campaign Activity](/api_guide/email_summary_non_opens_report.html) in the API guide.
operationId: getDidNotOpens
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
x-example: 8892baf9-970a-4de6-8400-fa4ec461987c
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/DidNotOpensTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getDidNotOpensReport
/reports/email_reports/{campaign_activity_id}/tracking/clicks:
get:
tags:
- Email Reporting
summary: GET an Email Clicks Report
description: Use this method to get each time a contact clicked a link, the click date and time, and the device type they used. Use the `url_id` query parameter to get a clicks report for a specific link URL. Clicks report data is sorted with most recent activity listed first.
operationId: getClicks
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
x-example: c8cdf384-15ca-4dcc-9b6f-4c91121fdc23
schema:
type: string
format: uuid
- name: url_id
in: query
description: The ID that uniquely identifies a single link URL for which you want to get a clicks report.
required: false
x-example: '49920742166'
schema:
type: integer
format: int64
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/ClicksTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getClicksReport
/reports/email_reports/{campaign_activity_id}/tracking/forwards:
get:
tags:
- Email Reporting
summary: GET an Email Forwards Report
description: Use this method to get a report listing each time a contact forwarded the email campaign activity using the forwarding link in the email footer. The report includes general contact information, such as the contact's email address and unique ID, and the date and time that the email campaign activity was forwarded. Forwards report data is sorted with the most recent activity listed first. For more use case information, see [Get an Email Forwards Report](/api_guide/email_summary_forwards_report.html) in the API guide.
operationId: getForwards
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/ForwardsTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getForwardsReport
/reports/email_reports/{campaign_activity_id}/tracking/optouts:
get:
tags:
- Email Reporting
summary: GET an Email Opt-outs Report
description: Use this method to get a report listing each contact that clicked the unsubscribe link in the email campaign activity to opt-out from receiving emails sent from your Constant Contact account. This report includes contact information, such as the contact's email address, unique ID, and the opt-out date and time. Opt-out report data is sorted with the most recent activity listed first. For more use case information, see [Get an Email Opt-outs Report](/api_guide/email_summary_optouts_report.html) in the API guide.
operationId: getOptouts
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
schema:
type: string
format: uuid
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/OptoutsTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getOptoutsReport
/reports/email_reports/{campaign_activity_id}/tracking/bounces:
get:
tags:
- Email Reporting
summary: GET an Email Bounces Report
description: 'Use this method to get a report listing contact bounce data for the specified email campaign activity. This report lists the most recent bounce data first and includes contact information, such as the contact''s email address, unique ID, and the email bounce date and time.
Use the <code>bounce_code</code> query parameter to limit the type of bounce data to return.
For more use case information, see [Get a Bounces Report for an Email Campaign Activity](/api_guide/email_summary_bounces_report.html) in the API guide.'
operationId: getBounces
parameters:
- name: campaign_activity_id
in: path
description: The ID that uniquely identifies the email campaign activity to use for this report.
required: true
schema:
type: string
format: uuid
- name: bounce_code
in: query
description: To return results for a specific bounce code, select the `bounce_code` from the drop-down list. To return results for multiple codes, repeat the bounce code parameter for each. For example, to return results for bounce codes `B` and `D` use `bounce_code=B&bounce_code=D`.
required: false
style: form
explode: true
schema:
type: array
items:
type: string
enum:
- B
- D
- F
- S
- V
- X
- Z
- name: limit
in: query
description: The number of tracking activities to return on a page.
required: false
schema:
type: string
default: '500'
maximum: 500
minimum: 1
responses:
'200':
description: Request was successful
content:
application/json:
schema:
$ref: '#/components/schemas/BouncesTrackingActivitiesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'415':
description: Unsupported Media Type.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getBouncesReport
/reports/summary_reports/email_campaign_summaries:
get:
tags:
- Email Reporting
summary: GET an Email Campaigns Summary Report
description: "Use this method to get aggregate email campaign statistics for up to five hundred email campaigns. The response results include the total number of times that each contact uniquely interacted with each tracked campaign activity.\n\nResults are sorted in descending order by the date that the email was last sent (<code>last_sent_date</code>). Use the <code>limit</code> query parameter to limit the number of email campaign summary reports listed on each page.\n\n\n\n For more use case information, see \"[Get an Email Campaign Summary Report](/api_guide/email_bulk_campaign_summary_report.html)\""
operationId: getAllBulkEmailCampaignSummaries
parameters:
- name: limit
in: query
description: Use the `limit` query parameter to limit the number of email campaign summaries to return on a single page. The default is `50` and the maximum is `500` per page.
required: false
x-example: '100'
schema:
type: string
default: '50'
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/BulkEmailCampaignSummariesPage'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getEmailCampaignReport
/reports/stats/email_campaigns/{campaign_ids}:
get:
tags:
- Email Reporting
summary: GET an Email Campaign Stats Report
description: 'Use this method to get email campaign performance tracking statistics for one or more campaigns, including the total number of times contacts interacted with your campaigns and how.
For each `campaign_id`, this method returns lists that include total counts (`stats`) for each type of tracked email and relevant campaign-related percentages (`percents`). It also returns the date and time at which the campaign stats were last refreshed.
If any specified `campaign_id` is invalid, a 404 error response is returned for all campaigns.'
operationId: getEmailSummary
parameters:
- name: campaign_ids
in: path
description: A comma-separated list of `campaign_id`s (UUID's).
required: true
x-example: 82ee2c37-c8f8-4974-9560-ef93ad51d58z
schema:
type: string
maximum: 150
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignStatsQueryResultEmail'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getEmailStatsReport
/reports/stats/email_campaign_activities/{campaign_activity_ids}:
get:
tags:
- Email Reporting
summary: GET an Email Campaign Activity Stats Report
description: 'Use this method to get performance tracking statistics for up to ten email campaign activities. Statistics include the total number of times contacts interacted with your campaigns and how.
For each `campaign_activity_id`, this method returns the `campaign_id`, the total counts (`stats`) for each type of tracked email activity, and the date and time that Constant Contact last refreshed (`last_refresh_time`) the `stats`.
When requesting statistics for multiple email campaign activities, if one or more of the `campaign_activity_ids` do not exist, were deleted, or do not have any stats associated with it, the `campaign_activity_ids` and error details display under `errors`. If any single specified `campaign_activity_id` is invalid (malformed), a 404 error response is returned for all campaign activities.'
operationId: getEmailCampaignActivitySummary
parameters:
- name: campaign_activity_ids
in: path
description: A comma-separated list of `campaign_activity_id`s (UUID's).
required: true
x-example: 82ee2c37-c8f8-4974-9560-ef93ad51d58z
schema:
type: string
maximum: 10
responses:
'200':
description: Request was successful.
content:
application/json:
schema:
$ref: '#/components/schemas/CampaignActivityStatsQueryResultEmail'
'400':
description: Bad request. Either the JSON was malformed or there was a data validation error.
'401':
description: The Access Token used is invalid.
'403':
description: Forbidden request. You lack the necessary scopes, you lack the necessary user privileges, or the application is deactivated.
'404':
description: The requested resource was not found.
'500':
description: There was a problem with our internal service.
security:
- oauth2_implicit:
- campaign_data
- oauth2_access_code:
- campaign_data
x-authorization-privileges:
- ui:campaign:metrics
x-sdk-methodName: getEmailCampaignActivityReport
components:
schemas:
ClicksTrackingActivitiesPage:
type: object
required:
- tracking_activities
properties:
tracking_activities:
type: array
description: The list of click tracking activities
items:
$ref: '#/components/schemas/ClicksTrackingActivity'
_links:
description: HAL property that contains next link if applicable.
$ref: '#/components/schemas/reportingLinks'
BulkEmailCampaignSummariesPercents:
type: object
properties:
click:
type: number
example: 43.0
description: Aggregated click rate for campaigns on the current page.
open:
type: number
example: 12.0
description: Aggregated open rate for campaigns on the current page.
did_not_open:
type: number
example: 23.0
description: Aggregated did-not-open rate for campaigns on the current page.
bounce:
type: number
example: 21.0
description: Aggregated bounce rate for campaigns on the current page.
unsubscribe:
type: number
example: 2.0
description: Aggregated unsubscribe (optout) rate for campaigns on the current page.
CampaignStatsQueryResultEmail:
type: object
properties:
errors:
type: array
description: An array of errors indicating any partial failures in the query.
items:
$ref: '#/components/schemas/StatsError'
results:
type: array
description: An array of results listing statistics for each requested <code>campaign_id</code>.
items:
$ref: '#/components/schemas/CampaignStatsResultGenericStatsEmailPercentsEmail'
BulkEmailCampaignSummary:
type: object
required:
- campaign_id
properties:
campaign_id:
type: string
example: 82ee2c37-c8f8-4974-9560-ef93ad51d58z
description: The ID that uniquely identifies an email campaign.
campaign_type:
type: string
example: Newsletter
description: Identifies the email campaign type.
last_sent_date:
type: string
format: date-time
example: '2019-04-25T11:08:00.000Z'
description: The date and time that the email campaign was last sent.
unique_counts:
description: The total number of times each unique contact interacted with a tracked email campaign activity.
$ref: '#/components/schemas/UniqueEmailCounts'
ForwardsTrackingActivitiesPage:
type: object
required:
- tracking_activities
properties:
tracking_activities:
type: array
description: 'The list of contacts that forwarded the specified email campaign activity. '
items:
$ref: '#/components/schemas/ForwardsTrackingActivity'
_links:
description: HAL property that contains the next link, if applicable.
$ref: '#/components/schemas/reportingLinks'
ForwardsTrackingActivity:
type: object
required:
- campaign_activity_id
- contact_id
- created_time
- email_address
- tracking_activity_type
properties:
contact_id:
type: string
format: uuid
example: a2fdc285-f4bc-408c-9e64-f3f89038ec82
description: The ID that uniquely identifies a contact.
campaign_activity_id:
type: string
format: uuid
example: 98edac88-f4bc-408c-9e64-acd890384231
description: The ID that uniquely identifies the email campaign activity.
tracking_activity_type:
type: string
example: em_forwards
description: The type of report tracking activity that is associated with the specified <code>campaign_activity_id</code>.
email_address:
type: string
example: maddieb@gmail.com
description: The contact's email address.
first_name:
type: string
example: Maddie
description: The first name of the contact.
last_name:
type: string
example: Brown
description: The last name of the contact.
created_time:
type: string
format: date-time
example: '2019-04-25T11:08:00.000Z'
description: The time that the contact f
# --- truncated at 32 KB (65 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/constant-contact/refs/heads/main/openapi/constant-contact-email-reporting-api-openapi.yml