Duplicate campaigns, ad sets, ads

Last updated: May 19, 2026

Duplicate campaigns, ad sets, ads

Right-click any row → Duplicate OR action menu → Duplicate. Creates a draft mirror of the selected campaign / ad set / ad. Opens in Pro mode for customization before publish. Endpoint: POST /api/v1/campaigns/duplicate (verified). Use cases: A/B variant, copy winning campaign to new audience, re-launch with 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

Scenario

Why duplicate

Found a winning campaign

Duplicate + tweak audience to test scale potential

Need same campaign for next quarter

Duplicate + change dates, refresh creative

Want A/B variant on creative

Duplicate + swap creative

Geo expansion (US works, try EU)

Duplicate + change target country

Client wants matching setup for new product

Duplicate + customize per product

Re-launch a paused winner

Duplicate (gets fresh learning) vs Resume (preserves learning but starts on stale audience signals)

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

Two ways:

  • Right-click the row → context menu → Duplicate

  • Action menu (⋮) → Duplicate

Both call POST /api/v1/campaigns/duplicate with the selected entity ID.

Step 3: Confirm what to duplicate

Modal asks:

  • Target ad account: same account (default) OR different (cross-account duplicate)

  • Include children?:

    • For campaign: include all ad sets + ads (full clone) OR just shell

    • For ad set: include ads

  • Name suggestion: Wevion suggests [Original Name] (Copy); you can rename

Click Duplicate.

Step 4: Draft created + opens in Pro

Wevion creates a draft in /campaign-drafts (verified endpoint family). The draft opens in Pro mode with all the source's config pre-filled.

Step 5: Customize

In Pro mode:

  • Rename for clarity

  • Adjust audience (if variant testing)

  • Adjust budget (if scaling)

  • Swap creative (if creative refresh)

  • Change dates (if reusing for new period)

Step 6: Publish

Standard publish flow: Pause-first by default (cc-119).

Verify the duplicate on the platform before activating.

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 NameOriginal 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:

  • Toast: "Campaign duplicated — opened in Pro editor"

  • New draft entity in /campaign-drafts

  • Pro mode opens with the duplicate's structure

  • 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_duplicate

  • metadata: 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.

Related