Save vs Publish
| Action | When | What happens |
|---|---|---|
| Save | You click Save in a campaign, ad set, or ad form. | Your changes are stored on the canvas only. Nothing is sent to Meta, TikTok, or Snapchat. |
| Publish | You click Publish in the top bar and confirm in the publish modal. | Whathead sends new or changed campaigns, ad sets, and ads to the platform. The platform creates or updates them and returns IDs; those are stored so future publishes can update the same items. |
What gets created, updated, or skipped
For each campaign, ad set, and ad on the canvas, Whathead decides:| Situation | What happens |
|---|---|
| New item (never published, or no platform ID) | Create — The platform creates it and returns an ID. Whathead stores that ID so the next publish can update it. |
| Existing item with changes | Update — Whathead sends only the editable fields that changed. The platform updates the existing campaign, ad set, or ad. |
| Existing item with no changes | Skip — Nothing is sent for that item. It’s left as-is on the platform. |
| Whole campaign unchanged | The whole campaign tree can be skipped and may not appear in the publish list. |
| Campaign already on platform but empty (no ad sets) and nothing to do | It may be excluded from the publish modal. |
When you save after editing, Whathead compares your form to the last loaded version and marks what changed. When you publish, it sends only what’s new or changed.
How we decide: Create, Update, or Skip
For every campaign, ad set, and ad, Whathead asks two questions:- Create — The item is sent to the platform and created. You get a new campaign, ad set, or ad.
- Update — Only the fields you changed are sent. The existing item on the platform is updated.
- Skip — Nothing is sent. The item on the platform is left as-is.
What happens when I… (all portals)
Use this as a quick reference for common actions. Meta, TikTok, and Snapchat all follow the same logic unless noted.| What you did | Campaign | Ad set | Ad | Works on |
|---|---|---|---|---|
| Create a new campaign (and ad sets, ads) and publish | Create | Create | Create | Meta, TikTok, Snapchat |
| Load existing campaign (Select Existing), edit name or budget, publish | Update | — | — | Meta, TikTok, Snapchat |
| Load existing campaign, don’t edit, publish | Skip | — | — | Meta, TikTok, Snapchat |
| Existing campaign + add a new ad set and new ads, publish | Skip or Update | Create | Create | Meta, TikTok, Snapchat |
| Load existing campaign → Expand (fetch ad sets/ads) → edit some, publish | Skip or Update | Update (changed) / Skip (unchanged) | Update / Skip | Meta, TikTok, Snapchat |
| Copy a campaign (or ad set, or ad) and paste → publish | Create (pasted tree) | Create | Create | Meta, TikTok, Snapchat |
| Move an ad to another ad set (reconnect) → publish | — | — | New ad under new ad set (platforms don’t support moving) | Meta, TikTok, Snapchat |
| Move an ad set to another campaign → publish | — | New ad set + new ads under new campaign | Create | Meta, TikTok, Snapchat |
| Bulk edit (e.g. status, budget) on several campaigns or ad sets → publish | Update (edited) / Skip (not edited) | Update / Skip | — | Meta, TikTok, Snapchat |
| Cross-transfer (Snapchat → Meta or Meta → Snapchat) then publish | Create (all new on destination) | Create | Create | Meta, Snapchat |
Copy/paste and reconnect always create new entities on the platform. Whathead clears “existing” IDs so the pasted or moved item is treated as new. You don’t need to do anything special — just publish.
Scenario matrix
A full reference of what happens to each level (campaign, ad set, ad) when you publish in different situations. Use the tabs below to look up your case.Legend
| Outcome | Meaning |
|---|---|
| Create | Sent to the platform and created; you get a new entity and an ID is stored. |
| Update | Only changed fields are sent; the existing entity on the platform is updated. |
| Skip | Nothing is sent; the entity on the platform is left as-is. |
Publish order
Whathead always sends in this order so parents exist before children: Campaign first → then each ad set → then ads (and creatives when needed) per ad set.By scenario group
- All new
- Existing + new children
- Existing campaign + existing ad sets
- Fully existing (load + edit)
- Expand (fetch from platform)
- Copy / paste / duplicate
- Reconnect (move node)
- Bulk edit
- Platform-specific
Everything on the canvas is new (no “Select Existing”, no prior publish).
Canvas-origin nodes always create on the platform. To update an existing campaign/ad set/ad, you must load it via Select Existing (or Expand).
| Scenario | Campaign | Ad set | Ad |
|---|---|---|---|
| New campaign + new ad set + new ad | Create | Create | Create |
| New campaign + multiple ad sets + multiple ads | Create | Create | Create |
| New campaign + new ad set + carousel ads | Create | Create | Create (cards in one creative) |
| Publish the same canvas node again (no “Load Existing”) | Create | Create | Create |
Platform differences (Meta vs TikTok vs Snapchat)
Same Create/Update/Skip logic applies everywhere; a few behaviors differ by platform.- Meta
- TikTok
- Snapchat
- Changing creative (image, video, or copy) on an existing ad: Whathead creates a new creative and updates the ad to use it. The same ad stays; only the creative is new.
- Carousel ads: Multiple cards are built from your carousel setup and sent as one creative.
- Reconnect / paste: Pasted or moved ads keep their asset references (e.g. image hash); a new creative and new ad are created on publish so the duplicate works.
How to publish
Open the Publish modal
Click Publish in the Campaign Builder top bar. A list of campaigns (and their status) appears.
Choose what to publish
Use the mode: All (every campaign for the selected platform), Selected (only the campaigns you check), Multi-Platform (campaigns across several platforms), or Cross-Transfer (cross-transfer flow).
Start publishing
Click the button to start. Whathead checks your connection, then sends each campaign (and its ad sets and ads) in order. For Snapchat, a short delay is applied between campaigns to respect rate limits.
Publish modes
- All
- Selected
- Multi-Platform
- Cross-Transfer
Publishes every campaign shown for the platform you have selected (e.g. all Meta campaigns on the canvas).
What you might see
Everything is new
Everything is new
When nothing on the canvas has been published before, every campaign, ad set, and ad is created on the platform. After a successful publish, IDs are stored so future edits can update those same items.
Some items already exist
Some items already exist
If you loaded existing campaigns or ad sets (Select Existing) or published before, those items have IDs. When you publish again, only the ones you changed are updated; the rest are skipped.
Nothing to do
Nothing to do
If a campaign and all its ad sets and ads are unchanged, the whole tree may be skipped and the campaign might not appear in the publish list (or you’ll see that it was skipped).
Something failed — retry
Something failed — retry
If a campaign row shows an error, you can click Retry on that row to try again. Use Retry Failed in the footer to retry all failed campaigns. You can retry up to a few times. There is no automatic retry; you choose when to retry.
Progress and status
- Waiting — Not started yet (gray).
- Publishing — Currently being sent (blue, with a spinner).
- Done — Successfully published (green). Progress bar for that item is full.
- Error — Something went wrong (red). An error message is shown; use Retry or Retry Failed to try again.
Retrying after an error
- Each campaign row that failed has a Retry button. Click it to try publishing that campaign again.
- The Retry Failed button in the footer retries all failed campaigns one after another.
- You can retry up to a few times per campaign. If it still fails, check the error message (e.g. connection, permissions, or platform limits) and fix the issue before publishing again.