Verify your cold email list every morning before sending
Every weekday at 6am, verify every pending cold email, sort the list into ready-to-send and do-not-send tabs, and post a summary in Slack.
Every weekday at 6:00 AM Eastern Time, run a deterministic email verification workflow that cleans up the day's cold email list before my outreach tool picks it up. Build this as a code workflow with discrete nodes and explicit branching by status. No judgment calls or AI drafting — pure CRUD.
Step 1. Read pending rows from Google Sheets. Use Get Values on the 'pending-verification' tab of my Google Sheet. The sheet has these columns in this order: email, status, smtp_provider, mx_records, verified_at. Filter in the workflow to only the rows where the status column is empty — those are the ones that still need verification.
Step 2. Verify each pending email with Waterfall.io. For each pending row, call Waterfall.io Email Verification with the email address. This endpoint is synchronous and returns status (one of valid, invalid, risky, unknown), smtp_provider, and mx_records. Capture all three plus the current ISO 8601 timestamp as verified_at.
Step 3. Write the results back. Use Google Sheets Batch Update Values to write status, smtp_provider, mx_records, and verified_at to the matching rows on the 'pending-verification' tab in one batched call (not row-by-row).
Step 4. Bucket rows by status. Group the just-verified rows by status. Use Google Sheets Batch Update Spreadsheet to move rows by status: rows with status 'valid' get appended to the 'ready-to-send' tab and deleted from 'pending-verification'; rows with status 'invalid' get appended to the 'do-not-send' tab and deleted from 'pending-verification'. Rows with status 'risky' or 'unknown' stay on the 'pending-verification' tab for human review. Do the appends and deletes in batched operations so the sheet stays consistent.
Step 5. Post a Slack summary. Using the Slack Bot integration, send one message to the #cold-email-ops channel containing today's date, the count of rows in each bucket (valid, invalid, risky, unknown), and a clickable link to the spreadsheet. Keep it to a single short message — no thread, no follow-ups.
Edge cases to handle: if there are zero pending rows, skip Waterfall.io and the sheet writes entirely but still post a brief Slack message saying 'No emails to verify today' with the date and spreadsheet link. If a Waterfall.io call returns a provider error, leave that row's status empty so it gets retried on the next run, and include an 'errors' count in the Slack summary if any occurred.
What does this prompt do?
- Reads new email addresses from your verification tab every weekday morning before your outreach tool sends to them.
- Checks each address for deliverability and labels it as valid, invalid, risky, or unknown.
- Moves clean addresses to a ready-to-send tab and bad ones to a do-not-send tab so you stop wasting sends.
- Posts a short summary in your ops Slack channel with today's counts and a link to the spreadsheet.
What do I need to use this?
- A Google Sheet with one tab for emails to verify and two tabs for clean and bad addresses.
- A Waterfall.io account for email verification.
- A Slack workspace where the bot can post to your cold email ops channel.
How can I customize it?
- Change the run time or which days it runs (for example, every hour during business days, or seven days a week).
- Pick a different Slack channel for the summary, or send it as a direct message instead.
- Decide how risky and unknown addresses are handled, such as auto-skipping them or leaving them for human review.
FAQs
Will this stop my cold emails from bouncing?
How does it know which emails are new?
What happens to addresses marked risky or unknown?
Can I use this with my own cold email tool like Smartlead or Instantly?
What does the Slack summary look like?
Related templates
Stage a batch of filings overnight, then approve each completed form from a screenshot before anything is ever submitted.
Pick a client and a date range to see sent, replies, meetings booked and the real deal value your cold email produced, campaign by campaign.
Review every conversation Fin closed as resolved, judge which ones actually stuck, and see what the gap is worth against your bill.
Merge your IT, HR and Facilities queues into one list ranked by SLA time left, then reply, change status and escalate without ever opening Jira.
Work every return, damage and warranty claim in one queue, with the order, the delivery date and a policy-backed recommendation already on screen.
See every page's translation status at a glance, edit translations side by side with the English, and publish only what your team has actually approved.
Stop sending cold emails to bad addresses.
Connect Google Sheets, Waterfall.io, and Slack once, and Geni verifies every address before your outreach tool sends to them.