Email Campaigns

Email campaigns are intentional one-to-many sends — newsletters, announcements, promotions, recap emails — composed by you and delivered to a chosen audience. ClientCove handles segmentation, batch processing, open/click tracking, and unsubscribe management.

What Campaigns Are For

Use campaigns when you need to send the same email to many people:

  • Monthly portal newsletter
  • Feature announcement
  • Holiday hours notice
  • Service-status update affecting all clients
  • Welcome series to new accounts (manually triggered, not auto-sequenced)
  • Account-status check-ins
  • Client appreciation messages

Don't use campaigns for:

  • One-off emails to a single person (use the messaging feature instead)
  • Service-related auto-emails (use Transactional Emails)
  • Spam or unsolicited marketing to non-portal users (campaigns target your portal users only)

The Campaigns Dashboard

Open /email-campaigns/ (admin / editor / approved representative). The dashboard shows:

Top toolbar

  • Page title with megaphone icon
  • Breadcrumb (Home → Email Campaigns)
  • Email Templates button — opens the Email Designer
  • Create Campaign button — opens the create modal

Filters

  • Search — matches campaign name and subject
  • Status dropdown — All / Draft / Scheduled / Sending / Sent / Paused / Cancelled
  • Live count of filtered campaigns

Table

Columns: Campaign Name, Subject, Audience, Status, Scheduled/Sent Date, Stats, Actions

Each row is clickable to open the campaign details. Stats column shows recipients / opens / clicks at a glance.

Stats summary

At the top of the dashboard, summary cards show:

  • Total campaigns sent (lifetime)
  • Total recipients reached
  • Average open rate
  • Average click rate

Campaign Statuses

A campaign moves through these states:

StatusMeaning
DraftCreated but not scheduled or sent — fully editable
ScheduledConfigured to send at a future date/time — waiting in the queue
SendingCron is actively processing batches
SentAll batches completed — final stats available
PausedMid-send pause — batches stopped, can be resumed
CancelledManually cancelled before completion — partial sends count

Status transitions:

  • Draft → Scheduled when you set a future send date and save
  • Draft → Sending when you click "Send Now"
  • Scheduled → Sending when the scheduled time arrives
  • Sending → Sent when all batches complete
  • Sending → Paused when you click Pause
  • Paused → Sending when you click Resume
  • Any → Cancelled when you click Cancel

Creating a Campaign

  1. Click Create Campaign in the dashboard toolbar
  2. The Create Campaign modal opens
  3. Fill in the fields below
  4. Save as Draft, or Schedule, or Send Now

Campaign Name (required)

Internal name for your reference. Recipients don't see this. Examples:

  • "May 2026 Monthly Newsletter"
  • "New Feature Announcement — Resource Library"
  • "Q2 Client Check-In"

Email Subject (required)

The subject line recipients see. Best practices:

  • Keep under 50 characters (mobile previews truncate)
  • Front-load the most important word
  • No "FW:" or "RE:" prefixes (they look like spam)
  • Avoid all-caps or excessive punctuation

Email Template (required)

Pick from your Email Designer templates. The dropdown shows all templates marked as Marketing or Daily Digest type, plus any Transactional template you want to repurpose.

If no templates appear, create one first in the Email Designer (button in the toolbar).

From Name (required)

The sender name shown in the recipient's inbox. Typically your portal name or a specific person ("Jane from Acme Portal").

From Email (required)

The sender email. Must be an address you've authorized in your SMTP provider's verified senders list — otherwise emails will fail to deliver.

Audience Segment (required)

See Audience Segments below for the options.

Schedule

  • Send Now (default for Save and Send button)
  • Send Later — pick a date and time

Audience Segments

ClientCove offers three segment types:

All Users

Sends to every user with a portal account who hasn't unsubscribed. Useful for portal-wide announcements (security updates, major feature launches, holiday hours).

Specific Clients

Sends to all users assigned to one or more selected clients. The dropdown lists every client; pick one or many. Useful for:

  • Client-tier-specific announcements
  • Account check-ins for specific accounts
  • Notices to enterprise vs SMB clients

Custom Users

Manually pick specific user IDs. Useful for:

  • VIP communications to specific people
  • Test sends to a small group before broader rollout
  • Targeted messages based on criteria not covered by other segments

The segment configuration is stored as JSON in the campaign_segment_data field. The structure varies:

  • All Users: empty / not used
  • Specific Clients: array of client post IDs
  • Custom Users: array of user IDs

Recipient resolution

At send time (not creation time), ClientCove resolves the segment to actual user records:

  1. Apply the segment criteria
  2. Filter out users who've unsubscribed
  3. Filter out users without valid email addresses
  4. Return the final recipient list

This means if you create a campaign on Monday targeting "all users" and 5 new users sign up on Tuesday, the Tuesday users WILL be included if the campaign sends on Wednesday.

Scheduling

When you save a campaign with a future date/time:

  1. Status flips to Scheduled
  2. The campaign_scheduled_at field stores the timestamp
  3. A WordPress cron (hourly) checks for due campaigns
  4. When the scheduled time arrives, the campaign moves to Sending
  5. Batches start processing

Cron requirements

For accurate scheduling, WordPress cron must fire reliably. For low-traffic portals, set up a system cron:

* * * * * curl -s https://yourportal.com/wp-cron.php?doing_wp_cron > /dev/null

Without this, scheduled campaigns may send late on quiet days when no one is hitting the site.

Time zones

Campaign scheduling uses your WordPress timezone setting. Verify under Settings → General that the timezone matches where you (and most of your team) work. Scheduling for "9 AM tomorrow" sends at 9 AM in your portal's timezone.

Sender Identity

The From Name and From Email on campaigns are per-campaign — different from the global transactional defaults. This lets you:

  • Send from "Marketing Team" for newsletters
  • Send from "Customer Success" for check-ins
  • Send from a specific staff member's name for personal-feeling outreach

Authentication still applies

Whatever From email you use must be authorized in your SMTP provider. If your SMTP only authorizes *@yourdomain.com, you can't send from external-vendor@othersite.com even if you put it in the From Email field.

Reply-To

Replies go to the From Email by default. To redirect replies to a different inbox, configure Reply-To in your SMTP plugin or override it in the campaign template's HTML headers.

Sending in Batches

ClientCove sends campaigns in batches rather than blasting all recipients at once. Why:

  • Avoid SMTP rate limits
  • Distribute load on your server
  • Allow pause/resume mid-send
  • Improve deliverability (huge bursts trigger spam filters)

Batch size

Default: 100 recipients per batch, configurable per campaign via campaign_batch_size.

A campaign to 1,000 recipients with batch size 100 sends 10 batches. With WordPress cron firing every few minutes, the full send completes in 30-60 minutes.

How batches process

  1. The clientcove_process_campaign_batch cron action fires
  2. Loads the next batch of pending recipients
  3. Renders the email for each (with merge tags filled in)
  4. Sends each email via wp_mail()
  5. Records the send in the campaign's send log
  6. Updates the campaign's stats counters
  7. Schedules the next batch

If a batch fails entirely (e.g. SMTP outage), it's retried on the next cron run. Individual recipient failures (bad email, bounce) are logged but don't block the rest of the batch.

Send pacing

For very large lists or rate-limited providers, increase the time between batches:

  • Custom batch size (e.g. 50 instead of 100)
  • Manual pause/resume to spread sends over hours
  • Schedule the campaign to start during off-peak hours

Open & Click Tracking

ClientCove tracks two engagement metrics:

Open tracking

A 1×1 invisible image (tracking pixel) is embedded in every campaign email. When the recipient opens the email, their email client loads the image, which hits ClientCove's tracking endpoint and logs the open.

URL pattern:

/?ccove_track=open&h=<tracking_hash>

The tracking_hash is unique per recipient per campaign, so opens are recorded individually.

Click tracking

Every link in the email body is rewritten at send time to route through a tracking redirect:

Original:

<a href="https://example.com/feature">

Becomes:

<a href="https://yourportal.com/?ccove_track=click&h=<hash>&url=<encoded-url>">

When the recipient clicks:

  1. They hit the tracking URL
  2. ClientCove logs the click with timestamp
  3. ClientCove redirects to the original URL
  4. The recipient lands on the intended destination

Skipped from tracking (don't get rewritten):

  • Unsubscribe links (always go directly to the unsubscribe page)
  • Mailto links (mailto:)
  • Anchor links (#section)
  • Already-tracking links (avoid double-wrapping)

Privacy considerations

Open tracking via pixel is widely used but has limitations:

  • Email clients with image-blocking (Outlook by default in some versions) won't fire the pixel
  • Apple Mail's Privacy Protection feature pre-loads images, so all opens look like immediate opens
  • Some recipients block tracking pixels deliberately

Click tracking is more reliable but introduces a slight redirect delay.

Campaign Stats

For each sent campaign, the dashboard shows:

MetricWhat it counts
Total RecipientsResolved audience size at send time
Total SentSuccessful email deliveries
Total OpenedUnique opens (one open counted per recipient even if they open multiple times)
Total ClickedUnique clicks (one click counted per recipient per link)
Total FailedDelivery failures (bad email, bounces, SMTP errors)

Calculated rates:

  • Delivery rate = Sent / Recipients
  • Open rate = Opened / Sent
  • Click rate = Clicked / Sent
  • Click-to-open rate (CTOR) = Clicked / Opened

Click into a campaign to see:

  • Per-recipient send status (Sent / Opened / Clicked / Failed)
  • Timeline of opens and clicks
  • Most-clicked links

Stats are post-send

Stats start populating as soon as the first batch sends. They update in near-real-time as recipients open and click. For large campaigns, expect stats to be incomplete until the full send completes.

Pausing & Cancelling

Mid-send actions:

Pause

  1. Open a campaign in Sending status
  2. Click Pause
  3. The current batch finishes; subsequent batches are skipped
  4. Status flips to Paused

Use Pause when:

  • You spotted a typo or mistake
  • Your SMTP is hitting rate limits
  • You want to spread the send over more time

Resume

  1. Open the paused campaign
  2. Click Resume
  3. Pending batches restart from where they left off

Cancel

  1. Open the campaign (Draft, Scheduled, Sending, or Paused)
  2. Click Cancel
  3. Confirm

Cancelled campaigns:

  • Stop sending
  • Already-sent emails can't be unsent (recipients already received them)
  • Status flips to Cancelled
  • Partial stats are preserved
  • The campaign stays in the database for record

Unsubscribe Handling

Every campaign email includes an unsubscribe link in the footer (the Email Designer's footer block adds it automatically for marketing templates).

When a recipient clicks unsubscribe:

  1. They land on a confirmation page
  2. ClientCove records the unsubscribe in their user profile
  3. They're filtered out of all future campaigns
  4. Transactional emails still send (functional, can't be opted out of)

Per-category opt-out

Future ClientCove versions may allow per-category unsubscribes (unsubscribe from newsletters but keep service emails). Currently, unsubscribe is global for marketing campaigns.

Re-subscribing

Users can re-subscribe by:

  • Going to their portal profile → Notification Preferences
  • Toggling "Receive marketing emails" back on

There's no separate re-subscribe link in emails (unsubscribed users won't get more emails to click on).

Compliance

Email campaigns must follow anti-spam regulations:

CAN-SPAM (United States)

  • Don't use false or misleading header information
  • Don't use deceptive subject lines
  • Identify the message as an ad (when applicable)
  • Tell recipients where you're located (physical postal address)
  • Tell recipients how to opt out
  • Honor opt-out requests promptly (within 10 business days)
  • Monitor what others are doing on your behalf

CASL (Canada)

  • Express consent required (no implied opt-in)
  • Clear identification of sender
  • Unsubscribe mechanism that works for at least 60 days

GDPR (Europe)

  • Lawful basis for processing (consent, legitimate interest)
  • Clear privacy disclosure
  • Right to access, rectify, erase data
  • Unsubscribe must be as easy as subscribing

ClientCove's compliance support

  • Unsubscribe links auto-included in marketing templates
  • User preferences stored and respected
  • Audit log of who unsubscribed when
  • Can export user data on request (admin function)

For specific compliance requirements in your jurisdiction, consult your legal counsel — these are general guidelines, not legal advice.

Was this page helpful?