Campaigns Admin
Read-only campaign status and data contract (admin/staff)-
Dashboard - -
- Campaigns Admin
Internal operator status.
Campaign list visibility is held until the canonical
campaigns/
collection and staff workflow are approved. This surface does not
perform Firestore reads against an unverified collection (per P2C2A
Recovery Audit §2.1 / §7.1). Use the data contract below for backend
and seed planning.
Active campaigns
—
live
Scheduled
—
queued
Paused
—
held
Archived
—
historicalCampaign Configuration
Read-only status
Loading campaigns…
| Name | Status | Channel | Audience | Window | Owner | Last Updated |
|---|
No campaigns to display
Campaign visibility is available after the canonical campaigns/
collection and staff workflow are approved.
See the data contract below for the expected document shape.
Campaign Detail
Detail preview renders here when a row is selected.
Expected Data Contract — campaigns/{campaignId}
Documented for backend / seed planning only. This contract is presumed; the canonical collection name and field shape must be confirmed against DCE / functions before the reader pass.
| Field | Type | Notes |
|---|---|---|
name | string | Display name; required. |
status | enum | active | scheduled | paused | archived |
channel | enum | email | in-app | affiliate | referral |
audience | string|array | Plan tier(s) or audience tag. |
startAt | timestamp | Optional. Window open. |
endAt | timestamp | Optional. Window close. |
ownerUid | string | Admin/staff UID who owns the campaign. |
partnerCode | string | Optional. Links to partners/ system or custom code. |
updatedAt | timestamp | Server timestamp on last write. |
Surface separation:
Campaign Admin lives only on this page. Affiliate-facing campaign
visibility (if needed later) belongs inside
affiliate-dashboard.php, NOT in
partners-admin.php.