Skip to main content
An audience is the recipient list for any campaign or sequence. Hiveku supports two kinds — dynamic (a saved filter that re-evaluates each time it’s used) and static (a fixed roster you control by hand) — and you can mix and match them across your sends. Find audiences at /dashboard/marketing/email/audiences.

Dynamic vs static

A dynamic audience is a saved filter. Membership is computed at the moment you preview, schedule, or send a campaign. If a contact’s tags change tomorrow, the audience reflects that — no manual maintenance.Use dynamic when:
  • Membership is rule-based (“all paid users”, “anyone tagged newsletter”).
  • You want to re-use the audience across many campaigns.
  • You’re running drip sequences that should keep enrolling new matches over time.
Whichever you pick, the actual recipient list is snapshotted when a campaign is scheduled or sent. Even on a dynamic audience, the contacts that received the message are recorded against the campaign — so the report is reproducible even if the underlying filter shifts later.

Building a dynamic audience

Dynamic audiences are built with a filter editor that AND/ORs across these dimensions:
  • Lifecycle stagelead, prospect, customer, churned.
  • Source — where the contact came from (web-signup, csv-import, crm-sync, etc.).
  • Tags — any tags you’ve set in the CRM (newsletter, paid-tier, early-access).
  • Date fieldscreated_at, last_opened_at, last_clicked_at, custom date properties.
  • Behaviors — opened the last N campaigns, clicked any link in the last 30 days, never opened, unsubscribed (excluded by default).
  • Custom properties — anything you’ve defined on the contact schema.
1

Click New audience

From /dashboard/marketing/email/audiences, click New audience and pick Dynamic.
2

Compose the filter

Stack conditions. Each row is a single predicate; group rows with AND or OR. Example:
Lifecycle stage IS customer
AND Tag CONTAINS newsletter
AND Last opened at WITHIN last 60 days
3

Preview membership

Click Preview to see the estimated count and a sample of 25 matching contacts. The preview also flags how many would be excluded for unsubscribes, hard bounces, or missing email addresses.
4

Name and save

Give the audience a clear name (Paid newsletter — engaged 60d) and save. It’s now selectable from any campaign or sequence picker.
The AI Email Coach can build dynamic filters from a sentence. Try: “audience of paid users in California who opened the last newsletter.”

Building a static audience

Two ways:
  1. CSV upload — drag a .csv with at least an email column. Optional columns (first_name, last_name, tags) are imported as contact properties so personalization works downstream.
  2. From a filter, then frozen — start with a dynamic preview, then click Convert to static. Useful when you want a one-time launch list that won’t shift.
Static audiences can be edited later — add or remove contacts directly, or upload a new CSV that merges in.

Importing from your CRM

If you’re using Hiveku CRM, contacts are already available — no import needed. For external systems:
  • HubSpot — see Connect HubSpot. Imported contacts gain a source: hubspot tag.
  • Mailchimp — see Connect Mailchimp. Audiences come over as static lists; you can rebuild as dynamic afterward.
  • GoHighLevel — see Connect GHL.
After import, the contacts live in the Hiveku CRM and are available to every email audience filter.

Estimated size and quality flags

Before you save, the preview shows:
  • Total matching — how many contacts hit the filter.
  • Sendable — total minus suppressions, hard bounces, and missing addresses.
  • Recently mailed — count of contacts who got a campaign in the last 7 days (helps spot fatigue).
  • Engagement bucket — share of recipients who’ve opened in the last 30/60/90 days.
If sendable drops to under 50% of total matching, the editor flags it — usually a sign the segment is full of stale or invalid addresses and needs cleanup before you send.

Audience snapshots

Every send records a membership snapshot: the exact list of contact IDs that were targeted at send time. This matters because:
  • Reports stay accurate. If a contact unsubscribes the day after, your campaign report still shows they were sent to.
  • Re-sends are reproducible. “Re-send to non-openers” works against the original list, not whatever the filter resolves today.
  • Compliance is auditable. You can prove who was on the list when you sent, which matters for unsubscribe disputes.
Snapshots are stored in marketing_audience_membership keyed by (audience_id, campaign_id, contact_id).

Archiving

When an audience is no longer used, click Archive. Archived audiences:
  • Are hidden from campaign and sequence pickers.
  • Stop being recomputed (saves DB load on big dynamic filters).
  • Stay readable in reports — historical campaigns still show the audience name.
You can unarchive anytime.

Troubleshooting

Check whether you accidentally OR’d conditions instead of AND’ing them. Also, the default behavior excludes unsubscribes and hard bounces — if you toggled that off, you’ll see a much larger number.
Most common cause: a tag spelling mismatch (Newsletter vs newsletter). Tags are case-sensitive in filter rows. Open a known-good contact and copy the tag value verbatim.
The importer drops rows missing a valid email column or with an obviously malformed address. Check the import log — Hiveku surfaces the first 10 rejected rows with reasons.
Yes. From the campaign report, click Re-send to non-openers — it materializes a static audience of recipients who didn’t open within 72 hours, which you can then use in a follow-up.

Build a dynamic audience

Step-by-step walkthrough with examples.

Campaigns

Use an audience in a one-off broadcast.