Create campaign

Create Onsite Display campaigns and configure objectives, budgets, and schedules.

Overview

Campaigns are the top-level container for Onsite Display delivery.

A campaign defines the overall objective and determines where budget, scheduling, and delivery configuration are managed.

Each campaign contains one or more ad groups. Configuration decisions made at the campaign level affect how downstream ad groups inherit budget, delivery speed, and scheduling behavior.

This guide explains how campaigns are created, how objectives work, and the key decisions that affect campaign delivery readiness.

Availability

Campaign Management APIs support self-serve Onsite Display only.

Offsite Display (Walmart DSP) campaign creation and management are not currently supported via API.


How campaign creation fits into delivery

Creating a campaign is the first step in building an Onsite Display campaign, but campaign creation alone does not make a campaign eligible to serve.

Create Campaign

Define campaign objective and configuration model.

Assign Item Set

Attach featured measurement item set.

Create Ad Group

Configure bidding, targeting, and delivery settings.

Configure Targeting

Apply targeting tactics and audiences.

Associate Creative

Attach approved creatives.

Launch

Campaign becomes eligible to serve impressions.

📌

Campaign creation does not equal delivery readiness

A newly created campaign still requires:

  • A featured item set
  • At least one ad group
  • Targeting configuration
  • At least one approved creative before ads can begin serving.

How it works

When creating a campaign, you must decide whether budget, scheduling, and delivery settings are managed at the campaign level or the ad group level.

Once a campaign is created, the level where these settings is configured cannot be changed.


Endpoint

POST /api/v1/campaigns

(View technical specifications)


Before you begin

  • Valid advertiserId
  • Campaign Management write access granted
  • Configuration placement decision made
  • Featured item set created (recommended before activation)

Request details

How this request is used

Creates a campaign container that organizes ad groups and defines how budget and scheduling are applied.

Key fields and behaviors

  • name
    Used to organize and identify campaigns across partner platforms.

  • objective
    Determines the campaign optimization goal.

  • Budget configuration
    Determines whether budget is managed at the campaign level or ad group level.

  • Scheduling
    Determines whether schedule management occurs at the campaign level or ad group level.

Configuration rule

Budget, schedule, and delivery speed must be defined at either the campaign level or the ad group level — not both.

Important constraints

  • Configuration level (either campaign or ad group) cannot be changed after a campaign is created.
  • Unlimited end date cannot be used with total budget.

Choosing an objective

The objective parameter establishes the KPI and optimization behavior used by the platform.

Awareness

Maximizes delivered impressions to Walmart customers.

  • Brand awareness campaigns
  • Reach-focused strategies
  • Default objective

Engagement

Optimizes toward traffic and customer interaction.

  • Landing page traffic
  • Click-focused campaigns
  • Customer engagement goals

Conversion

Optimizes toward attributable sales transactions.

  • Performance campaigns
  • Sales-focused objectives
  • Attributed conversion goals

Video campaign limitation

engagement and conversion objectives are not supported when mediaType=video.


Budget configuration

Budget, schedule, and delivery speed can be managed either at the campaign level or the ad group level.

Campaign-Level Configuration

  • All ad groups inherit the same settings
  • Centralized budget control
  • Shared schedule and delivery model

Ad Group-Level Configuration

  • Each ad group controls its own settings
  • Independent budgets and schedules
  • Greater flexibility for testing

For a complete explanation of inheritance rules, see Campaign vs Ad Group Configuration Rules.

Budget fields

ParameterDescription
budgetTypedaily or total
dailyBudgetRequired when budgetType=daily
totalBudgetRequired when budgetType=total
deliverySpeedfrontloaded or evenly; required when budgetType=total

Schedule

ParameterDescription
startDateCampaign start date
endDateCampaign end date

Date rules

  • ISO 8601 timezone format: yyyy-MM-dd'T'HH:mm:ss.SSSXXX
  • All dates are normalized to Eastern Time

End date behavior

Unlimited campaigns

Use:

9999-12-30T00:00:00Z

to create an unlimited campaign duration.

Constraints

  • Unlimited end dates cannot be used with budgetType=total
  • End dates must occur after 12:00 PM ET
  • Midnight ET values are interpreted as the end of the previous day

Sample requests

Default banner campaign
curl --location --request POST 'https://developer.api.us.walmart.com/api-proxy/service/display/api/v1/campaigns' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <auth_token>' \
--header 'WM_SEC.AUTH_SIGNATURE: ***********' \
--header 'WM_CONSUMER.ID: abcde-v123-fa2r-a1fs-asd45f6qef' \
--header 'WM_SEC.KEY_VERSION: 1' \
--header 'WM_CONSUMER.intimestamp: 1565309779' \
--data '[
  {
    "advertiserId": 1,
    "name": "string",
    "description": "string",
    "objective": "AWARENESS",
    "campaignType": "NGD",
    "startDate": "2025-01-01T12:00:00.000Z",
    "endDate": "2025-01-31T12:00:00.000Z",
    "budgetType": "TOTAL",
    "totalBudget": 10000.0,
    "deliverySpeed": "EVENLY",    "optimization": { "goalSetting": [ { "kpi": "ROAS" } ] }   }
]'
Batch operation
curl --location --request POST 'https://developer.api.us.walmart.com/api-proxy/service/display/api/v1/campaigns' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <auth_token>' \
--header 'WM_SEC.AUTH_SIGNATURE: ***********' \
--header 'WM_CONSUMER.ID: abcde-v123-fa2r-a1fs-asd45f6qef' \
--header 'WM_SEC.KEY_VERSION: 1' \
--header 'WM_CONSUMER.intimestamp: 1565309779' \
--data '[   { "advertiserId": 1, "name": "string", "description": "string", "objective": "AWARENESS", "campaignType": "NGD", "startDate": "2025-01-01T12:00:00.000Z", "endDate": "2025-01-31T12:00:00.000Z", "budgetType": "DAILY", "dailyBudget": 100.0, "deliverySpeed": "EVENLY", "optimization": { "goalSetting": [ { "kpi": "ROAS" } ] } },
{ "advertiserId": 1, "name": "string", "description": "string", "objective": "AWARENESS", "campaignType": "NGD", "startDate": "2025-01-01T12:00:00.000Z", "endDate": "2025-01-31T12:00:00.000Z", "budgetType": "TOTAL", "totalBudget": 10000.0, "deliverySpeed": "EVENLY"
} ]'
Video campaign
curl --location 'https://developer.api.us.walmart.com/api-proxy/service/display/api/v1/api/v1/campaigns' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <auth_token>' \
--header 'WM_SEC.AUTH_SIGNATURE: ***********' \
--header 'WM_CONSUMER.ID: abcde-v123-fa2r-a1fs-asd45f6qef' \
--header 'WM_SEC.KEY_VERSION: 1' \
--header 'WM_CONSUMER.intimestamp: 1565309779' \
--data '[{     "advertiserId": 1, "name": "string", "description": "string", "objective": "AWARENESS", "campaignType": "NGD", "startDate": "2025-01-01T12:00:00.000Z", "endDate": "2025-01-31T12:00:00.000Z", "budgetType": "TOTAL", "totalBudget": 10000.0, "deliverySpeed": "EVENLY", "mediaType": "VIDEO"  }
]'
📌

Batch requests

Campaign creation supports batch operations. For this endpoint, the following limitations apply:

  • Match batch size: 10
  • Max number of campaigns per advertiser account: 5000
  • All campaigns in the same batch must share the same advertiserId

See the Batch Requests Guide for batch behavior, retry strategies, and partial success handling.


Response details

What this response returns

The response confirms campaign creation and returns identifiers required for downstream workflows.

Key fields to use

  • campaignId
    Required when creating ad groups and assigning item sets.

  • code
    Indicates if creation request was successful or failed

  • details
    Populates success or error message depending upon value of code

How to interpret results

  • A successful response confirms the campaign exists.
  • The campaign is not yet serving.
  • Additional campaign components must be configured before delivery begins.

Sample responses

Single campaign
[  { "code": "success", "details": ["string"], "name": "string", "campaignId": 1 }
]
Batch operation
[ { "code": "failure", "details": [ "string" ],    "message": "string",
    "errors": [ { "field": "string", "errorType": "string", "description": "string" } ] }, { "code": "success", "details": [ "string" ],     "message": "string",
    "errors": [ { "field": "string", "errorType": "string", "description": "string" } ] }
]

Common issues

  • Setting budget at both campaign and ad group level
  • Attempting to change configuration placement after scheduling
  • Forgetting to assign a featured item set
  • Using unsupported objectives with video campaigns
  • Trying to set only budget or schedule at campaign level

What happens next

After creating a campaign:

  1. Assign a featured item set
  2. Create one or more ad groups
  3. Configure targeting
  4. Associate approved creatives
  5. Launch

Related pages


What’s Next

Learn to create Onsite Display campaigns and configure objectives, budgets, and schedules.

Did this page help you?