Lead list spec
This is the brief for your lead list: who belongs on it, where to find them, and what to write down.
Target segment
- Independent newsletter writers with a growing list who send on a regular schedule.
- Small online stores that already email their customers about launches, offers or restocks.
Fit signals
Look for things you can see on public pages:
- A public newsletter archive or a signup form on the site.
- Regular sending: dated archive posts at least once a month.
- A visible hosted email tool, such as a "Mailchimp" badge in an email footer, a Kit (formerly ConvertKit) signup form, or a Substack or beehiiv address.
- Posts or notes that mention list ownership, rising email tool costs or wanting to move tools.
Disqualifiers
Skip a lead if any of these are true:
- No signup form and no archive.
- No sends in the last six months.
- They already run their own email platform.
- A large brand with its own in-house email team.
- They work in an area with legal rules you can't support, such as health or financial advice newsletters, unless you know those rules well.
Search sources and filters
Use public pages only. In Google, set Tools, then Any time, then Past year so you see recent activity.
- Mailchimp campaign archives (Google). Mailchimp hosts public archive pages on campaign-archive.com.
- Query:
site:campaign-archive.com [niche]
- Query: site:campaign-archive.com "[city]" [niche]
- Filter: past year; keep senders with several dated issues.
- Substack and beehiiv publications (Google).
- Query:
site:substack.com [niche] newsletter
- Query: site:beehiiv.com [niche]
- Filter: past year; keep writers who post at least monthly and link to their own website.
- Kit (formerly ConvertKit) landing pages (Google).
- Query:
site:ck.page [niche]
- Query: site:kit.com [niche] newsletter
- Filter: past year; keep pages with a working signup form and a named writer or business.
- Small online stores (Google). Many small stores run on Shopify, which gives each store a myshopify.com address.
- Query:
site:myshopify.com [niche] "newsletter"
- Query: [niche] shop "sign up for our newsletter" "[city]"
- Filter: keep stores with a visible signup form and recent product or blog updates.
- Communities, read only. Reddit's r/Newsletters and r/emailmarketing, and Indie Hackers. Look for posts about email tool costs or switching tools. Note the public website of anyone who fits. Don't send direct messages or pitch in threads.
- The listmonk GitHub repository, read only. Issues and discussions at github.com/knadh/listmonk sometimes come from people who want help setting it up. Read them to learn the common problems. Don't pitch there.
Columns to capture
| Column |
What to record |
| Name |
Writer or business name |
| Website |
Main site URL (web address) |
| Archive URL |
Public newsletter archive, if any |
| Contact page |
URL of the contact page, or a public business email shown there |
| Current tool |
Only if visible, otherwise "unknown" |
| Send cadence |
Sends counted in the last 90 days, from dated archive posts |
| Fit |
Yes, maybe or no |
| Reason |
One line on why |
| Date checked |
The day you looked |
Never guess list size, revenue or number of staff. Write "unknown".
Starter list size
About 25 rows is a workable first batch. That's a working suggestion, not a benchmark.
Compliance
- Collect business contact details only, from the business's own public pages. No personal phone numbers or home addresses.
- Respect each site's terms of use. Don't scrape at volume.
- Commercial email to US recipients must follow CAN-SPAM, the US law for commercial email. That means honest subject lines and sender details, making clear the message is a business offer, a real postal address, and a working way to opt out. The opt-out must keep working for at least 30 days after you send, and you must honor it within 10 business days.
- For people in the EU or UK, GDPR (the EU's data protection law) and similar UK rules apply. If you're unsure you have a lawful basis to email someone, skip them.
- Canada's anti-spam law, CASL, is stricter. Only email a Canadian business if its address is published publicly, there's no "no unsolicited email" note, and your message relates to its business.
Search prompts
Give these to your agent in order. Each one builds on the last.
Prompt 1: Build the list
Goal: Build a first list of about 25 newsletter writers or small online stores in [niche] that might want their own newsletter platform.
Background: I set up and run listmonk, a self-hosted newsletter manager, for clients. Good fits send email regularly through a hosted tool and might want to own their list. I only use public pages.
Steps:
1. Run these Google searches, filtered to the past year: site:campaign-archive.com [niche], site:substack.com [niche] newsletter, site:beehiiv.com [niche], site:ck.page [niche], site:myshopify.com [niche] "newsletter".
2. For each promising result, open the main website and the archive.
3. Fill in the columns: name, website, archive URL, contact page, current tool, send cadence, fit, reason, date checked.
4. Stop at about 25 rows.
Inputs: [niche], [city or region, optional], [output file name].
Constraints: Public pages only. No fake signups, no form submissions, no contacting anyone. Write "unknown" for anything not shown, including list size and revenue.
Done when: the file has about 25 rows with every column filled or marked "unknown". Report back: the file, plus the five strongest rows and why.
Prompt 2: Verify fit
Goal: Confirm the send cadence and current tool for every row so I only contact real fits.
Background: A good listmonk lead sends at least monthly and uses a hosted tool. Archive dates and email footers usually show both.
Steps:
1. For each row, open the archive and count the sends in the last 90 days.
2. Check the footer of one recent issue for the sending tool's name or badge.
3. Update the cadence, current tool, fit and reason columns.
4. Mark rows with no archive as "maybe" rather than guessing.
Inputs: [lead list file].
Constraints: Public pages only. Don't subscribe with fake details. Don't contact anyone. No guessed numbers.
Done when: every row has a checked cadence and a fit verdict. Report back: the updated file and a count of yes, maybe and no.
Prompt 3: Remove duplicates and disqualified leads
Goal: Clean the list so it holds each business once and only real fits.
Background: The same writer can show up on Substack, a personal site and a Mailchimp archive. Disqualifiers are: no form or archive, no send in six months, already self-hosting, a large brand with an in-house team, or a regulated area like health or financial advice.
Steps:
1. Merge rows that share a domain or a writer name, keeping the most complete details.
2. Apply each disqualifier and move those rows to a "removed" tab.
3. Note the reason for every removal.
Inputs: [lead list file].
Constraints: Don't delete data; move it. Don't contact anyone.
Done when: the main tab has no duplicates and no disqualified rows. Report back: how many rows remain and the removed rows with reasons.
Prompt 4: Prioritize
Goal: Pick the ten leads to approach first.
Background: The best first leads send often, use a hosted tool, and have a public business contact.
Steps:
1. Score each "yes" row on send cadence, visible hosted tool and whether a public contact exists.
2. Rank the top ten and write one line on what a sample issue for each could look like.
Inputs: [cleaned lead list file].
Constraints: Rank only on what's visible. No guessed list size or revenue.
Done when: there's a ranked top ten. Report back: the ranked list with one-line reasons and sample ideas.
Outreach kit
Lead with something useful: a sample issue in their brand. You send every message yourself, by hand, after reading it. The cadence below is a suggestion.
Rules for every message
- Send from your real name and business address, with an honest subject line, and make it plain that you're offering a paid service.
- Include your postal address and a plain opt-out line, such as "Reply 'no thanks' and I won't email again." Honor it right away.
- No invented results, no open-rate or revenue claims, no fake urgency.
- One person per message. No bulk blasts, no bought lists, no automated sequences sent from listmonk itself.
- Stop the sequence as soon as they reply, opt out or say no.
The sequence
| Message |
When (suggestion) |
Purpose |
| Free sample |
Day 0 |
Show the result in their own inbox |
| First email |
Day 0, right after the sample |
Explain what the sample is and what you offer |
| Follow-up 1 |
Day 4 |
Add one specific benefit |
| Follow-up 2 |
Day 9 |
Offer a short call |
| Close the loop |
Day 16 |
Close politely and leave the door open |
Free sample
Build a sample issue in their brand on your own demo install (setup guide, Step 3) and send it to their public business address once you've approved it. Mark it clearly as a sample.
First email
- Purpose: Point them to the sample and say plainly what you do.
- Structure:
1. "Hi [contact name], I sent you a sample issue called [sample subject] built in your brand."
2. "It runs on listmonk, a newsletter platform you'd host and own instead of renting."
3. One line on what you'd set up: their list, sending, templates and monthly care.
4. One line on what you noticed about their newsletter: [specific observation].
5. "Would it be useful if I showed you how it would work for [their newsletter name]?"
6. Sign-off, postal address and opt-out line.
- Subject line options: "A sample issue for [newsletter name]" or "[Newsletter name], built on your own platform".
Follow-up 1
- Purpose: Add one concrete benefit that fits them.
- Structure:
1. "Hi [contact name], a quick follow-up on the sample I sent."
2. One benefit that fits what you saw, for example owning the list and the archive.
3. One line on what stays the same for their readers.
4. "Happy to answer any questions by email."
5. Sign-off, postal address and opt-out line.
- Subject line options: "Re: A sample issue for [newsletter name]" or "Owning your list at [newsletter name]".
Follow-up 2
- Purpose: Offer a short call.
- Structure:
1. "Hi [contact name], one more note on the sample."
2. "If it's useful, I can walk you through setup and monthly care in 15 minutes."
3. "[Booking link], or reply with a time that suits you."
4. Sign-off, postal address and opt-out line.
- Subject line options: "15 minutes on [newsletter name]?" or "Quick walkthrough of the sample".
Close the loop
- Purpose: End politely so they can come back later.
- Structure:
1. "Hi [contact name], I'll close this out so I'm not filling your inbox."
2. "If owning your newsletter platform comes up later, just reply to this email."
3. Thanks and sign-off, postal address.
- Subject line options: "Closing the loop on [newsletter name]" or "Last note from me".
Objection notes
- "My emails will land in spam." Explain that you set up sender authentication: SPF, DKIM and DMARC, three DNS records that prove the email comes from them. You also watch bounces and spam complaints every month. Don't promise inbox placement or open rates.
- "I don't want to manage a server." They don't have to. Monthly care covers updates and backups. They own the hosting account, so they're never locked in to you.
- "Moving my list sounds risky." You import only subscribers who agreed to receive email, send tests first, and keep the old tool running until the first live send works.
- "What does it cost?" Setup is about $300 to $600 and care is about $100 to $200 a month (estimates), plus hosting and the sending service, which they pay directly. Compare against their current bill only using numbers they give you.
- "I'll just do it myself." That's a fair choice. listmonk is free and open source. Offer to answer one or two questions anyway; the offer is the setup and ongoing care, not access to the software.
Offer one-pager outline
- What's included: install, sending setup, sender authentication, list import with consent records, bounce handling, branded templates, [campaigns per month] campaigns scheduled, monthly backups and updates.
- What's not included: writing newsletter content (unless agreed), paid design work, legal advice.
- What I need from you: access to your domain's DNS settings, a sending service account, your list export with consent records, logo and brand colors.
- Price (estimates): setup about $300 to $600, monthly care about $100 to $200.
- Client-paid costs: hosting and the sending service, billed to you directly.
- Response time: [your response time] for problems.
- License note: listmonk is free under the AGPL (a copyleft license that requires sharing changes you let others use over a network); you own your install and your data.
Step-by-step setup guide
Each step lists what you need first, what to tell your agent, how you'll know it's done, a time estimate and the most common failure.
Step 1: Run it yourself
Install listmonk on your own server and send a test campaign to yourself. You'll use the project's Docker Compose file (a setup that starts several connected services with one command) and connect your sending service through SMTP settings.
- Prerequisites: a server with Docker, a sending service account, a domain with DNS access (DNS is the system that points a domain name to a server).
- Time: about 1 to 2 hours (estimate).
What to say to your agent:
Goal: Get a working listmonk install on my server and prove it can send a real email to me.
Background: listmonk is a single program that stores everything in PostgreSQL 12 or newer. The recommended install is the docker-compose.yml from github.com/knadh/listmonk, started with docker compose up -d. The dashboard runs on port 9000; the first visit creates the Super Admin user. Sending uses an SMTP account set in Settings.
Steps:
1. Install listmonk with the official Docker Compose file and put it behind HTTPS (the secure, padlocked kind of web connection) on [subdomain].
2. Create the admin user and store the password in [password manager], not in chat.
3. Add my sending service's SMTP details in Settings.
4. List the sender authentication records (SPF, DKIM, DMARC) I need to add at [DNS provider] for [my domain], and check them once added.
5. Create a list containing only [my email] and send a test campaign.
Inputs: [server address], [subdomain], [my domain], [DNS provider], [sending service], [my email], [password manager].
Constraints: Keep SMTP passwords and API keys out of chat. Don't change listmonk's code. Send nothing to anyone but me.
Done when: the test email lands in my inbox, not spam, with authentication passing. Report back: the dashboard URL, the DNS records used and anything that failed.
- Checkpoint: the test email is in your inbox and its headers show SPF, DKIM and DMARC passing.
- Common failure and fix: the dashboard only answers on port 9000 over plain HTTP (the standard way web pages are sent). Put a reverse proxy (a web server that sits in front of the app and handles HTTPS, the encryption behind the browser padlock) in front of it.
Step 2: Pick one buyer
Choose newsletter writers or small online stores, not both. Work from the top ten of your lead list.
- Prerequisites: your prioritized lead list.
- Time: about 20 to 30 minutes per prospect (estimate).
What to say to your agent:
Goal: Decide whether [prospect] is a good fit for a listmonk setup and learn enough to make them a sample.
Background: I sell newsletter platform setup and monthly care using listmonk, a self-hosted alternative to tools like Mailchimp. Good fits already send email regularly and want to own their subscriber list.
Steps:
1. Read [prospect]'s website and their public newsletter archive, if they have one.
2. Note what they send, how often and which tool they seem to use now, if it's visible.
3. Capture their brand colors, logo, fonts and tone of voice.
4. Flag anything that makes them a poor fit, like no list or no recent sends.
Inputs: [prospect name], [website URL], [newsletter archive URL].
Constraints: Use public pages only. Don't sign up with fake details or contact anyone. Don't guess at list size or revenue; say "unknown" instead.
Done when: you have a short profile I can act on. Report back: a five-line summary (what, how often, current tool, brand notes, tone), plus a yes, no or maybe on fit with one line of reasoning.
- Checkpoint: a five-line profile and a fit verdict.
- Common failure and fix: there's no public archive. Mark the lead "maybe" and base the sample on their website instead.
Step 3: Make a free sample
Build a template in their brand and send it to them from your demo install.
- Prerequisites: your Step 1 install and the Step 2 profile.
- Time: about 1 hour per sample (estimate).
What to say to your agent:
Goal: Show [prospect] what their newsletter would look like on their own platform, using a real template in their brand.
Background: listmonk templates are HTML (the code web pages are written in) with template tags for things like the unsubscribe link. Campaigns send through the SMTP account already connected on my demo install from Step 1.
Steps:
1. Build a listmonk campaign template using [prospect]'s colors, logo and fonts from the Step 2 profile.
2. Write one sample issue based only on their public content, clearly marked as a sample.
3. Keep the unsubscribe link and a plain-text version.
4. Send it first to [my email] for review. Wait for my approval before sending to [their address].
Inputs: [prospect name], [logo file or URL], [their address], [my email], the Step 2 profile.
Constraints: Don't invent news, offers or numbers for them. Don't use their logo anywhere except this sample. Send to them only once, after I approve.
Done when: I've approved it and it's delivered to them. Report back: a screenshot or preview link, the subject line, and confirmation it passed sender authentication.
- Checkpoint: you've approved the sample and it's been delivered once.
- Common failure and fix: images don't load because they're linked from the prospect's site. Host the images on your own server and add alt text.
Step 4: Set the offer and price
Write the offer from the one-pager outline. Use the estimates from Part 2: about 3 to 6 hours of setup and 1 to 2 hours a month, which at an example rate of $100 an hour comes to about $300 to $600 for setup and $100 to $200 a month. The client pays hosting and the sending service directly. These are estimates, not promises.
- Prerequisites: the offer one-pager outline above.
- Time: about 30 minutes (estimate).
What to say to your agent:
Goal: Draft a one-page offer for listmonk newsletter platform setup and monthly care that I can send to [prospect].
Background: Setup means installing listmonk with Docker Compose and PostgreSQL, connecting their sending service over SMTP, adding sender authentication records to their domain, cleaning and importing their list with consent records, setting up bounce handling and building branded templates. Monthly care means scheduling campaigns, checking bounces and complaints, backups and updates.
Steps:
1. Write the offer in plain language: what's included, what isn't, and what I need from them.
2. Price setup between $300 and $600 and the monthly fee between $100 and $200. Use [my setup price] and [my monthly price] if I've chosen them.
3. State that hosting and the sending service are paid by the client, and name [sending service] as the suggestion.
4. Include [campaigns per month] and the response time for issues.
Inputs: [prospect name], [my setup price], [my monthly price], [campaigns per month], [sending service].
Constraints: No promised open rates, inbox placement or revenue. No hype. Keep it to one page.
Done when: the draft is ready for my edits. Report back: the full offer text and any assumption you made.
- Checkpoint: a one-page offer you'd be comfortable sending.
- Common failure and fix: scope creep, such as the client expecting you to write every issue. List what's not included in plain words.
Step 5: Reach out
Send the first email from the outreach kit yourself, after the sample has arrived.
- Prerequisites: the sample has been delivered; the offer is drafted.
- Time: about 15 minutes per prospect (estimate).
What to say to your agent:
Goal: Write a short, honest first email to [prospect] about the sample newsletter I sent.
Background: They received a sample issue in their own brand from my listmonk demo. My offer is setup plus monthly care for their own newsletter platform, priced per the Step 4 draft. Commercial email must follow CAN-SPAM: honest subject and sender, my postal address and a clear opt-out.
Steps:
1. Write an email of four to six sentences following the first-email structure in my outreach kit.
2. Mention one specific thing I noticed about their newsletter.
3. End with one simple question.
4. Add my postal address and the opt-out line, and write two subject line options.
Inputs: [prospect name], [contact name], [sample subject line], [my name], [my postal address], [specific observation].
Constraints: No hype, no invented results or statistics, no pressure tactics. Don't send it; I'll send it myself after review.
Done when: I have a ready-to-send draft. Report back: the email text and the two subject lines.
- Checkpoint: a draft you've read and sent yourself, with the follow-up dates noted.
- Common failure and fix: the email reads like a template. Rewrite the observation line using something specific from their archive.
Step 6: Set it up
When a client says yes, host listmonk for them, connect sending and import the list. listmonk imports subscribers from a CSV file, a simple spreadsheet format. Set up bounce handling too, so emails that can't be delivered get recorded and cleaned off the list.
- Prerequisites: the client's server or hosting account, access to their DNS settings, their sending service account and their list export with consent records.
- Time: about 3 to 6 hours (estimate).
What to say to your agent:
Goal: Deploy a production listmonk for [client], with authenticated sending and their list imported safely.
Background: listmonk runs with Docker Compose and PostgreSQL 12 or newer. Bounce processing is turned on in Settings, then Bounces, using a dedicated POP3 (an older standard for fetching email) mailbox or a webhook. The docs warn against using a main inbox, because listmonk deletes bounce mail after processing.
Steps:
1. Install listmonk on [client server] at [client subdomain] with HTTPS.
2. Connect [client sending service] over SMTP.
3. Give me the SPF, DKIM and DMARC records for [client domain], and verify them once added.
4. Set up bounce processing with [bounce mailbox or webhook].
5. Import [list file] as CSV, keeping only subscribers with a consent record. Report how many rows were skipped and why.
6. Send a test campaign to [client test address].
Inputs: [client], [client server], [client subdomain], [client domain], [client sending service], [bounce mailbox or webhook], [list file], [client test address].
Constraints: Keep credentials out of chat and out of the log. Don't email the real list. Don't import anyone without consent.
Done when: the client's test email arrives authenticated and the list is imported. Report back: the URL, the DNS records, the import counts and any issues.
- Checkpoint: an authenticated test email in the client's inbox, plus import counts you've checked.
- Common failure and fix: the bounce mailbox is the client's main inbox. Use a dedicated mailbox, because listmonk deletes bounce mail after processing it.
Step 7: Run the monthly care
Send, watch, back up and update. Watch bounces (emails that couldn't be delivered) and complaints (spam reports). A backup is a saved copy you can restore from.
- Prerequisites: a backup location and the client's approved campaign dates.
- Time: about 1 to 2 hours a month (estimate).
What to say to your agent:
Goal: Run this month's care for [client]: campaigns out on time, a healthy list, a fresh backup and an up-to-date install.
Background: listmonk stores everything in PostgreSQL. The docs say to always back up the database before upgrading. With the current Docker Compose file, an upgrade is docker compose down app, docker compose pull, then docker compose up app -d.
Steps:
1. Schedule [campaigns this month] for the dates I approve. Nothing goes out without my sign-off.
2. Report bounces, complaints and unsubscribes since last month, and flag anything unusual.
3. Back up the database and confirm the backup restores on a test copy.
4. Check for a new listmonk release. If there is one, read the release notes, take a backup, upgrade and confirm the dashboard and a test send still work.
Inputs: [client], [campaigns this month], [send dates], [backup location].
Constraints: Don't send unapproved campaigns. Keep subscriber data off chat. Never upgrade without a fresh backup.
Done when: campaigns are scheduled, the backup is verified and the install is current. Report back: a short monthly summary for me and a two-line note I can forward to the client.
- Checkpoint: a backup that restores on a test copy, and a short report.
- Common failure and fix: upgrading without a backup. Never do it; take and check a backup first.
Step 8: Document as you go
Keep a record of settings, lists and sends, including the DNS records (the domain settings that point your web address to services).
- Prerequisites: a log file for each client.
- Time: about 15 minutes a month (estimate).
What to say to your agent:
Goal: Keep one running log per client so anyone could take over the setup.
Background: Each listmonk client has its own server, domain, sending service, DNS records, lists and campaigns. Problems usually trace back to a change, so every change gets logged.
Steps:
1. Create or update [client log file] with sections for setup, sending, DNS records, lists and consent, campaigns, backups and changes.
2. Record the listmonk version, the server, the sending service and where credentials are stored (the location only, never the values).
3. Add each campaign sent, each backup taken and each change made, with dates.
4. At month end, write a five-line summary at the top.
Inputs: [client], [client log file], this month's Step 7 report.
Constraints: No passwords, API keys or subscriber personal data in the log.
Done when: the log is current and the summary is written. Report back: the summary and anything that needs my decision.
- Checkpoint: a current log with a five-line summary at the top.
- Common failure and fix: passwords end up in the log. Record where credentials are stored, never the values.
Your job, the agents' job
You pick the niche, approve the lead list, decide who to contact, send every email yourself, approve every campaign and own the client relationship. The agents search public pages, fill in the lead list, draft samples and emails, install, schedule and report.
A few honest notes
- Deliverability is real work. Deliverability means whether your emails reach the inbox. Watch bounces and complaints every month.
- Consent comes first. Only import subscribers who agreed to receive email, and keep the unsubscribe link working.
- Mind the AGPL if you modify the code and give clients access. It's a license that requires sharing your source code if you change the software and offer it to others over a network.
- The numbers are estimates. Every time and price here is an estimate, not a promise, and nothing here predicts results.
Start your own
Pick one niche, build 25 rows, make one sample and send it this week.
What's your play?