Publishing Decision Logic
When you click Publish, Whathead analyzes each node and decides whether to CREATE a new entity, UPDATE an existing entity, or SKIP the entity entirely. Understanding this decision logic helps you predict publishing behavior and avoid unexpected results.What you’ll learn:
- How Whathead decides CREATE vs UPDATE vs SKIP
- What existing IDs are and how they work
- Canvas-origin nodes vs loaded entities
- Change detection and SKIP behavior
- Decision trees and matrices for all scenarios
The Core Decision
Whathead makes publishing decisions based on two factors:- Does the node have an existing platform ID?
- Has the node been changed since it was loaded or last published?
Existing Platform IDs
Platform IDs are unique identifiers assigned by advertising platforms when entities are created.Types of Platform IDs
Whathead tracks three types of platform IDs:- existingCampaignId: Unique ID for a campaign (e.g.,
camp_123456789) - existingAdSetId: Unique ID for an ad set/ad group/ad squad (e.g.,
adset_987654321) - existingAdId: Unique ID for an ad (e.g.,
ad_456789123)
When Nodes Get Platform IDs
Nodes receive platform IDs in two ways: 1. Loaded from Platform When you use Select Existing or Expand to load campaigns from your connected platforms, Whathead fetches the platform IDs and stores them on the nodes.You can see platform IDs in the node details panel. Nodes without IDs show “No existing ID” or similar indicator.
When Platform IDs Are Cleared
Whathead clears platform IDs in specific scenarios: 1. Copy/Paste When you copy and paste nodes, platform IDs are cleared from the pasted nodes. This ensures pasted nodes create new entities rather than updating the originals.For complete details on reconnect behavior, scenarios, and managing duplicates, see Reconnect (Relink).
Canvas-Origin Nodes vs Loaded Entities
Understanding the difference between canvas-origin nodes and loaded entities is key to predicting publishing behavior.Canvas-Origin Nodes
Canvas-origin nodes are created directly on the canvas using + Campaign, + Ad Set, or + Ad. Characteristics:- Have no platform ID initially
- Always CREATE on first publish
- Receive platform ID after first publish
- Can UPDATE on subsequent publishes (if you edit them)
Loaded Entities
Loaded entities are fetched from platforms using Select Existing or Expand. Characteristics:- Have platform IDs from the start
- Can UPDATE if you make changes
- Can SKIP if you make no changes
- Never CREATE (unless you clear the ID by pasting or reconnecting)
Comparison Table
| Aspect | Canvas-Origin Node | Loaded Entity |
|---|---|---|
| Initial ID | None | Has platform ID |
| First publish | CREATE | UPDATE or SKIP |
| After first publish | Has ID (behaves like loaded) | Still has ID |
| Edit and republish | UPDATE (after first publish) | UPDATE |
| Republish unchanged | SKIP (after first publish) | SKIP |
| Copy/paste | Creates new node (no ID) | Creates new node (ID cleared) |
Change Detection
Whathead tracks changes to determine whether to UPDATE or SKIP entities that have platform IDs.What Counts as a Change
Whathead detects changes to:- Campaign fields: Name, budget, schedule, status, objective settings
- Ad set fields: Name, targeting, placements, schedule, budget, optimization settings
- Ad fields: Name, copy text, headline, description, CTA, destination URL, creative assets
How Change Detection Works
Load or publish entity
When you load an entity or publish it for the first time, Whathead stores a snapshot of its current configuration.
Publish
When you publish, Whathead compares the current configuration to the stored snapshot. If they differ, the entity is marked for UPDATE.
SKIP Behavior
Entities are skipped when:- Has platform ID: The node has an existingCampaignId, existingAdSetId, or existingAdId
- No changes: The current configuration matches the stored snapshot
- Parent unchanged: The node’s parent connection hasn’t changed
Skipping unchanged entities is efficient. It reduces API calls, improves publish speed, and avoids unnecessary platform updates.
Forcing an Update
If you want to force an update even when nothing changed:- Make a minor change (e.g., add a space to a field)
- Save the change
- Publish (entity will UPDATE)
- Optionally, revert the change and publish again
Decision Matrix
This table shows CREATE vs UPDATE vs SKIP decisions for all common scenarios:| Scenario | Has ID? | Has Changes? | Action | Reason |
|---|---|---|---|---|
| New canvas node, first publish | No | N/A | CREATE | No ID means create new |
| Canvas node, republish unchanged | Yes | No | SKIP | Has ID, no changes |
| Canvas node, edit and republish | Yes | Yes | UPDATE | Has ID, has changes |
| Loaded entity, no changes | Yes | No | SKIP | Has ID, no changes |
| Loaded entity, with changes | Yes | Yes | UPDATE | Has ID, has changes |
| Pasted node | No | N/A | CREATE | ID cleared on paste |
| Duplicated node | No | N/A | CREATE | Duplicate has no ID |
| Reconnected node | No | N/A | CREATE | ID cleared on reconnect |
| Failed entity, retry | No | N/A | CREATE | Never received ID |
| Successful entity, retry | Yes | No | SKIP | Already published, no changes |
Decision Trees
Campaign Publishing Decision Tree
Copy/Paste Decision Tree
Reconnect Decision Tree
See Reconnect (Relink) for detailed reconnect behavior, scenarios, and decision trees.Practical Examples
Example 1: Building and Publishing New Campaign
Scenario: You build a new campaign from scratch and publish it. Steps:- Click + Campaign → Configure campaign (no ID)
- Click + Ad Set → Configure ad set (no ID)
- Click + Ad → Configure ad (no ID)
- Click Publish
- Campaign: No ID → CREATE
- Ad Set: No ID → CREATE
- Ad: No ID → CREATE
Example 2: Editing and Republishing
Scenario: You edit the campaign from Example 1 and republish. Steps:- Campaign now has ID from first publish
- Edit campaign budget
- Click Publish
- Campaign: Has ID, has changes → UPDATE
- Ad Set: Has ID, no changes → SKIP
- Ad: Has ID, no changes → SKIP
Example 3: Loading and Editing Existing Campaign
Scenario: You load an existing campaign and edit it. Steps:- Click Select Existing → Choose Campaign A (has ID)
- Click Expand → Load ad sets and ads (all have IDs)
- Edit Ad Set 1 targeting
- Edit Ad 1 copy text
- Click Publish
- Campaign: Has ID, no changes → SKIP
- Ad Set 1: Has ID, has changes → UPDATE
- Ad Set 2: Has ID, no changes → SKIP
- Ad 1: Has ID, has changes → UPDATE
- Ad 2: Has ID, no changes → SKIP
Example 4: Copy/Paste to Duplicate
Scenario: You copy an existing campaign to create a duplicate. Steps:- Load Campaign A (has ID)
- Copy Campaign A (Ctrl+C)
- Paste (Ctrl+V) → IDs cleared
- Edit campaign name to “Campaign B”
- Click Publish
- Campaign B: No ID (cleared on paste) → CREATE
- Ad Sets: No IDs (cleared on paste) → CREATE
- Ads: No IDs (cleared on paste) → CREATE
Example 5: Reconnecting Ad to Different Ad Set
Scenario: You move an ad from one ad set to another. Steps:- Load Campaign A with Ad Set 1 and Ad Set 2
- Ad 1 is under Ad Set 1 (has ID)
- Drag Ad 1’s connection to Ad Set 2 (ID cleared)
- Click Publish
- Campaign: Has ID, no changes → SKIP
- Ad Set 1: Has ID, no changes → SKIP
- Ad Set 2: Has ID, no changes → SKIP
- Ad 1 (under Ad Set 2): No ID (cleared on reconnect) → CREATE
For detailed reconnect scenarios and managing duplicates, see Reconnect (Relink).
Special Cases
Partial Publish Failures
When some entities succeed and others fail: Successful entities:- Receive platform IDs
- Are skipped on retry (have ID, no changes)
- Do not receive platform IDs
- Are created on retry (no ID)
Platform-Specific Behavior
Some platforms have special behavior: Snapchat Creative Updates:- Changing creative on an existing ad creates a new ad instead of updating
- Whathead clears the ad ID when you change creative on Snapchat
- This ensures a new ad is created rather than attempting an update that would fail
- Changing creative on an existing ad updates the ad
- The ad retains its ID and social proof
- No special handling needed
Best Practices
Understand Your Intent
Before publishing, ask yourself:- Do I want to create new entities? → Use canvas nodes or copy/paste
- Do I want to update existing entities? → Load them with Select Existing or Expand
- Do I want to duplicate entities? → Copy/paste or duplicate
Check the Preview
Always review the preview before confirming publish:- CREATE actions: Verify you want new entities
- UPDATE actions: Verify you’re updating the right entities
- SKIP actions: Verify you’re okay with no changes
Avoid Accidental Duplicates
- Don’t republish canvas-origin nodes expecting updates (they create duplicates)
- Don’t reconnect nodes unless you want duplicates
- Use Select Existing to load campaigns you want to update
Use Platform IDs as Indicators
Check for platform IDs to understand node state:- No ID: Will create new on publish
- Has ID: Will update or skip on publish
Troubleshooting
Why did my campaign create a duplicate instead of updating?
Why did my campaign create a duplicate instead of updating?
Cause: The node didn’t have a platform ID, so it created new.Resolution:
- Check if the node has a platform ID in the node details
- If you want to update, load the campaign using Select Existing
- If you want to create new, this is expected behavior
Why was my entity skipped when I wanted to update it?
Why was my entity skipped when I wanted to update it?
Cause: The entity has a platform ID but no changes were detected.Resolution:
- Verify you saved changes in the node configuration
- Make a change to force an update
- Check that you edited the right node
Why did reconnecting create a duplicate?
Why did reconnecting create a duplicate?
Cause: Platforms don’t support moving entities between parents, so Whathead creates a new entity under the new parent.Resolution:
- This is expected behavior
- See Reconnect (Relink) for detailed scenarios and alternatives
How do I force an update when nothing changed?
How do I force an update when nothing changed?
Cause: You want to update an entity but haven’t made changes.Resolution:
- Make a minor change (add a space to a field)
- Save and publish (entity will UPDATE)
- Optionally, revert the change and publish again
Next Steps
Publishing Workflow
Learn the complete publishing process from validation to confirmation.
Create vs Update
Understand when entities are created new versus updated.
Publishing Scenarios
Explore 30+ publishing scenarios covering all edge cases.
Existing Campaign Editing
Learn how to edit and republish campaigns loaded from platforms.