Skip to main content
Skill set-up-a-campaign · version 1.0.0 · for buyers.

When to use

  • A person hands you a brief, a budget or a plan and wants it in front of sellers.
  • A person wants to compare what sellers offer before committing to anything.
  • A draft campaign exists but has no proposals or no staged media buys yet.
To change or launch a campaign that is already staged, use Manage a campaign. To work with one named seller, use Buy from a seller.

Before you start

  • The account is ready to buy. If not, run Get an account ready to buy.
  • The advertiser exists, and you know its advertiserId.
  • You have from the person: the full brief, total budget and currency, flight dates, and target countries and channels. If they have a conversion goal, run Set up an event source first.

Steps

  1. Call get_status. Stop and resolve any readiness blocker first.
  2. Call search with kind: "campaign" to check the person does not already have this campaign.
  3. Call save_campaign with advertiserId, name, brief, flight, budget (total, currency, pacing), targeting and an idempotencyKey. Pass the brief exactly as the person wrote it. Answer any needs_input with the person. Keep the returned campaignId and revision.
  4. Call request_proposals with campaignId, expectedCampaignRevision and a new idempotencyKey. It returns at once with an execution id and the status running. Only one execution runs per buyer account.
  5. Collect results by calling request_proposals again with the same idempotencyKey and each resultCursor until the execution completes, or read proposals with get and kind: "proposal". Tell the person which sellers quoted, which returned products and which failed.
  6. Compare the proposals with the person: products, price, flight fit and share of budget.
  7. Where the person wants changes, call refine_proposal with the proposalId, plain instructions, and optionally keepProductIds, dropProductIds or budgetDelta. The seller may decline parts of a refinement; report what it accepted.
  8. Creatives. Call open_creative_library or upload_creative_asset so the person can add assets, or open_creative_composer to build one. Then call save_creative with sourceAssets and campaignIds to attach it, and read the format fit it reports per campaign.
  9. Stage. For each proposal the person picked, call save_media_buy with fromProposalId and an idempotencyKey. Staging contacts no seller and books nothing.
  10. Call open_campaign_receipt with the campaignId to show the plan, staged buys, budget, creative coverage and remaining blockers.

Guardrails

  • Do not launch in this skill. Launching is a separate decision that Manage a campaign handles with the person’s explicit approval.
  • Never fill in a budget, currency, date or audience the person did not give you.
  • If your process stops while a proposal request is running, do not start a new one. Call request_proposals with the same idempotencyKey to pick the execution back up.
  • Keep each decision point visible: draft, proposals, refinements, staging.
  • Rehearse with a sandbox advertiser when the person is testing.

Done when

  • A draft campaign exists with at least one staged media buy.
  • The campaign receipt shows no blockers, or you have told the person each one that remains.
  • The person knows the next step is launch, and that it needs their approval.