Duplicate campaigns, ad sets, ads
Right-click row → Duplicate, OR action menu Duplicate. Creates draft mirror, opens in Pro mode for customization. POST /api/v1/campaigns/duplicate.
Written By Salvatore Sinigaglia
Last updated About 1 hour ago
Right-click row → Duplicate, OR action menu Duplicate. Creates draft mirror, opens in Pro mode for customization. POST /api/v1/campaigns/duplicate.
Duplicate campaigns, ad sets, ads
Duplicate a campaign / ad set / ad from its row action (⋮) → Duplicate (there is no right-click context menu). Duplication creates a copy on the ad platform, not a Wevion draft — via per-platform endpoints (
POST /api/v1/{google,tiktok,taboola}/campaigns|adgroups|ads/:id/duplicate; Meta uses its own/campaigns|adsets|ads/duplicatewith deep-copy + post-id options). There is no genericPOST /api/v1/campaigns/duplicate. Meta uses a full duplicate dialog; non-Meta does a quick paused-clone. Use cases: A/B variant, copy a winning campaign, re-launch with a creative refresh.
Who is this for
Mediabuyers iterating on what's working. Scaling a winning campaign with audience variants. Cloning a campaign for a different country / vertical / season.
When to duplicate
How to duplicate
Step 1: Find the source
In Ads Manager, navigate to what you want to copy: campaign, ad set, or ad.
Step 2: Trigger duplicate
Use the row's action menu (⋮) → Duplicate (there is no right-click context menu). The call routes to the entity's platform-specific duplicate endpoint.
Step 3: Confirm what to duplicate
- Meta: a full duplicate dialog lets you pick target ad account, whether to include children (deep copy), and post-ID handling.
- Non-Meta (Google / TikTok / Taboola): a quick paused-clone ("Duplica rapido") — the copy is created paused, typically named
... (Copy).
Step 4: Copy created on the platform
The duplicate is created on the ad platform (not as a Wevion draft). It typically starts paused so you can review before it spends.
Step 5: Customize (in the editor)
To adjust the copy, open it in the Campaign Creator Pro editor (Ads Manager "edit" navigates there):
- Rename for clarity
- Adjust audience / budget / creative / dates
Step 6: Activate
Verify the duplicate on the platform, then activate it (inline status toggle) when ready.
What gets copied
When you duplicate a campaign:
- Campaign-level: objective, budget structure (CBO/ABO), name (+ "(Copy)"), schedule, special category, DSA fields
- All ad sets (each with their audience, budget, optimization goal, bid strategy, placements)
- All ads (each with their creative, copy, CTA, destination URL, UTM)
What's NOT copied:
- Performance data (the duplicate starts fresh)
- Platform-side learning (Meta's algorithm starts from scratch on the duplicate)
- Direct link back to the original (each is an independent campaign)
Cross-account duplicate
Useful for agencies cloning a successful campaign across multiple client accounts:
- In modal: Target ad account dropdown → pick different account
- Caveats:
- Different account = different currency (budget may need adjustment)
- Different account = different connected pixel
- Different account = different DSA fields if EU
For multi-account at scale: see am-107 bulk duplicate + cc-105 multi-account Bulk Launch.
Cross-level duplicate
You can duplicate at different hierarchy levels:
- Campaign: full clone (recommended for most variants)
- Ad set: clone within same campaign (add another audience variant to existing campaign)
- Ad: clone within same ad set (creative A/B test)
For ad-level duplicate: useful to spin up a creative variant without restructuring the campaign.
Bulk duplicate
For duplicating multiple campaigns at once: see am-107 bulk duplicate.
Naming the duplicate
Best practice: clearly identify variants.
Original Campaign Name→Original Campaign Name (Copy)(default)- Better:
Original Campaign Name v2(semantic version) - Even better:
Original Campaign Name — Audience Test 2(descriptive)
Naming convention article: am-108.
Duplicate vs Relaunch
Two related but different operations:
- Duplicate: creates new entity (new ID, new history); platform-side learning starts fresh
- Relaunch (
apps/backend/src/services/meta-relaunch-ads-service.ts): rebuilds the SAME entity after pause/rejection; preserves learning where possible
Relaunch use case: ad rejected by Meta → fix creative → relaunch (same ad ID + learning).
Duplicate use case: ad working great → clone to scale or test variant.
What you'll see
After Duplicate action:
- A confirmation toast that the duplicate was created
- A new copy on the ad platform (typically paused), visible in Ads Manager
- Original entity unchanged
After publishing duplicate:
- Both original + duplicate visible in Ads Manager
- Same name visible (with "(Copy)" or your custom rename)
RBAC
Duplicate requires same role as publishing (mediabuyer+). See team-101 roles.
Audit log
Each duplicate logged:
action: campaign_duplicatemetadata: source campaign ID + new campaign ID
Filter audit log by this action to see "what was duplicated this week".
Common issues
- "Duplicate modal asks for ad account I don't have access to": cross-account requires access to target account. Either get added to that ad account (team-108) or pick an account you can access.
- "Duplicated successfully but creative missing": source ad's creative may have been deleted. Re-upload + edit duplicate.
- "Duplicate slow > 10 sec": complex campaign with many ads + variants. Wait. If > 1 min, contact support.
- "Duplicate published but original got modified": shouldn't happen. Each entity is independent. If observed, file bug report.
Best practices
Duplicate to test, not to backup
Don't duplicate as a "backup" before editing — backups should be Wevion's audit log. Duplicate for variant testing or genuine new campaigns.
Clearly name variants
Use a system: Campaign Name v2-LookalikeBroad, Campaign Name v2-LookalikeNarrow. Future you needs to know what each variant tests.
Cross-account: align prerequisites first
Before cross-account duplicate, verify the target account has: pixel set up, DSA fields, audience parity, currency budget alignment. Otherwise the duplicate fails validation post-publish-attempt.
Limit duplicate-then-edit cycles
If you find yourself duplicating + editing repeatedly: extract the pattern as a Campaign Template for reuse.
FAQ
How do I duplicate a campaign in Wevion?
Use the row's action menu (⋮) → Duplicate (there is no right-click context menu). For Meta, a dialog lets you pick the target ad account, whether to include children, and post-ID handling; for Google/TikTok/Taboola it's a quick paused-clone. The copy is created on the ad platform (usually paused) — not as a Wevion draft. To customize it, open it in the Campaign Creator Pro editor.
What gets copied when I duplicate a campaign?
Wevion copies the campaign's objective, budget structure, schedule, special category, DSA fields, and all ad sets and ads with their audience, budget, creative, copy, CTA, and UTM. It does not copy performance data or platform-side learning — the duplicate starts fresh — and there is no direct link back to the original, since each is an independent campaign.
Can I duplicate a campaign to a different ad account in Wevion?
Yes. In the Duplicate modal, use the Target ad account dropdown to pick a different account for a cross-account duplicate. Be aware the target account may use a different currency (so budgets may need adjustment), a different connected pixel, and different DSA fields if it is in the EU.
What's the difference between Duplicate and Relaunch?
Duplicate creates a new entity with a new ID and fresh history, so platform-side learning starts from scratch — ideal for scaling a winner or testing a variant. Relaunch rebuilds the same entity after a pause or rejection and preserves learning where possible, which suits cases like fixing a rejected creative and relaunching the same ad.
Does duplicating a campaign change the original?
No. In Wevion, each entity is independent, so the original campaign stays unchanged after you duplicate it. The duplicate is created on the ad platform (typically paused) and appears alongside the original in Ads Manager.