Skip to main content

Listmonk FAQs

How do I get the unsubscribed / bounced / complained people from SES and add them to Listmonk's blocklist?

SES, Listmonk, Bounces, Complaints

SES automatically maintains a Suppression List — it contains every email address that has hard-bounced or been marked as spam. You need to periodically sync this list into Listmonk's blocklist so that Listmonk also stops sending to these addresses.

Where to find the Suppression List in SES:

SES Console Suppression List Suppression list tab

  1. Open the Amazon SES Console and make sure you're in the correct region (Asia Pacific — Mumbai).
  2. Go to Suppression List in the left sidebar. You'll see all email addresses that SES has suppressed, along with the reason (Bounce or Complaint) and the date added.
  3. Export or note down the suppressed email addresses. You can filter by reason if you only want bounces or only complaints.
  4. In Listmonk, go to Subscribers → All Subscribers. Search for each suppressed email, select it, and mark it as Blocklisted. For bulk actions, you can use Listmonk's import feature with the blocklist flag set to true.
  5. After blocklisting in Listmonk, optionally remove the address from SES's suppression list only if you've confirmed the address is now in Listmonk's blocklist — this avoids double-handling next time.
💡 Recommended cadence: Check the SES Suppression List at least once a week (ideally after every major campaign) and sync new entries to Listmonk's blocklist. This keeps your bounce rate low and prevents your SES account from being flagged.

 

⚠️ Why this matters: SES stops sending to suppressed addresses automatically, but Listmonk doesn't know about it. If you don't sync, Listmonk will keep queueing emails to these addresses, wasting your daily sending quota and causing delivery errors in your campaign reports.

FAQ 02

How do I identify the truly active subscribers of my newsletter?

Listmonk, SQL Query

For us, an "active subscriber" is someone who has received at least 9–10 newsletters/campaigns and has opened at least one of them (i.e., open rate > 0%). This filters out both new subscribers who haven't had enough exposure and long-time subscribers who never engage.

Conversely, to find inactive subscribers — people who received enough campaigns but never opened a single one — use the query below in Listmonk's subscriber search:

Listmonk → Subscribers → Query Subscribers → Advanced
Listmonk SQL — Inactive Subscribers

-- Subscribers who received ≥ 9 campaigns but opened ZERO
EXISTS(
  SELECT 1
    FROM campaign_lists cl
    INNER JOIN subscriber_lists sl
      ON cl.list_id = sl.list_id
    WHERE sl.subscriber_id = subscribers.id
    GROUP BY sl.subscriber_id
    HAVING COUNT(DISTINCT cl.campaign_id) >= 9
)
AND NOT EXISTS(
  SELECT 1
    FROM campaign_views cv
    WHERE cv.subscriber_id = subscribers.id
)

What this query does:

  1. The first EXISTS block finds subscribers who belong to lists that have been targeted by at least 9 distinct campaigns — meaning they've had enough exposure to your content.
  2. The AND NOT EXISTS block filters to only those who have zero entries in the campaign_views table — meaning they never opened a single email.
  3. The result is your inactive segment: people who've had plenty of chances to engage but haven't. You can then decide whether to re-engage them with a special campaign or blocklist them.
💡

To find active subscribers instead, flip the second condition: change AND NOT EXISTS to AND EXISTS. This gives you everyone who received ≥ 9 campaigns and opened at least one.


📊