Launch across multiple ad platforms at once

Bulk Launch supports cross-platform rows (Meta + Google + TikTok in one grid). Per-row platform inferred from account_id. Platform-specific fields surface.

Written By Salvatore Sinigaglia

Last updated About 5 hours ago

Bulk Launch supports cross-platform rows (Meta + Google + TikTok in one grid). Per-row platform inferred from account_id. Platform-specific fields surface.

Launch across multiple ad platforms at once

Bulk Launch is scoped to one active platform at a time (Meta, Google, TikTok, Taboola, Snapchat, Outbrain). Each row carries an explicit platform field; switching the active platform hides the other platforms' rows while keeping their drafts. To run a campaign concept across platforms you fill and publish the grid per platform, switching the active platform between waves. Each platform has its own objectives + creative spec — Bulk Launch validates per-row before publish.

Who is this for

Mediabuyers running omnichannel campaigns. Anyone launching the same campaign concept across multiple platforms (e.g. brand launch on Meta + Google + TikTok simultaneously). Agencies managing cross-platform clients.

Why multi-platform launch matters

Single-channel campaigns leave reach + diversification on the table:

Single-channel riskMulti-platform mitigation
Platform-specific algorithm dependencyDiversify across algorithms
Audience cap on one platformReach broader user base across platforms
Brand awareness limited to one ecosystemTouch users across multiple touchpoints
Single point of failure (account suspended, etc.)Other platforms continue

For brand launches + major promos: multi-platform is essential. For niche / direct-response: single-platform is often fine.

Setup in Bulk Launch

Step 1: Open Bulk Launch

/launch — the grid interface.

Step 2: Pick the active platform and add rows

Choose the active platform for the grid (Meta, Google, TikTok, Taboola, Snapchat, or Outbrain). The grid shows only that platform's rows and its platform-specific fields; each row = one campaign for the active platform. Fill in the rows, then repeat for the next platform by switching the active platform.

Per-platform configuration examples:

  • Meta: account_id = Meta ad account ID, fan_page_id set, pixel_id set
  • Google: account_id = Google customer ID, pixel_id = conversion action ID
  • TikTok: account_id = TikTok advertiser ID, pixel_id = TikTok pixel
  • Taboola: account_id = Backstage account ID
  • Snapchat: account_id = Snapchat ad account (if Snapchat enabled — see snp-101)
  • Outbrain: account_id = Outbrain marketer account

Each row's platform is an explicit field (set by the active platform), not inferred from the account_id. Switching the active platform hides the other platforms' rows but preserves their drafts.

Step 3: Configure shared concept

For the same campaign concept across platforms:

  • Same audience concept (translated per-platform): broad audience for awareness, custom for retargeting
  • Same creative concept (per-platform spec): 1:1 + 9:16 for Meta, 9:16-only for TikTok, 16:9 for YouTube
  • Same copy concept (per-platform char limits): truncated for TikTok's 100-char vs Meta's 125
  • Different objectives per platform's available set (Meta Sales vs Google Performance Max)

Step 4: Per-platform customization

Some fields are platform-specific and require per-row attention:

FieldPer-platform
fan_page_idMeta only
customer_idGoogle only
advertiser_idTikTok
Backstage accountTaboola
pixel_idEach platform has its own pixel
ObjectiveMeta OUTCOME_SALES vs Google GOOGLE_PERFORMANCE_MAX
Bid strategyDifferent per platform's options
DSA fields (EU only)Meta enforces strictly; others may not require
Special ad categoriesEach platform's own enum

Step 5: Validate all

Toolbar Validate all runs per-row validation:

  • Meta row: missing pixel → error
  • Google row: missing customer ID → error
  • TikTok row: aspect ratio not 9:16 → error
  • All rows: missing DSA for EU → error

Fix errors before publishing.

Step 6: Publish wave

Publish all → the active platform's rows are submitted in parallel to SQS workers, each row routed to that platform's launch path:

  • Meta → publish worker + Meta adapter (apps/backend/src/sqs/workers/publish/campaign-publish.worker.ts + apps/backend/src/providers/meta/)
  • Google → apps/backend/src/providers/google/google.launch-provider.ts
  • TikTok → apps/backend/src/providers/tiktok/tiktok.launch-provider.ts
  • Taboola → apps/backend/src/providers/taboola/taboola.launch-provider.ts
  • Snapchat → Snapchat service (apps/backend/src/providers/snapchat/)
  • Outbrain → Outbrain launch path

To launch on another platform, switch the active platform and publish its rows.

Platform-specific considerations

Aspect ratio differences

PlatformPreferred aspect
Meta Feed1:1
Meta Stories/Reels9:16
TikTok9:16
YouTube In-Stream16:9
YouTube Shorts9:16
Snapchat9:16
Taboola1.5:1

For cross-platform: upload assets per aspect, Wevion's multi-aspect support handles serving correctly.

Copy character limits

PlatformPrimary text limit
Meta125
TikTok100
Snapchat150 (description)

Write to the tightest constraint (100 chars) for consistency, OR per-platform variations.

Tracking divergences

  • Meta CAPI + Conversion API for server-side events
  • Google Conversions API equivalent
  • TikTok Events API equivalent
  • Snapchat Pixel browser-only currently in Wevion (snp-102)
  • Taboola Pixel for native ad attribution

Each platform's events tracked separately + aggregated in Wevion's Cross-Channel Analytics.

Currency

Each ad account's currency is immutable (set at account creation). Multi-account multi-currency campaigns: Cross-Channel Analytics auto-converts to workspace currency for rollup (gs-118).

DSA enforcement

  • Meta: strict, blocks publish without DSA fields for EU
  • Google: similar enforcement emerging
  • TikTok: lenient (so far)
  • Snapchat: lenient
  • Taboola: depends on geo

Wevion validates DSA per row based on platform + geo.

What unifies across platforms

Despite differences, Bulk Launch unifies:

ConceptUnified across platforms
Campaign objectiveMapped to per-platform equivalent (cc-106)
Budget structureCBO / ABO concepts apply universally
AudienceGeo + age + gender + interests translate
Creative librarySingle Creative Hub feeds all platforms (cc-116)
UTM conventionFree-text URL Parameters per row; build with the UTM Builder tool (cc-117)
ReportingCross-Channel Analytics rollup

Common multi-platform patterns

Pattern A: Omnichannel brand launch

  • Concept: one brand launch across Meta + Google + TikTok + Taboola + Snapchat + Outbrain
  • For each platform: switch the active platform, fill its rows, publish; repeat per platform
  • Different creatives per platform (visual fits each platform's aesthetic)
  • Same copy translated per char limit + platform tone
  • Monitor in Cross-Channel Analytics

Pattern B: Geo-distributed product launch

  • 3 markets (US + EU + APAC)
  • 3 platforms (Meta + Google + TikTok)
  • Per platform, add one row per market (grid scoped to that platform)
  • Per-market currency + DSA + creative localization
  • Publish each platform's grid; monitor per-market in Cross-Channel

Pattern C: Black Friday cross-platform

  • Same offer (20% off) across platforms
  • Per platform (Meta + Google PMax + TikTok + Snapchat): add rows and publish
  • Daily budget per row (there's no general lifetime-budget field); control the window with activation timing and platform total-spend caps where available
  • Dayparting is Outbrain-only in the launch flow

Pattern D: Awareness + retargeting layered

  • Top-funnel: Meta Awareness + Google Display + TikTok Awareness (broad)
  • Retargeting: Meta + Google retargeting custom audiences (warm)
  • Build each platform's rows in its own grid (active-platform scoped) and publish per platform
  • Coordinated: top-funnel drives traffic, retargeting captures conversions

Failure handling

Per-row independence means partial failure is recoverable:

  • 5 rows attempted, 3 succeed + 2 fail
  • Failed rows: red badge with error
  • Successful rows: live on respective platforms
  • Fix failed rows (typically per-platform-specific issue) + retry just those

Bulk wave doesn't roll back on partial failure — successful publishes stay live.

What you'll see

In Bulk Launch, scoped to the active platform:

  • Active-platform selector at the top of the grid
  • The grid shows only the active platform's rows and its platform-specific fields
  • Validation summary for the active platform's rows (e.g. "5 rows, 0 errors")
  • Per-row status in real-time during publish

In Cross-Channel Analytics post-launch:

  • Spend breakdown per platform
  • Conversions per platform
  • ROAS per platform comparison
  • Top campaigns across platforms

Common issues

  • "My rows disappeared": you likely switched the active platform — rows are scoped per platform and hidden (not deleted) when another platform is active. Switch back to see them.
  • "Cross-platform creative reuse fails": each platform has spec; reuse may fail for aspect ratio mismatches. Use multi-aspect uploads.
  • "Multi-platform copy looks awkward in TikTok": 100-char limit truncated for TikTok. Use per-platform copy variations.
  • "Budget converted weird across platforms": each account's currency; native currency per row. Cross-Channel rollup uses workspace currency.

FAQ

Can I launch on multiple ad platforms at once in Wevion?

You can launch across Meta, Google, TikTok, Taboola, Snapchat, and Outbrain via Bulk Launch (/launch), but one platform at a time: the grid is scoped to an active platform. Fill and publish the active platform's rows, then switch the active platform and publish the next. Each platform keeps its own rows and drafts.

How does Wevion know which platform a row targets?

Each row carries an explicit platform field set by the grid's active platform — it is not inferred from the account_id. The grid shows the relevant per-platform fields (for example fan_page_id for Meta or customer_id for Google) for whichever platform is active.

What happens if some rows fail during a multi-platform wave?

Partial failures are recoverable. Rows publish independently, so if 3 of 5 succeed, the successful campaigns stay live while failed rows show a red badge with the error. Wevion does not roll back the wave — fix the failed rows, which is usually a platform-specific issue, and retry just those.

How are budgets and currencies handled across platforms?

Each ad account's currency is immutable, set at account creation, so budgets stay in the account's native currency per row. For reporting, Wevion's Cross-Channel Analytics auto-converts to your workspace currency for the rollup, giving unified spend, conversions, and ROAS comparisons across platforms.

Do I validate each platform separately before publishing?

Because the grid is scoped to the active platform, the Validate all action runs per-row validation for that platform's rows, flagging issues like a missing Meta pixel, a missing Google customer ID, a non-9:16 TikTok aspect ratio, or missing DSA fields for the EU. Fix the flagged errors before clicking Publish all, then switch platform and repeat.