Duplicate a Campaign

Returns a JSON object with the newly created campaign.

You can optionally:

  • Update (override) specific campaign field values.
  • Indicate which campaign sections should be duplicated (default = all).
  • Specify a target account for the new campaign (default = current account).

Update specific fields

You can optionally pass an object in the request body, indicating fields to update.

Example - Update specific fields

POST /backstage/api/1.0/demo-advertiser/campaigns/123/duplicate
{
   "name": "Demo Campaign - New name",
   "branding_text": "New branding text",
   "spending_limit": 10000,
   "spending_limit_model": "ENTIRE",
   "comment": "Please apply suitable targeting."
}
{
    "id": "123",
    "advertiser_id": "demo-advertiser",
    "name": "Demo Campaign",
    "branding_text": "Branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1.0,
    "daily_cap": 30.0,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 100.0,
    "spending_limit_model": "MONTHLY",
    "cpa_goal": 0.0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": ["PHON", "TBLT"],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": ["site-1", "site-2", "site-3"],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": []
    },
    "publisher_bid_strategy_modifiers": {
        "values": []
    },
    "campaign_profile": null,
    "comments": "",
    "spent": 0,
    "bid_type": "OPTIMIZED_CONVERSIONS",
    "traffic_allocation_mode": "OPTIMIZED",
    "external_brand_safety": {
        "type": "NONE",
        "values": []
    },
    "start_date": "2019-12-03",
    "end_date": "9999-12-31",
    "approval_state": "APPROVED",
    "is_active": false,
    "status": "FROZEN",
    "audience_segments_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/audience_segments"
    },
    "custom_audience_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/custom_audience"
    },
    "marking_label_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/marking_labels"
    },
    "lookalike_audience_targeting": {
        "state": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/lookalike_audience"
    },
    "marketing_objective": "LEADS_GENERATION",
    "activity_schedule": {
        "mode": "ALWAYS",
        "rules": [],
        "time_zone": "US/Eastern"
    },
    "policy_review": {
        "reject_reason": null
    }
}
{
    "id": "124",
    "advertiser_id": "demo-advertiser",
    "name": "Demo Campaign - New name",
    "branding_text": "New branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1.0,
    "daily_cap": 30.0,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 10000.0,
    "spending_limit_model": "ENTIRE",
    "cpa_goal": 0.0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": ["PHON", "TBLT"],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": ["site-1", "site-2", "site-3"],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": []
    },
    "publisher_bid_strategy_modifiers": {
        "values": []
    },
    "campaign_profile": null,
    "comments": "Please apply suitable targeting.",
    "spent": 0.0,
    "bid_type": "OPTIMIZED_CONVERSIONS",
    "traffic_allocation_mode": "OPTIMIZED",
    "external_brand_safety": {
        "type": "NONE",
        "values": []
    },
    "start_date": "2020-01-20",
    "end_date": "9999-12-31",
    "approval_state": "APPROVED",
    "is_active": false,
    "status": "FROZEN",
    "audience_segments_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/audience_segments"
    },
    "custom_audience_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/custom_audience"
    },
    "marking_label_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/marking_labels"
    },
    "lookalike_audience_targeting": {
        "state": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/lookalike_audience"
    },
    "marketing_objective": "LEADS_GENERATION",
    "activity_schedule": {
        "mode": "ALWAYS",
        "rules": [],
        "time_zone": "US/Eastern"
    },
    "policy_review": {
        "reject_reason": null
    }
}

🚧

Tip: If the original campaign reached its end_date, make sure to submit a new end_date when you duplicate it.

Specify which sections should be duplicated

By default, the duplicate endpoint duplicates the entire campaign, and all its items. You can use the (optional) duplicate_settings param to control which campaign sections are included in the duplication.

duplicate_settings

{
    ...
    "duplicate_settings": {
        "include_items": false,
        "include_publisher_bid_modifiers": false,
        "include_blocked_publishers": true,
        "include_third_party_tracking": true
    }
}
{
    ...
    "duplicate_settings": {
        "include_items": false,
        "include_publisher_bid_modifiers": false
    }
}

🚧

If a setting is not present, the default value is true.
Therefor, the above 2 examples are equivalent.

SettingTypePass 'true' (or leave out) to duplicate:
include_itemsBoolean
(default = true)
- All campaign items.
- The approval_state of the original campaign and each of its items.
include_publisher_bid_modifiersBoolean
(default = true)
- publisher_bid_modifier
- publisher_bid_strategy_modifiers
include_blocked_publishersBoolean
(default = true)
- publisher_targeting
include_third_party_trackingBoolean
(default = true)
- tracking_code
- verification_pixel
- viewability_tag

Example - Exclude the campaign items and publisher bid modifiers from the duplication

POST /backstage/api/1.0/demo-advertiser-1/campaigns/123/duplicate
{
   "name": "Demo Campaign - New name",
   "branding_text": "New branding text",
   "spending_limit": 10000,
   "spending_limit_model": "ENTIRE",
   "comments": "Please apply suitable targeting.",
   "duplicate_settings": {
      "include_items": false,
      "include_publisher_bid_modifiers": false,
      "include_blocked_publishers": true,
      "include_third_party_tracking": true
   }
}
{
    "id": "123",
    "advertiser_id": "demo-advertiser",
    "name": "Demo Campaign",
    "branding_text": "Branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1,
    "daily_cap": 30,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 100,
    "spending_limit_model": "MONTHLY",
    "cpa_goal": 0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": [
            "PHON",
            "TBLT"
        ],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": [
            "sample-publisher-1",
            "sample-publisher-2",
            "sample-publisher-3"
        ],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": [{
                "target": "sample-publisher-4",
                "cpc_modification": 0.5
            },
            {
                "target": "sample-publisher-5",
                "cpc_modification": 1.5
            }
        ]
    },
    "publisher_bid_strategy_modifiers": {
        "values": [{
            "publisher": "sample-publisher-6",
            "bid_strategy": "FIXED"
        }]
    },
    "campaign_profile": null,
    "comments": "",
    "spent": 0,
    "bid_type": "OPTIMIZED_CONVERSIONS",
    "traffic_allocation_mode": "OPTIMIZED",
    "external_brand_safety": {
        "type": "NONE",
        "values": []
    },
    "start_date": "2019-12-03",
    "end_date": "9999-12-31",
    "approval_state": "APPROVED",
    "is_active": false,
    "status": "FROZEN",
    "audience_segments_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/audience_segments"
    },
    "custom_audience_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/custom_audience"
    },
    "marking_label_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/marking_labels"
    },
    "lookalike_audience_targeting": {
        "state": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/lookalike_audience"
    },
    "marketing_objective": "LEADS_GENERATION",
    "verification_pixel": {
        "verification_pixel_items": [{
                "url": "https://www.example.com/",
                "verification_pixel_type": "CLICK"
            },
            {
                "url": "https://www.example.com/",
                "verification_pixel_type": "VIEWABLE_IMPRESSION"
            },
            {
                "url": "https://www.example.com/",
                "verification_pixel_type": "IMPRESSION"
            }
        ]
    },
    "viewability_tag": {
        "values": [{
                "tag": "<noscript class=...></noscript><script src=...></script>",
                "type": "MOAT"
            },
            {
                "tag": "<noscript class=...></noscript><script src=...></script>",
                "type": "IAS"
            }
        ]
    },
    "activity_schedule": {
        "mode": "ALWAYS",
        "rules": [],
        "time_zone": "US/Eastern"
    },
    "policy_review": {
        "reject_reason": null
    },
    "browser_targeting": {
        "type": "INCLUDE",
        "value": [
            "Safari",
            "Android App",
            "Firefox",
            "Opera"
        ],
        "href": null
    }
}
{
    "id": "124",
    "advertiser_id": "demo-advertiser",
    "name": "Demo Campaign",
    "branding_text": "New branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1,
    "daily_cap": 30,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 10000,
    "spending_limit_model": "ENTIRE",
    "cpa_goal": 0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": [
            "PHON",
            "TBLT"
        ],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": [
            "sample-publisher-1",
            "sample-publisher-2",
            "sample-publisher-3"
        ],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": []
    },
    "publisher_bid_strategy_modifiers": {
        "values": []
    },
    "campaign_profile": null,
    "comments": "Please apply suitable targeting.",
    "spent": 0,
    "bid_type": "OPTIMIZED_CONVERSIONS",
    "traffic_allocation_mode": "OPTIMIZED",
    "external_brand_safety": {
        "type": "NONE",
        "values": []
    },
    "start_date": "2019-12-03",
    "end_date": "9999-12-31",
    "approval_state": "PENDING",
    "is_active": false,
    "status": "FROZEN",
    "audience_segments_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/audience_segments"
    },
    "custom_audience_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/custom_audience"
    },
    "marking_label_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/marking_labels"
    },
    "lookalike_audience_targeting": {
        "state": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/lookalike_audience"
    },
    "marketing_objective": "LEADS_GENERATION",
    "verification_pixel": {
        "verification_pixel_items": [{
                "url": "https://www.example.com/",
                "verification_pixel_type": "CLICK"
            },
            {
                "url": "https://www.example.com/",
                "verification_pixel_type": "VIEWABLE_IMPRESSION"
            },
            {
                "url": "https://www.example.com/",
                "verification_pixel_type": "IMPRESSION"
            }
        ]
    },
    "viewability_tag": {
        "values": [{
                "tag": "<noscript class=...></noscript><script src=...></script>",
                "type": "MOAT"
            },
            {
                "tag": "<noscript class=...></noscript><script src=...></script>",
                "type": "IAS"
            }
        ]
    },
    "activity_schedule": {
        "mode": "ALWAYS",
        "rules": [],
        "time_zone": "US/Eastern"
    },
    "policy_review": {
        "reject_reason": null
    },
    "browser_targeting": {
        "type": "INCLUDE",
        "value": [
            "Safari",
            "Android App",
            "Firefox",
            "Opera"
        ],
        "href": null
    }
}

🚧

Duplication results

  1. Because include_items was set to false, the new campaign is created with an approval state of "PENDING", and without any items.
  2. Because include_publisher_bid_modifiers was set to false, the bid modifier fields have empty collections.
  3. Blocked publishers and third party tracking fields are duplicated as normal.

Example - Implicit inclusion

In the previous example, we specified the sections to exclude, as well as the sections to include.

If you leave out a setting, that section will be included by default.

The following request objects are equivalent:

{
   "name": "Demo Campaign - New name",
   "branding_text": "New branding text",
   "spending_limit": 10000,
   "spending_limit_model": "ENTIRE",
   "comment": "Please apply suitable targeting.",
   "duplicate_settings": {
      "include_items": false,
      "include_publisher_bid_modifiers": false,
      "include_blocked_publishers": true,
      "include_third_party_tracking": true
   }
}
{
   "name": "Demo Campaign - New name",
   "branding_text": "New branding text",
   "spending_limit": 10000,
   "spending_limit_model": "ENTIRE",
   "comment": "Please apply suitable targeting.",
   "duplicate_settings": {
      "include_items": false,
      "include_publisher_bid_modifiers": false
   }
}

Guidelines

Campaign duplication settings include a number of business rules. These are summarized below.

🚧

Guidelines

  1. To exclude a campaign section, set the relevant property under duplicate_settings to false.
  2. To duplicate a campaign section, set the relevant property under duplicate_settings to true - or leave it out.
  3. To duplicate all campaign sections, leave out the duplicate_settings param altogether (or pass true for all its properties).
  4. Campaign fields that were not included in the duplication will be assigned default values (just like any new campaign) - unless you explicitly assign them a value (see next point).
  5. You can update 1 of more campaign fields directly within the request body. The specified campaign fields will be updated, regardless of whether they were part of the duplication process.

Duplicate a campaign for a different account

You can assign the new campaign to a different account in your network. To do so, use the destination_account query param.

Example - Duplicate for a different account

POST /backstage/api/1.0/demo-advertiser-1/campaigns/123/duplicate?destination_account=demo-advertiser-2
{
   "name": "Demo Campaign - New name",
   "branding_text": "New branding text",
   "spending_limit": 10000,
   "spending_limit_model": "ENTIRE",
   "comment": "Please apply suitable targeting."
}
{
    "id": "123",
    "advertiser_id": "demo-advertiser-1",
    "name": "Demo Campaign",
    "branding_text": "Branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1,
    "daily_cap": 30,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 100,
    "spending_limit_model": "MONTHLY",
    "cpa_goal": 0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": ["PHON", "TBLT"],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": ["publisher-1", "publisher-2", "publisher-3"],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": []
    },
    "publisher_bid_strategy_modifiers": {
        "values": []
    },
    "campaign_profile": null,
    "comments": "",
    "spent": 0,
    "bid_type": "OPTIMIZED_CONVERSIONS",
    "traffic_allocation_mode": "OPTIMIZED",
    "external_brand_safety": {
        "type": "NONE",
        "values": []
    },
    "start_date": "2019-12-03",
    "end_date": "9999-12-31",
    "approval_state": "APPROVED",
    "is_active": false,
    "status": "FROZEN",
    "audience_segments_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/audience_segments"
    },
    "custom_audience_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/custom_audience"
    },
    "marking_label_multi_targeting": {
        "state": "EXISTS",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/marking_labels"
    },
    "lookalike_audience_targeting": {
        "state": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/123/targeting/lookalike_audience"
    },
    "marketing_objective": "LEADS_GENERATION",
    "activity_schedule": {
        "mode": "ALWAYS",
        "rules": [],
        "time_zone": "US/Eastern"
    },
    "policy_review": {
        "reject_reason": null
    }
}
{
    "id": "124",
    "advertiser_id": "demo-advertiser-2",
    "name": "Demo Campaign - New name",
    "branding_text": "New branding text",
    "tracking_code": "utm_source=taboola&utm_medium=referral",
    "pricing_model": "CPC",
    "cpc": 1.0,
    "daily_cap": 30.0,
    "daily_ad_delivery_model": "STRICT",
    "spending_limit": 10000.0,
    "spending_limit_model": "ENTIRE",
    "cpa_goal": 0.0,
    "country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "sub_country_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "postal_code_targeting": {
        "type": "ALL",
        "value": null,
        "href": "https://backstage.taboola.com/backstage/api/1.0/demo-advertiser/campaigns/124/targeting/postal_code"
    },
    "contextual_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "platform_targeting": {
        "type": "INCLUDE",
        "value": [
            "PHON",
            "TBLT"
        ],
        "href": null
    },
    "publisher_targeting": {
        "type": "EXCLUDE",
        "value": [
            "housediver",
            "notifyai-marketplace",
            "pushnami-globalfinancial"
        ],
        "href": null
    },
    "os_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "connection_type_targeting": {
        "type": "ALL",
        "value": [],
        "href": null
    },
    "publisher_bid_modifier": {
        "values": []
    },
    "publisher_bid_strategy_modifiers": {
        "values": []
    },
    "campaign_profile": null,
    "comments": "Please apply suitable targeting.",
    ...
}

🚧

The user making the request must have permissions for both accounts (demo-advertiser-1 and demo-advertiser-2).

🚧

Params:

  • Pass the campaign owner as the account_id path param (not your network account).
  • Pass the target account as the destination_account query param.
Language
Authorization
OAuth2