Launch history and audit
Every launch logged in audit log + Ads Manager History tab. Bulk Launch status per row at /bulk-launch/status/batch.
Written By Salvatore Sinigaglia
Last updated About 5 hours ago
Every launch logged in audit log + Ads Manager History tab. Bulk Launch status per row at /bulk-launch/status/batch.
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
POST /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:
Verified campaign/launch actions (dot-notation):
action: campaign.publishβ when you publish a campaignaction: campaign.multi_publishβ publishing one draft to multiple ad accountsaction: campaign.toggleβ pause/resume a campaignaction: campaign.budget_editβ edit a campaign/ad-set budgetaction: wavo.rest.bulk_launch.dispatchβ Bulk Launch wave dispatchedaction: wavo.rest.bulk_launch.blockedβ Bulk Launch blocked by a guardrail
There is no separate "active-first" action β a live publish and a paused publish are both recorded as campaign.publish.
Per entry stored:
user_id(who triggered)owner_id(workspace owner / context)resource_type= "campaign" / "bulk_launch"resource_idmetadata(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 statusPOST /api/v1/bulk-launch/status/batchβ status for a set of recent waves
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 paused or active?"
The audit action is the same either way (campaign.publish), so the audit log does not distinguish paused-first from active-first. To confirm how it went live, check the campaign's initial status in Ads Manager (paused vs active) after publish.
"Trace the impact of last week's wave"
- Filter the audit log by
action: wavo.rest.bulk_launch.dispatcharound the wave's date - Cross-reference with
campaign.publish/campaign.toggle/campaign.budget_editentries in the same window for post-launch edits
"Show me platform rejections this month"
Platform-side rejections show up as a campaign status of error in Ads Manager (am-113 statuses); Wevion does not emit a dedicated campaign_rejected_by_platform audit action.
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
- A new Bulk Launch dispatch is recorded in the audit log for the retried rows
- 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-30 - Export 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 days - Returns 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.
FAQ
Where can I see who launched a campaign?
Open the campaign in Wevion's Ads Manager and check the History tab; the first entry shows the creator and timestamp. Alternatively, filter the workspace audit log by resource_type: campaign and the campaign ID to find the first campaign.publish action, which records the user_id that triggered the launch.
How do I review a failed Bulk Launch wave?
Go to Wevion's Bulk Launch status panel, which lists recent waves. Click a wave to see per-row status β Pending, Queued, In Progress, Success, or Failed β then open failed rows for the full error detail. You can retry failed rows individually or select several and retry all at once.
How long is launch history retained?
Audit log retention depends on your plan: a shorter window for Starter, medium for Pro, and custom for Enterprise. Bulk Launch status keeps active waves indefinitely until you delete them, and completed waves for 90 days by default. Export to CSV from the Bulk Launch status page or the audit log to keep records longer.
Can I tell whether a campaign was published paused-first or active-first?
The audit log uses the same action (campaign.publish) for both, so it doesn't distinguish paused from active launches. To tell how it went live, check the campaign's initial status in Ads Manager after publish (paused vs active). Note that by default Wevion publishes ACTIVE unless "Launch as paused" was turned on.