This topic presents the differences between the V3 and V2 email campaign resource model, and provides instructions on getting cross-referenced V2 & V3 email campaign identifiers.

Email Resource Comparison

Previously in the V2 API, the email campaign object contained the content of an email marketing campaign as well as general information about the campaign. In the V3 API, the email campaign object now only contains general information about the campaign. The email content of an email marketing campaign is now part of the V3 API campaign activity object.

V2 Email Campaign Object

{
    "id": "1131518201387",
    "name": "Untitled Campaign Created 2018/11/15, 2:15:02 PM",
    "subject": "Informed Daily Digest",
    "status": "DRAFT",
    "from_name": "Acme Corp.",
    "from_email": "ddipper@example.com",
    "reply_to_email": "ddipper@example.com",
    "template_type": "TEMPLATE_V2",
    "created_date": "2018-10-30T13:15:24.060Z",
    "modified_date": "2018-10-30T13:16:23.858Z",
    "is_permission_reminder_enabled": false,
    "permission_reminder_text": "",
    "is_view_as_webpage_enabled": false,
    "view_as_web_page_text": "",
    "view_as_web_page_link_text": "",
    "greeting_salutations": "",
    "greeting_name": "NONE",
    "greeting_string": "",
    "message_footer": {
        "city": "Boston",
        "state": "MA",
        "country": "us",
        "organization_name": "Acme Corp.",
        "address_line_1": "123 Maple Street",
        "address_line_2": "Unit 1",
        "address_line_3": "",
        "international_state": "",
        "postal_code": "02451",
        "include_forward_email": false,
        "include_subscribe_link": false
    },
    "tracking_summary": {
        "sends": 0,
        "opens": 0,
        "clicks": 0,
        "forwards": 0,
        "unsubscribes": 0,
        "bounces": 0,
        "spam_count": 0
    }
}

V3 Email Objects

{
  "type": "NEWSLETTER",
  "name": "Untitled Campaign Created 2018/11/15, 2:15:02 PM",
  "campaign_id": "fa342848-edb6-477e-914d-f93c99c7a749",
  "current_status": "DRAFT",
  "updated_at": "2018-11-15T19:15:14.000Z",
  "created_at": "2018-11-15T19:15:02.000Z",
  "campaign_activities": [
    {
      "role": "permalink",
      "campaign_activity_id": "4f7c5ebc-33b0-4643-a9aa-a97b33179d07"
    },
    {
      "role": "primary_email",
      "campaign_activity_id": "67f126a4-5af0-42ee-9320-6f4f8cde865f"
    }
  ]
}
{
    "role": "primary_email",
    "subject": "Informed Daily Digest",
    "campaign_activity_id": "dd1af96b-13f1-4e3f-b344-e1bb3806dd1a",
    "campaign_id": "10f44dbd-29a4-4830-807f-38143eef464a",
    "current_status": "DRAFT",
    "contact_list_ids": [
    "da10f460-3072-11e9-b282-fa163e6b01c1"
    ],
    "segment_ids": [],
    "format_type": 3,
    "from_name": "Acme Corp.",
    "from_email": "ddipper@example.com",
    "reply_to_email": "ddipper@example.com",
    "permalink_url": "https://conta.cc/2Nu6cP1",
    "document_id": "1100576287897",
    "template_id": "1000755366001",
    "physical_address_in_footer": {
        "city": "Boston",
        "address_line1": "123 Maple Street",
        "address_line2": "Unit 1",
        "organization_name": "Acme Corp.",
        "postal_code": "02451",
        "state_code": "MA",
        "country_code": "US",
        "country_name": "United States"
    }
}
V3 Campaign Property V2 Equivalent Property V3 Description
type
template_type Identifies the type of marketing effort involved in the campaign. Email campaigns use the NEWSLETTER and CUSTOM_CODE types.
campaign_id
id Identifies the email campaign in the V3 API.
current_status
status The current state of the campaign in the email campaign workflow.
updated_at
modified_date A read-only timestamp set when a user updates the email campaign in ISO-8601 format.
created_at
created_date A read-only timestamp set when a user creates the email campaign in ISO-8601 format.
name
name A descriptive email campaign title.
campaign_activities
N/A An array of objects that contain the role and campaign_activity_id properties of each campaign activity associated with the campaign.
Activity Reference Object
role
N/A The role of an individual campaign activity in the larger email campaign. The campaign activity role describes how Constant Contact uses the campaign activity in the email campaign. Email campaign activities use the primary_email, permalink, and resend roles.
campaign_activity_id
N/A Identifies the email campaign activity in the V3 API.

Email Campaign Object Property Changes

The tracking_summary object is now available through the campaign reporting endpoints and is no longer returned through the email campaign endpoints. Properties that contain email content such as from_name and from_email are now part of the email campaign activity object. The following V2 properties are now part of the document_properties subresource in the email campaign activity object:
  • is_permission_reminder_enabled
  • permission_reminder_text
  • is_view_as_webpage_enabled
  • view_as_web_page_text
  • view_as_web_page_link_text
  • greeting_salutations
  • greeting_name
  • greeting_string
  • include_forward_email
  • include_subscribe_link

Cross-reference Email Resource Identifiers in the V3 API

For each V2 campaignId value that you provide, this endpoint returns the corresponding V3 campaign_id and V3 campaign_activity_id UUID value. This endpoint returns the UUID value of the primary_email role campaign activity associated with the email campaign. You can enter up to 50 V2 campaignId values in each request.

Use this endpoint to migrate your locally stored V2 email campaign data to the new V3 format. This endpoint is not intended for regular or repeated use. Constant Contact will eventually deprecate and remove this endpoint.

GET https://api.cc.email/v3/emails/campaign_id_xrefs?v2_email_campaign_ids=1100560565512,1100560665902

Endpoint Requirements

User privileges: campaign:read

Authorization scopes: campaign_data

<?php

$request = new HttpRequest();
$request->setUrl('https://api.cc.email/v3/emails/campaign_id_xrefs');
$request->setMethod(HTTP_METH_GET);

$request->setQueryData(array(
  'v2_email_campaign_ids' => '1100560565512,1100560665902'
));

$request->setHeaders(array(
  'Postman-Token' => '0c3f3ca5-d1db-413d-ab35-97c5fd96af13',
  'cache-control' => 'no-cache'
));

try {
  $response = $request->send();

  echo $response->getBody();
} catch (HttpException $ex) {
  echo $ex;
}
OkHttpClient client = new OkHttpClient();

Request request = new Request.Builder()
  .url("https://api.cc.email/v3/emails/campaign_id_xrefs?v2_email_campaign_ids=1100560565512,1100560665902")
  .get()
  .addHeader("cache-control", "no-cache")
  .addHeader("Postman-Token", "e919bc25-bae9-443a-a946-8ea07b1f10d8")
  .build();

Response response = client.newCall(request).execute();
curl -X GET \
  'https://api.cc.email/v3/emails/campaign_id_xrefs?v2_email_campaign_ids=1100560565512,1100560665902' \
  -H 'Postman-Token: 4e0e91b2-ae34-4152-9a45-441806bd22e8' \
  -H 'cache-control: no-cache'

Response

{
    "xrefs": [
        {
            "v2_email_campaign_id": "1100560565512",
            "campaign_id": "df238cc7-04e5-4273-9786-59b6d9bfe6f6",
            "campaign_activity_id": "22c9fc01-2125-4658-9cdf-231e42f1105b"
        },
        {
            "v2_email_campaign_id": "1100560665902",
            "campaign_id": "0390bd2d-b7ad-4c3f-917e-9aa9fc58a561",
            "campaign_activity_id": "58dbece4-7c9a-42a0-b433-0c7b230dfb86"
        }
    ]
}