Skip to main content

Group A: All-New Entities

Group A scenarios involve creating campaigns from scratch where no entities have existing platform IDs. All entities CREATE when published.
Scenarios in this group:
  • New campaign with new ad sets and ads
  • Multiple new campaigns
  • Carousel ads (Meta and TikTok)
  • Re-publishing canvas-origin nodes
  • First-time campaign publishing

Scenario A1: Simple New Campaign

Setup:
  • Create new campaign node (+ Campaign)
  • Add new ad set node (+ Ad Set)
  • Add new ad node (+ Ad)
  • Configure all nodes
  • Publish
Expected Behavior:
EntityHas ID?ActionResult
CampaignNoCREATENew campaign created on platform
Ad SetNoCREATENew ad set created under campaign
AdNoCREATENew ad created under ad set
After Publish:
  • All nodes receive platform IDs
  • Campaign is live on platform
  • Subsequent publishes will UPDATE or SKIP (nodes now have IDs)
This is the most common scenario for new users. All entities create new on the platform.

Scenario A2: Multiple New Campaigns

Setup:
  • Create 3 campaign nodes
  • Each campaign has 2 ad sets
  • Each ad set has 2 ads
  • Publish all together
Expected Behavior:
Campaign 1: CREATE
  ├─ Ad Set 1a: CREATE
  │   ├─ Ad 1a1: CREATE
  │   └─ Ad 1a2: CREATE
  └─ Ad Set 1b: CREATE
      ├─ Ad 1b1: CREATE
      └─ Ad 1b2: CREATE

Campaign 2: CREATE
  ├─ Ad Set 2a: CREATE
  │   ├─ Ad 2a1: CREATE
  │   └─ Ad 2a2: CREATE
  └─ Ad Set 2b: CREATE
      ├─ Ad 2b1: CREATE
      └─ Ad 2b2: CREATE

Campaign 3: CREATE
  ├─ Ad Set 3a: CREATE
  │   ├─ Ad 3a1: CREATE
  │   └─ Ad 3a2: CREATE
  └─ Ad Set 3b: CREATE
      ├─ Ad 3b1: CREATE
      └─ Ad 3b2: CREATE
Result:
  • 3 campaigns created
  • 6 ad sets created (2 per campaign)
  • 12 ads created (2 per ad set)
  • All entities receive platform IDs
Whathead processes campaigns in parallel for speed, but maintains hierarchical order within each campaign (campaign → ad sets → ads).
Setup:
  • Create new campaign (objective: Sales)
  • Create new ad set
  • Create new ad with carousel format
  • Add 5 carousel cards with images
  • Publish
Expected Behavior:
EntityHas ID?ActionResult
CampaignNoCREATENew campaign created
Ad SetNoCREATENew ad set created
Ad (Carousel)NoCREATENew carousel ad created with 5 cards
Platform-Specific:
  • Meta: Carousel ad created with all cards in single API call
  • Each card is part of the ad, not a separate entity
  • Carousel ad receives single ad ID
Carousel ads are single entities with multiple cards. You don’t get separate IDs for each card.
Setup:
  • Create new campaign (objective: Conversion)
  • Create new ad group
  • Create new ad with carousel format
  • Add 10 carousel cards
  • Publish
Expected Behavior:
EntityHas ID?ActionResult
CampaignNoCREATENew campaign created
Ad GroupNoCREATENew ad group created
Ad (Carousel)NoCREATENew carousel ad created with 10 cards
Platform-Specific:
  • TikTok: Supports up to 10 carousel cards
  • All cards created in single API call
  • Carousel ad receives single ad ID

Scenario A5: Re-Publishing Canvas-Origin Node

Setup:
  • Create new campaign node
  • Publish (campaign receives ID)
  • Publish again without changes
Expected Behavior: First Publish:
EntityHas ID?ActionResult
CampaignNoCREATENew campaign created, receives ID
Second Publish:
EntityHas ID?Has Changes?ActionResult
CampaignYesNoSKIPNo API call, campaign unchanged
Common Mistake: Users expect canvas-origin nodes to create duplicates on every publish. After the first publish, nodes have IDs and behave like loaded entities (UPDATE or SKIP).

Scenario A6: Re-Publishing Canvas-Origin Node with Changes

Setup:
  • Create new campaign node
  • Publish (campaign receives ID)
  • Edit campaign budget
  • Publish again
Expected Behavior: First Publish:
EntityHas ID?ActionResult
CampaignNoCREATENew campaign created, receives ID
Second Publish:
EntityHas ID?Has Changes?ActionResult
CampaignYesYesUPDATECampaign budget updated on platform
Result:
  • Campaign is updated, not duplicated
  • Platform ID remains the same
  • Budget change reflected on platform
After first publish, canvas-origin nodes can UPDATE just like loaded entities. They’re no longer “new” once they have platform IDs.

Scenario A7: New Campaign with Multiple Ad Sets Under One Campaign

Setup:
  • Create 1 campaign node
  • Create 5 ad set nodes under the campaign
  • Create 2 ads under each ad set
  • Publish
Expected Behavior:
Campaign: CREATE
  ├─ Ad Set 1: CREATE
  │   ├─ Ad 1a: CREATE
  │   └─ Ad 1b: CREATE
  ├─ Ad Set 2: CREATE
  │   ├─ Ad 2a: CREATE
  │   └─ Ad 2b: CREATE
  ├─ Ad Set 3: CREATE
  │   ├─ Ad 3a: CREATE
  │   └─ Ad 3b: CREATE
  ├─ Ad Set 4: CREATE
  │   ├─ Ad 4a: CREATE
  │   └─ Ad 4b: CREATE
  └─ Ad Set 5: CREATE
      ├─ Ad 5a: CREATE
      └─ Ad 5b: CREATE
Result:
  • 1 campaign created
  • 5 ad sets created under the campaign
  • 10 ads created (2 per ad set)
This is a common pattern for testing multiple audiences or targeting strategies within a single campaign.

Scenario A8: Multiple Campaigns with Shared Ad Set Structure

Setup:
  • Create 10 campaign nodes (same objective)
  • Create 1 ad set node and connect it to Campaign 1
  • Copy/paste the ad set 9 times to create ad sets for the other campaigns
  • Create 1 ad under each ad set
  • Publish
Expected Behavior:
Campaign 1: CREATE
  └─ Ad Set 1: CREATE
      └─ Ad 1: CREATE

Campaign 2: CREATE
  └─ Ad Set 2: CREATE
      └─ Ad 2: CREATE

... (8 more campaigns)

Campaign 10: CREATE
  └─ Ad Set 10: CREATE
      └─ Ad 10: CREATE
Result:
  • 10 campaigns created
  • 10 ad sets created (1 under each campaign)
  • 10 ads created (1 under each ad set)
  • Each ad set node publishes under its designated parent campaign
Efficient Workflow: Use copy/paste to duplicate ad set configurations across multiple campaigns. This is faster than manually recreating the same ad set structure 10 times.

Common Questions

No. Canvas-origin nodes only CREATE on the first publish. After receiving platform IDs, they UPDATE or SKIP on subsequent publishes just like loaded entities.To create duplicates, use copy/paste or the duplicate function.
Yes. Whathead processes multiple campaigns in parallel. Each campaign is created independently with its ad sets and ads.
Successful campaigns are created and receive IDs. Failed campaigns show error messages. Fix errors and retry—successful campaigns will be skipped automatically.
No. Each ad set belongs to exactly one campaign when published. If you visually connect an ad set to multiple campaigns on the canvas, only one parent is used at publish time (determined by the ad set’s parentNode or campaign_id field). To have the same ad set structure under multiple campaigns, use copy/paste to duplicate the ad set node for each campaign.

Next Steps