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
platformfield; 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:
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_idset,pixel_idset - 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:
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
For cross-platform: upload assets per aspect, Wevion's multi-aspect support handles serving correctly.
Copy character limits
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:
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.