Transactional Email & Campaigns Overview
ClientCove sends two fundamentally different kinds of email: transactional emails that fire automatically in response to events ("you have a new ticket", "your invoice was paid") and email campaigns that you compose and send intentionally to a chosen audience. Both use the same underlying Email Designer for branding, templates, and rendering.
Two Email Worlds
| Transactional | Campaigns | |
|---|---|---|
| Trigger | An event in the portal (new ticket, invoice paid, contract sent) | You manually click Send (or schedule a future send) |
| Volume | One recipient per email, many events per day | One campaign goes to many recipients (10s to 1000s) |
| Audience | Determined by the event (the user the event affects) | Chosen by you — segments, specific clients, custom user lists |
| Template | Auto-selected based on notification type | Selected per campaign |
| Tracking | Delivery confirmation only | Opens, clicks, per-recipient status |
| Sender | Portal default sender | Configurable per-campaign (From Name + From Email) |
| Dashboard | Not surfaced as a list — fires silently | /email-campaigns/ dashboard with status, stats, history |
| Compliance | Functional — service-related, generally exempt from CAN-SPAM unsubscribe rules | Marketing — requires unsubscribe link, sender info, etc. |
The Email Designer is the unified template tool. Templates created there can be applied to either world.
Quick Glossary
| Term | What it means |
|---|---|
| Email Designer | The visual drag-and-drop editor at /email-designer/ for creating reusable email templates |
| Template | A reusable design with branded header, body blocks, footer — used for transactional and campaign emails |
| Block | A single visual element in a template (header, text, button, image, divider, footer, etc.) |
| Notification Type | A trigger event (new_invoice, task_assigned, magic_link, etc.) — assignable to a template |
| Default Template | The template used when a notification type doesn't have a specific template assigned |
| Transactional Email | Auto-sent system email (notifications, confirmations, password resets) |
| Campaign | An email_campaign post — one-to-many email send |
| Audience Segment | Who a campaign goes to (all users, specific clients, custom user list) |
| Send Status | Where a campaign is in its lifecycle (Draft / Scheduled / Sending / Sent / Paused / Cancelled) |
| Open Tracking | A 1×1 invisible image (pixel) in the email that records when it's opened |
| Click Tracking | URL rewriting in the email body — clicks route through a redirect that logs them, then forwards to the original URL |
The Email Designer
The visual editor at /email-designer/ (admin-only) is the foundation for all email styling in ClientCove.
You create templates by:
- Picking a starting point (blank, or duplicate an existing template)
- Dragging blocks onto the canvas (header, text, buttons, images, etc.)
- Configuring each block (text, color, link, alignment)
- Setting global template settings (colors, fonts, max-width, padding)
- Assigning the template to one or more notification types
- Saving
Once saved, the template renders for every email of those notification types — across the whole portal.
See The Email Designer for the complete walkthrough.
Transactional Emails
ClientCove fires transactional emails in response to ~22 different events:
| Category | Notification Types |
|---|---|
| Auth | Auth Code (2FA), Magic Link, Forgot Password, Registration Welcome, Registration Pending, User Invitation, New User Welcome |
| Messages | New Messages |
| Tasks | Task Assignments, Task Due Soon |
| Tickets | Ticket Updates |
| Projects | Project Deadlines |
| Daily | Daily Summary, Daily Digest |
| Invoices | New Invoice, Payment Received, Overdue Reminder |
| Contracts | Contract Sign Request |
| File Transfers | Transfer Ready, Upload Request, Upload Complete, Transfer Expiring, Verification Code |
Each notification type can have its own template (specifically designed for that event), or fall back to the default transactional template configured in Settings → Email Designer.
See Transactional Emails for the full notification type list, template assignment, and override mechanics.
Email Campaigns
Email campaigns are one-to-many sends you compose and schedule. The dashboard at /email-campaigns/ (admin / editor / approved representative) shows:
- All campaigns with status, audience size, and stats
- Filters by status (Draft / Scheduled / Sending / Sent / Paused / Cancelled)
- Search across campaign names and subjects
- A Create Campaign button to start a new campaign
- A link to Email Templates (the Email Designer)
Campaigns flow through:
- Create — pick template, write subject, choose audience segment, set From Name + From Email
- Schedule — send now, or schedule for a future date/time
- Send — ClientCove processes the send in batches via cron (configurable batch size)
- Track — opens, clicks, failures recorded per-recipient
See Email Campaigns for create/schedule/track workflow.
How They Work Together
The unified architecture:
┌──────────────────────────┐
│ Email Designer │
│ (visual template tool) │
└────────┬──────────┬──────┘
│ │
▼ ▼
┌──────────────┐ ┌────────────────┐
│ Transactional│ │ Campaigns │
│ (auto-sent) │ │ (manual sends) │
└──────┬───────┘ └────────┬───────┘
│ │
└─────────┬─────────┘
▼
┌─────────────────┐
│ WP Mail / SMTP │
│ (delivery) │
└─────────────────┘
Both transactional and campaign emails:
- Use templates from the Email Designer
- Render through
email-template-renderer.php(HTML output) - Send via WordPress's
wp_mail()(typically routed through SMTP/SendGrid) - Apply the global email branding (logo, colors)
The split into two systems keeps concerns clean:
- Transactional — never have an "unsubscribe" because they're functional, deliverability-critical
- Campaigns — always have unsubscribe links, sender info, list management
Email Delivery Infrastructure
The Email Designer renders the HTML; WordPress sends it. For reliable delivery you almost always want an SMTP service in front of WordPress's default mail function.
Recommended setup
- WP Mail SMTP plugin (or similar)
- SendGrid as the delivery provider (the same one that handles inbound parse for ticket / task creation)
- SPF, DKIM, DMARC records configured for your sending domain
- A consistent From address (e.g.
notifications@yourportal.com)
Without proper SMTP setup, emails go through PHP's mail() function, which has extremely poor deliverability. They'll often land in spam or be rejected silently.
Cloud storage for images
If your templates include images (logos, hero images), store them in cloud storage with public URLs. The Email Designer's global logo field expects a public URL — typically a Google Cloud Storage / S3 / DigitalOcean Spaces URL. Linking to images on your portal works but tends to be slower for recipients and less cacheable.
Permissions Snapshot
| Capability | Who |
|---|---|
| Use the Email Designer | Administrator only |
| Set the default transactional template | Administrator |
| Create / send transactional emails | The system (via event triggers) |
| View Email Campaigns dashboard | Administrator, Editor, Representative (with can_access_email_campaigns granted) |
| Create campaigns | Administrator, Editor, approved Representative |
| Send campaigns | Administrator, Editor, approved Representative |
| View campaign stats | Administrator, Editor, approved Representative |
| Receive transactional emails | Any user, based on their notification preferences and the event |
Subscribers and standard client users don't see the Email Designer or the Campaigns dashboard — these are management tools.
Email Designer is administrator-only by design. Templates affect every email going out from the portal — incorrect HTML or broken merge tags cascade to every transactional notification and every campaign. Restricting access to administrators prevents accidental site-wide email breakage.