Launch history and audit
Last updated: May 19, 2026
Launch history and audit
Every launch is logged in Wevion's audit log + Ads Manager's per-campaign History tab. Bulk Launch wave status visible at GET /api/v1/bulk-launch/status/batch (verified) with per-row success/failure detail. Useful for postmortem on failed waves, compliance review, and tracking who launched what when.
Who is this for
Admins running incident response on failed launches. Anyone reconciling "did we launch X on Friday?" or "why is campaign Y in this account?". Compliance reviewers tracking who-launched-what for audit.
Where launch events are logged
1. Audit log (workspace-wide)
apps/backend/prisma/schema.prisma audit_log table — every action logged:
action: campaign_publish— when you publish a campaignaction: campaign_publish_active_first— when you publish straight to active (bypassing paused-first)action: campaign_pause— pause actionaction: campaign_resume— resume actionaction: campaign_delete— deletionaction: bulk_launch_publish— Bulk Launch wave startaction: bulk_launch_row_success— per-row success in a waveaction: bulk_launch_row_failed— per-row failure with reason
Per entry stored:
user_id(who triggered)owner_id(workspace owner / context)resource_type= "campaign" / "bulk_launch"resource_id(campaign ID or bulk_run_id)metadata(JSON: details like target ad account, error message if failed)ip_address+user_agentcreated_at
View at Settings → Team → Audit Log (team-113 audit log reference). Filter by action: campaign_* for launch-specific events.
2. Ads Manager — per-campaign History tab
Open Ads Manager → click any campaign → History tab:
Created (when + by whom)
Edited (every config change with old/new values)
Paused / Resumed events
Archived / Deleted
Failed publishes (if any pre-publish errors logged)
This is campaign-scoped view; useful for one-campaign deep dive.
3. Bulk Launch — per-wave status
For Bulk Launch waves:
Endpoints verified:
GET /api/v1/bulk-launch/status/:workerRunId— one wave's overall + per-row statusGET /api/v1/bulk-launch/status/batch— list recent waves + summary
Per row:
Status: Pending / Queued / In Progress / Success / Failed
Timestamp: when each transition happened
Error message (if Failed): full error detail
Campaign ID (if Success): link to view in Ads Manager
Retry button: re-attempt failed rows
UI: Bulk Launch detail page shows all rows in a grid with real-time updates as workers process.
Common queries
"Who launched this campaign?"
Open Ads Manager → find campaign
History tab → first entry = creator + timestamp
OR audit log filter:
resource_type: campaign + resource_id: [campaign-id]→ firstcampaign_publishaction
"What failed in last Friday's Bulk Launch wave?"
Bulk Launch → status panel → list recent waves
Click wave → see per-row status
Filter to Failed rows → click each for error detail
"Was this campaign launched active-first or paused-first?"
Audit log filter: resource_id: [campaign-id], action: campaign_publish*:
campaign_publish= paused-first (default)campaign_publish_active_first= active-first (warned)
"Trace cascading impact of last week's wave"
Get
bulk_run_idfrom wave detailAudit log filter:
metadata.bulk_run_id: [bulk_run_id]Returns all related events: row publishes + any post-launch edits + pauses
"Show me all rejections this month"
Audit log filter: action: campaign_rejected_by_platform, date_range: last 30 days. Returns per-campaign rejections with Meta/Google error codes.
Retention
Audit log retention depends on plan (acc-112 quota reference):
Starter: shorter window
Pro: medium
Enterprise: custom
Bulk Launch status retained:
Active waves: indefinitely (until you delete)
Completed waves: 90 days default
Export to CSV via Bulk Launch status page → Export, or via audit log export (team-113).
Per-row retry from history
For failed Bulk Launch rows, the wave detail page shows Retry action:
Click Retry on a failed row
Wevion re-attempts the same row config
New audit log entry created (
action: bulk_launch_row_retry)Success or fail tracked separately
You can retry multiple rows at once: select rows → Retry all selected.
Use cases
Use case A: Postmortem on failed wave
You launched 50 campaigns Friday, 5 failed. Investigation:
Bulk Launch status → find Friday's wave
Filter failed rows
Per-row error: see why each failed
Fix root cause (e.g. one ad account disconnected, fix + retry those rows)
Document in audit log entry's metadata (manual annotation if supported)
Use case B: Compliance audit
Audit firm requests "who launched what in Q3 2026":
Audit log filter:
action: campaign_publish*, date_range: 2026-07-01 to 2026-09-30Export to CSV
Provides per-launch: who, when, what (campaign ID + platform + amount + audience summary)
Auditor traces from here
Use case C: Departing teammate review
Teammate left. Want to see what they launched recently before deciding what to keep:
Audit log filter:
user_id: [their-user-id], action: campaign_publish*, date_range: last 90 daysReturns all their launches
Decide per-campaign: keep, pause, transfer ownership
Use case D: Incident response
A campaign is spending unexpectedly heavily:
Audit log filter:
resource_id: [campaign-id]Returns full edit history: who changed budget when
Identify the offending change (e.g. someone bumped daily from $50 to $5000)
Revert + communicate
Cross-cluster: full audit log
This article is launch-specific. For broader audit log usage:
General audit log: team-113 audit log reference
Security events: team-114 security best practices
Role changes: team-104 assign roles
What you'll see
In audit log filtered to launch events:
Chronological list of launches with per-event metadata
Click any entry to expand JSON detail
Filter / search / export tools
In Bulk Launch status page:
Per-wave card with summary (X rows, Y success, Z failed)
Click wave for per-row breakdown
Real-time status updates as workers process active waves
Common issues
"Audit log entry missing for a launch I made": rare — log entries are atomic with the launch. If genuinely missing, contact support with timestamp + campaign ID.
"Bulk Launch status shows 'in progress' for hours": SQS worker stuck. Contact support — may need to manually re-queue.
"Cannot see who launched in shared Org workspace": audit log filtered by workspace; need org-level admin access for cross-workspace audit (super_admin role).
"Audit log truncated, can't see old launches": retention window exceeded. Export periodically; for very old launches, contact support.
Best practices
Monthly audit review
Admin runs monthly:
Audit log export
Review for unexpected launches (someone launching outside expected hours, accounts they don't usually touch, etc.)
Flag anomalies for follow-up
Tag bulk waves in metadata
For your team's clarity: name bulk waves descriptively (Wevion accepts wave name field). E.g. "Black Friday 2026 wave 1" vs "Wave 1". Easier to find in history later.
Always pause-first to avoid emergency audit needs
Pause-first (cc-119) means problems caught BEFORE money spent. Less to audit post-incident.
Related
Launch troubleshooting — broader troubleshooting context
Common publishing errors — pre-publish error catalog
Read your audit log — general audit log queries