Create campaigns

This guide explains how to create a single campaign from scratch, but, depending on your needs, you can also clone existing campaigns. See also Campaign creation workflows.

To define your advertising strategies in the platform, you need to create a campaign with a specialized seed, clear and precise goals, and a channel in which you want to advertise. Here's what you need to know about the campaign creation process:

Campaign requirements

To send a successful create request, you must provide your advertiser ID, the name of your campaign, and set the campaign primary goal and channel. However, there are other factors and properties you need to consider to create a successful campaign and bid on the most valuable impressions. See also Campaign success checklist.

Here's what you need to know about creating campaigns:

TIP: To save time and ensure consistency across ad groups, you can include the advertiser’s default bid lists in campaigns and further propagate them to ad groups. For details, see Default bid lists.

Campaign goals

Campaign goals are the main KPIs toward which the platform automatically optimizes performance.

Here’s what you need to know about campaign goals:

For a complete list of goals that you can set in your campaign, see Goals and KPIs.

Conversion reporting columns

A conversion reporting column is the mapping of conversion tracking tags, or conversion pixels, to reporting columns. Here's what you need to know about conversion reporting columns:

To add a conversion reporting column to your campaign, include the CampaignConversionReportingColumns property with at least the following two fields.

Property Notes
TrackingTagId The tracking tag to which the ID belongs must have a type considered to be a conversion (for details, see the Tracking tag and Tracking tag type APIs).
ReportingColumnId Metrics about this conversion will appear in reports under this reporting column. Only one tracking tag ID and cross-device attribution model ID may be mapped to each column within a campaign. For details, see Set up cross-device attribution for a conversion campaign.

GraphQL mutation example

The following campaignCreate GraphQL mutation illustrates how to create a Kokai campaign with a Kokai budget version.

mutation {
  campaignCreate(
    input: {
      advertiserId: "ADVERTISER_ID_PLACEHOLDER"
      primaryGoal: { maximizeReach: true }
      campaignConversionReportingColumns: {}
      flights: {
        budgetInAdvertiserCurrency: 1200000
        endDateExclusiveUTC: "2025-02-15T00:00:00"
        startDateInclusiveUTC: "2025-03-15T00:00:00"
      }
      name: "CAMPAIGN_NAME_PLACEHOLDER"
      primaryChannel: DISPLAY
      seedId: "SEED_ID_PLACEHOLDER"
    }
  ) {
    userErrors {
      field
      message
    }
    data {
      id
      name
      version
      budget {
        version
        total
      }
    }
  }
}

REST request example

Here's what you need to know about using the REST API to create campaigns:

Here's an example of a POST /v3/campaign request body for a campaign that has multiple goals.

{
    "AdvertiserId": "ADVERTISER_ID_PLACEHOLDER",
    "CampaignName": "CAMPAIGN_NAME_PLACEHOLDER",
    "Version": "Kokai",
    "SeedId": "SEED_ID_PLACEHOLDER",
    "Budget": {
        "Amount": 1200000,
        "CurrencyCode": "USD"
    },
    "StartDate": "2024-09-15T00:00:00",
    "EndDate": "2024-08-15T00:00:00",
    "CampaignConversionReportingColumns": [],
    "PrimaryGoal": {
        "MaximizeReach": true
    },
    "SecondaryGoal": {
        "MaximizeLtvIncrementalReach": true
    },
    "TertiaryGoal": {
        "VCPMInAdvertiserCurrency": {
            "Amount": 28.00,
            "CurrencyCode": "USD"
        }
    },
    "PrimaryChannel": "Display",
    "IncludeDefaultsFromAdvertiser": true
}

FAQs

The following is a list of frequently asked questions about creating campaigns.

How do I update a campaign after I create it?

Use the GraphQL campaignUpdate operation.

When creating a Kokai campaign, how do I set the budgeting version to Kokai?

In GraphQL, campaign and budget versions are set to Kokai by default. If you are using the REST API, just set the campaign Version property to Kokai, and the BudgetingVersion value is automatically set to Kokai and returned in the response.

How are ad group KPIs set when there are multiple campaign goals?

The primary campaign goal becomes the default KPI for all ad groups in the campaign.

How do I use the REST API to opt my campaign out of the Sellers and Publishers Marketplace 500+?

In a POST /v3/campaign call, set the MarketplaceOptOut value to true.