Workspace Campaigns
1. Purpose & Context (The âWhyâ)
-
Goal: Enable users to create, manage, and analyze cold email campaigns.
-
Feature References:
- Campaign Management (Analytics integration)
-
User Journey: Core loop: Create Campaign -> Configure -> Launch -> Monitor -> Optimize.
2. UI Patterns & Components (The âHowâ)
-
Core Components:
-
DataTable: For the campaigns list (Sortable, Filterable). -
Wizard: For/newcampaign creation flow. -
RichTextEditor: For campaign sequence editing.
-
-
Analytics Patterns:
-
DataCard: For campaign summary stats (Sent, Open Rate, Reply Rate). -
LineChart: For engagement over time.
-
-
Layout: Workspace Context.
3. Route Specifications
| Route | Access | Purpose | State/Data Requirements |
|---|---|---|---|
/dashboard/workspaces/[slug]/campaigns | Tenant | List Campaigns | Server Component. Paginated list. Columns: Name, Status, Sent, Open%, Reply%. Actions: Pause, Resume, Edit. |
/dashboard/workspaces/[slug]/campaigns/new | Tenant | Create Campaign | Client Component. Multi-step Wizard: 1. Name/Goal, 2. Audience (Upload/Select), 3. Sequence (Editor), 4. Schedule, 5. Review. |
/dashboard/workspaces/[slug]/campaigns/[id] | Tenant | Campaign Dashboard | Server Component. Aggregated analytics view. Shows âHeadline Metricsâ cards top, âEngagement Trendâ chart middle, âLead Activityâ table bottom. |
/dashboard/workspaces/[slug]/campaigns/[id]/edit | Tenant | Edit Campaign | Client Component. Tabbed interface: Sequence, Audience, Settings. Auto-saving form state. |
/dashboard/workspaces/[slug]/campaigns/[id]/settings | Tenant | Configuration | Form for Sending Window, Daily Limits, Tracking Options. |
/dashboard/workspaces/[slug]/campaigns/import | Tenant | Import Campaign | Client Component. File upload (JSON/CSV) or API connector (Mailchimp/Instantly) to migrate campaigns. |
4. Detailed View Descriptions
/dashboard/workspaces/[slug]/campaigns - Campaign List
User Story: âAs a marketer, I want to see all my campaigns at a glance with key metrics, so I can quickly identify which campaigns need attention.â
What Youâll Find:
-
Header Actions:
-
âNew Campaignâ Button: Primary CTA (top-right).
-
Filter Dropdown: Status (Active, Paused, Completed, Draft).
-
Search Bar: Search by campaign name.
-
-
Data Table (see Analytics UI Patterns):
-
Columns: Name, Status, Sent, Open Rate, Reply Rate, Created Date, Actions.
-
Status Badge: Color-coded (Green=Active, Yellow=Paused, Gray=Draft).
-
Sortable Headers: Click to sort by any column.
-
Row Actions: Pause/Resume, Edit, Duplicate, Delete.
-
-
Empty State:
- Illustration + âCreate your first campaignâ CTA.
User Journey Context: Primary dashboard for campaign management. Daily check-in to monitor performance.
Related Documentation:
Technical Integration:
-
Server Component: Fetches campaigns with pagination (10/page).
-
Real-time Updates: Polling every 30s for status changes.
/dashboard/workspaces/[slug]/campaigns/new - Campaign Creation Wizard
User Story: âAs a new user, I want a guided wizard to create my first campaign without getting overwhelmed by options, so I can launch quickly.â
What Youâll Find:
-
Step 1: Campaign Basics
-
Name, Goal (Awareness, Lead Gen, Sales).
-
âNextâ button.
-
-
Step 2: Audience Selection
-
Option A: Upload CSV (drag-and-drop).
-
Option B: Select from existing Leads/Segments.
-
Shows preview of first 5 records.
-
-
Step 3: Email Sequence
-
Initial Email + Follow-ups: Add up to 7 emails.
-
Rich text editor with variable insertion (``).
-
Preview Button: See how email renders.
-
-
Step 4: Sending Schedule
-
Sending Window: âMon-Fri, 9am-5pmâ.
-
Daily Send Limit: 50/day (adjustable).
-
Start Date selector.
-
-
Step 5: Review & Launch
-
Summary of all settings.
-
âLaunch Campaignâ Button or âSave as Draftâ.
-
User Journey Context: Critical onboarding moment. Must be simple yet comprehensive.
Related Documentation:
Technical Integration:
-
Client State: Wizard state managed in React Context.
-
Auto-save: Draft saved to backend every 30s.
/dashboard/workspaces/[slug]/campaigns/[id] - Campaign Analytics Dashboard
User Story: âAs a campaign manager, I want to see detailed engagement metrics and lead activity, so I can optimize my messaging and follow-up strategy.â
What Youâll Find:
-
Headline Metrics Row (see Analytics UI Patterns):
-
DataCards: Sent, Opened (%), Clicked (%), Replied (%).
-
Trend Indicators: â 12% vs. last 7 days.
-
-
Engagement Chart:
-
LineChart: Sent/Opened/Replied over time (Daily view, last 30 days).
-
Hover Tooltip: Shows exact counts.
-
-
Lead Activity Table:
-
Columns: Lead Name, Email, Status (Sent, Opened, Replied), Last Activity.
-
Click Name: Opens slide-over with full lead details.
-
-
Actions:
-
âEdit Campaignâ Button.
-
âPause Campaignâ Button (if active).
-
User Journey Context: Monitoring hub. Accessed multiple times daily during active campaigns.
Related Documentation:
Technical Integration:
-
Aggregated Data: Fetched from OLAP (ClickHouse) with daily refresh (Future/2026 Spike).
-
Caching: ISR with 5-minute revalidation.
/dashboard/workspaces/[slug]/campaigns/[id]/edit - Campaign Editor
User Story: âAs a user who needs to fix a typo in an active campaign, I want to make quick edits without disrupting the campaign, so I can maintain quality.â
What Youâll Find:
-
Tabbed Interface:
-
Tab 1: Sequence: Edit email content (Rich Text Editor).
-
Tab 2: Audience: Add/remove leads (with warnings if campaign is active).
-
Tab 3: Settings: Sending window, daily limits, tracking toggles.
-
-
Auto-save Indicator: âSavingâŚâ â âAll changes savedâ (top-right).
-
Warnings Modal:
- âEditing an active campaign may affect delivery. Continue?â
User Journey Context: Infrequent use for corrections or optimizations.
Related Documentation:
Technical Integration:
-
Optimistic UI: Changes reflected immediately, synced to backend asynchronously.
-
Conflict Detection: If campaign modified elsewhere, shows merge prompt.
/dashboard/workspaces/[slug]/campaigns/[id]/settings - Campaign Configuration
User Story: âAs a power user, I want granular control over sending behavior and tracking settings, so I can optimize deliverability.â
What Youâll Find:
-
Form Groups:
-
Sending Window: Time range selector (9am-5pm, Timezone-aware).
-
Daily Send Limit: Slider (10-500/day).
-
Tracking Options: Toggles for âOpen Trackingâ, âClick Trackingâ, âUnsubscribe Linkâ.
-
Reply Handling: âPause campaign on replyâ checkbox.
-
-
Save Button: Sticky at bottom.
User Journey Context: Advanced settings. Accessed during campaign setup or optimization.
Related Documentation:
Technical Integration:
- Background Jobs: Changes trigger recalculation of sending schedule (background queue job).
/dashboard/workspaces/[slug]/campaigns/import - Campaign Import (Migration)
User Story: âAs a user migrating from another platform, I want to import my existing campaigns and contacts so I donât have to rebuild everything from scratch.â
What Youâll Find:
- Import Source Selection:
- File Upload: JSON or CSV export from other tools.
- Direct Integration (Post-MVP): âConnect Mailchimpâ, âConnect Instantlyâ.
- Mapping Wizard:
- Campaign Name: Auto-filled from file.
- Sequence Mapping: Map email steps and delays.
- Contact Mapping: Map contact fields.
- Review & Import:
- Summary of campaigns to be created.
- âStart Importâ Button.
User Journey Context: Critical for new user activation (Migration).
Related Documentation:
Technical Integration:
- Parsers: Client-side parsing of common export formats.
- Bulk Create: Transactional creation of Campaign + Sequence + Contacts.
5. Related API Endpoints
| Route | Related API | Description |
|---|---|---|
/campaigns | Campaigns API | GET /api/v1/tenant/campaigns (List), POST (Create). |
/campaigns/[id] | Campaigns API | GET /api/v1/tenant/campaigns/{id} (Details & Analytics). |
/campaigns/[id]/edit | Campaigns API | PATCH /api/v1/tenant/campaigns/{id} (Update). |
/campaigns/[id]/settings | Campaigns API | PATCH /api/v1/tenant/campaigns/{id}/config. |
6. Data Strategy
-
Fetching Method:
-
List View: Server Component with searchParams for pagination/filtering.
-
Analytics View: Server Component fetching aggregated OLAP data.
-
-
Caching:
-
Campaign List: Cached for 30s. Invalidated on Create/Delete/StatusChange.
-
Analytics: Cached for 5 minutes (heavy query).
-
-
Real-time Updates:
- Status Polling: Client component polls
/api/v1/tenant/campaigns/statusevery 30s to update âSendingâ vs âCompletedâ badges.
- Status Polling: Client component polls
-
Optimistic Updates:
- Pause/Resume actions update UI immediately, revert on failure.
7. Edge Cases & Error Handling
-
Campaign Not Found: 404 Page with âReturn to Campaignsâ button.
-
Editing Active Campaign: Warning modal explains risks (pausing recommended).
-
Zero Leads: Cannot launch campaign without leads. âImport Leadsâ CTA shown.
-
Quota Exceeded: Launch blocked if monthly email limit reached. Upgrade prompt shown.
-
Campaign Not Found: 404 Page with âReturn to Campaignsâ button.
-
Editing Active Campaign: Warning modal explains risks (pausing recommended).
-
Zero Leads: Cannot launch campaign without leads. âImport Leadsâ CTA shown.
-
Quota Exceeded: Launch blocked if monthly email limit reached. Upgrade prompt shown.
8. Component Architecture
Page Components
-
CampaignListTable(Server)-
Props:
campaigns: Campaign[],pagination: PaginationData -
Dependencies:
StatusBadge,ActionMenu
-
-
CampaignWizard(Client)-
State: Multi-step form state (Steps: Details -> Audience -> Content -> Schedule)
-
Sub-components:
AudienceSelector,TemplatePicker,ScheduleDatePicker
-
-
AnalyticsDashboard(Server)-
Props:
stats: CampaignStats -
Sub-components:
MetricCard,EngagementChart(Recharts),ActivityFeed
-
Shared Components
-
StatusBadge: Reused across Campaigns and Jobs. -
MetricCard: Reused in Dashboard and Analytics.