Skip to content

Newsletter (Listmonk)

Integrated with Listmonk for opt-in mailing lists and newsletter campaigns. Enable with LISTMONK_SYNC_ENABLED=true.

Newsletter Sync


Managed Lists

The platform automatically creates and maintains 13 subscriber lists in Listmonk:

List Name Source Tags
All Contacts All synced records v2
Campaign Participants Users who sent advocacy emails v2, influence
Locations - All Address occupants with email v2, map
Support Level 1-4 Addresses by canvass support level v2, map, support
Has Campaign Sign Addresses with a yard sign v2, map, signs
Users Active non-temp platform accounts v2, users
Volunteers Shift signups v2, map, shifts
Canvassers Users who completed canvass sessions v2, map, canvass
Subscribers Active paid subscribers v2, payments
Donors Users who completed a donation v2, payments

Bulk Sync

The admin panel provides a manual "Sync All" action that synchronizes four data sources to Listmonk:

  1. Campaign participants -- distinct email senders from advocacy campaigns
  2. Location contacts -- address occupants with email, mapped to support level and sign lists
  3. Users -- active platform accounts (excludes TEMP users)
  4. CRM tags -- contacts tagged in the People module, synced to tag-linked Listmonk lists

Each source upserts subscribers (creates new or merges into existing), preserving existing list memberships and merging metadata attributes.


Event-Driven Sync

In addition to bulk sync, the platform fires real-time subscriber upserts on application events:

  • Shift signup -- adds to Volunteers list
  • Canvass session completed -- adds to Canvassers list
  • Campaign email sent -- adds to Campaign Participants list
  • Subscription activated -- adds to Subscribers list
  • Donation completed -- adds to Donors list
  • Product purchased -- adds to Donors list
  • Address updated (canvass visit) -- updates support level list membership
  • Re-engagement email sent -- updates Volunteers list metadata
  • CRM tag changed -- adds/removes from tag-linked Listmonk lists

All event-driven syncs are fire-and-forget and silently fail if Listmonk is unreachable.


Admin Routes

  • /app/listmonk (sidebar: "Newsletter") -- sync status, subscriber counts, campaign stats, and manual sync trigger