/ to search
Documentation Email Marketing

Email Marketing

Email Marketing Reference

Browse tenant guides generated directly from the Markdown files in docs/tenant.

Overview

This reference lists the confirmed staff-facing areas, campaign settings, delivery rules, subscriber details, and reporting surfaces in the email marketing area.

Use this page when you need a quick reminder of what exists, what controls are available during campaign setup, and what factors can affect final delivery.

Staff-facing areas

The email marketing area includes:

  • Campaigns
  • Templates
  • Subscribers
  • Interest Groups
  • Audience Groups
  • Email Performance
  • Email Audience Health

These areas are often used together during campaign preparation, audience review, topic setup, template reuse, and post-send analysis.

Campaign settings

Confirmed campaign settings include:

  • name
  • subject
  • template
  • scheduled send time
  • send-to-all toggle
  • audience groups
  • required interest group
  • secure member autologin
  • from name and from email
  • open tracking
  • click tracking
  • UTM tracking and overrides

Campaign setting guidance

Name

Internal campaign label used by staff.

Subject

The subject line supporters see in their inbox.

Template

Optional reusable content structure for campaigns with recurring layouts or branding patterns.

Scheduled send time

Used when the campaign should be sent later instead of immediately queued for current processing.

Send-to-all toggle

Used when the campaign should go to all broadly eligible subscribers for the selected topic, rather than to selected audience groups only.

Audience groups

Define the audience scope the team wants to consider for the send.

Required interest group

Defines the topic-level permission gate used during delivery eligibility checks.

Secure member autologin

Optional campaign feature when secure member-access behavior is relevant.

From name / from email

Controls the sender framing supporters see and can influence trust, recognition, and engagement.

Open tracking

Tracks opens where supported by client behavior and tracking conditions.

Click tracking

Tracks link click activity where campaign tracking behavior applies.

UTM tracking and overrides

Controls whether UTM parameters are applied and how campaign-level tracking values are set.

Delivery rules

Campaign delivery can still suppress recipients who are:

  • marked Do not contact
  • tenant-unsubscribed
  • not eligible for the selected interest group

Delivery model note

The selected audience does not equal the final delivered audience.

The audience setup defines the initial scope. Final delivery still depends on suppression, unsubscribe, consent, and campaign eligibility checks.

This is important when staff are investigating why a campaign audience appears smaller than expected.

Subscriber records

Subscriber records include:

  • email
  • first name
  • last name
  • status
  • subscribed and unsubscribed timestamps
  • optional notes or metadata JSON

These records help staff review email-specific contact context for one person or address.

Templates

Templates are reusable campaign starting points.

They are especially useful for:

  • recurring newsletters
  • event invitation structures
  • stewardship formats
  • consistent branded campaign layouts

A template improves consistency, but it should still be reviewed before reuse in a live campaign.

Email builder blocks

The active builder is Easy Email.

Confirmed sidebar categories and cards:

  • Layouts: 1 column, 2 columns, 3 columns, 4 columns
  • Content: Text, Image, Button, Social, Divider, Spacer, Hero, Wrapper
  • Nonprofit: Event spotlight, Event CTA, Event details + CTA, Program spotlight, Program CTA, Program details + CTA, Giving appeal, Giving CTA, Donation form spotlight, Campaign goal, Supporter quote, Image + Appeal, Impact story, Conditional Content
  • Personalization: Personal greeting, Donation recap, Event reminder, Footer signature
  • Links: Member portal CTA, Preferences CTA, Donation CTA, Event registration CTA, Dashboard CTA, Unsubscribe footer

Event, program, and giving blocks open record picker modals before insertion. Story blocks insert editable starter content directly. Conditional Content appears with the Dynamic Content family label and opens the conditional rule modal before insertion.

Dynamic content

Conditional Content

Conditional Content is available in the Easy Email builder with the Dynamic Content family label.

It inserts a marked section that is shown or hidden for each recipient at render time.

Supported condition sources are:

  • Profile: email, first name, last name, name
  • Giving history: has ever donated, last donation amount, lifetime giving amount, last donation date
  • Event engagement: has ever attended event, attended event count, has upcoming registration

Rules can use all matching, where every condition must pass, or any matching, where one passing condition is enough.

Example rules:

  • show when profile email is not blank
  • show when last donation amount is greater than 100
  • show when attended event count is greater than 0
  • show when upcoming registration exists

Invalid or malformed conditional rules fail closed, so the marked content is hidden rather than shown unexpectedly.

Current preview limitation

Template-only builder preview may show the conditional placeholder without applying recipient-specific filtering. Use campaign preview and test sends to verify how content renders for real recipient contexts before queueing.

Giving and event-engagement rules require a reliable recipient/constituent context. In the current implementation, SendportalSubscriber is not mapped to TenantUser until a durable subscriber-to-constituent identity link exists, so profile rules are safest for regular SendPortal campaign recipients.

Conditional content implementation notes

Conditional sections are stored in the email HTML with marker comments:

<!-- altrinum:conditional:v1 BASE64URL_JSON_RULES -->
...content...
<!-- /altrinum:conditional:v1 -->

The rules payload is evaluated by ConditionalContentEvaluator.

Recipient context is built by ConditionalContentContextBuilder.

Conditional HTML sections are filtered by ConditionalContentHtmlFilter.

SendPortal campaign content is filtered in MergeContentService.

When adding new condition sources, fields, or operators, allowlist them in both the Easy Email frontend metadata in resources/js/easy-email/app.jsx and the backend evaluator/context builder. The marker format should remain stable unless a new marker version is introduced.

Invalid rules should continue to fail closed.

UTM tracking for email campaigns

Tenant-wide UTM defaults are configured in Workspace Settings > Campaign Email UTM Tracking.

The settings are implemented in app/Livewire/Filament/Dashboard/TenantSettings.php and stored under the tenant settings.email_utm array.

Confirmed tenant settings:

  • Enable automatic UTM tagging for campaign emails
  • Default UTM Source
  • Default UTM Medium
  • UTM Campaign Pattern
  • UTM Content Pattern
  • UTM Term Pattern

Campaign-level controls are configured in app/Filament/Dashboard/Resources/SendportalCampaigns/Schemas/SendportalCampaignForm.php.

Confirmed campaign controls:

  • Apply UTM tracking
  • UTM source override
  • UTM medium override
  • UTM campaign override
  • UTM content override
  • UTM term override
  • UTM tracking preview

The render-time implementation is CampaignEmailUtmTagger, called by MergeContentService for campaign messages.

When enabled, missing UTM parameters are appended to HTTP and HTTPS links in marketing campaign email HTML at final render. Existing UTM parameters are preserved and not overwritten.

Skipped links include:

  • signed links with a signature query parameter
  • preferences links
  • unsubscribe links
  • secure member-access links
  • non-HTTP links such as mailto:, tel:, and page anchors

Supported parameters:

  • utm_source
  • utm_medium
  • utm_campaign
  • utm_content
  • utm_term

Supported pattern tokens:

  • {campaign_id}
  • {campaign_name}
  • {campaign_slug}
  • {tenant_id}
  • {tenant_name}
  • {tenant_slug}
  • {date}

Recommended naming convention:

  • use lowercase values
  • use hyphens instead of spaces
  • keep utm_source focused on the channel or list source, such as newsletter
  • keep utm_medium consistent for email, such as email or marketing-email
  • use utm_campaign for the campaign family, such as spring-appeal-2026
  • use utm_content for link placement or variant, such as hero-button
  • use utm_term only when the team has a clear keyword, audience, or internal term convention

Conditional content manual QA

Before releasing changes to conditional content, verify:

  • insert a Conditional Content block
  • configure a profile rule
  • configure a giving rule
  • configure an event rule
  • save the campaign
  • confirm the marker comments are present in saved content or MJML if inspectable
  • preview or test-send with a recipient who should match
  • preview or test-send with a recipient who should not match
  • confirm normal personalization tokens still render inside visible conditional content

Audience groups vs interest groups

This distinction is central to the email system.

Audience groups

Used for targeting and segmentation.

They answer: “Who are we considering for this send?”

Interest groups

Used for topic-level communication eligibility.

They answer: “Who is allowed to receive this topic?”

A campaign may use both at the same time.

Performance areas

Confirmed reporting surfaces include:

  • campaign-level reports
  • workspace email KPI overview
  • audience health buckets
  • secure autologin campaign visibility table

Reporting guidance

Campaign-level reports

Best for reviewing one specific send in detail.

Workspace email KPI overview

Best for broader cross-campaign performance review at the tenant level.

Audience health buckets

Best for understanding list quality, suppression patterns, and send-readiness issues.

Secure autologin campaign visibility table

Useful where secure member-access campaign behavior needs review.

Operational notes

  • Email marketing access depends on the tenant email module.
  • Editing is limited once a campaign is queued, deployed, or cancelled.
  • Audience groups define scope, but do not override suppression or interest-group logic.
  • Topic-level eligibility remains important even when a segment is very narrowly defined.
  • Tracking setup should be reviewed before queueing, especially for campaigns tied to broader reporting or fundraising analysis.

Example role-based usage

A communications team may work mainly in:

  • Campaigns
  • Templates
  • Email Performance

Operations or compliance-focused staff may also spend time in:

  • Email Audience Health
  • subscriber review
  • campaign delivery troubleshooting

A fundraising team may rely on:

  • audience groups for targeting
  • interest groups for topic alignment
  • campaign reports to assess appeal performance