# Monday morning cold email capacity check in Slack

> Every Monday at 8am ET, compare your sending mailboxes to campaign backlog and get a ranked Slack digest of which campaigns are under-provisioned.

- Workflow type: agent
- Services: Primeforge, Instantly, Slack Bot
- Categories: Sales, Operations
- Published: 2026-07-11

## What it does

- Adds up your active sending mailboxes and estimates total safe daily send capacity for the week ahead.
- Pulls every active campaign and counts how many leads are still waiting to be sent in each one.
- Ranks campaigns that will take too long to drain at current capacity and estimates how many more mailboxes each one needs.
- Posts a single Slack digest that calls out which campaigns to reinforce and which could be paused to free up capacity for hotter ones.

## What you'll need

- A Primeforge account with an API key that can list your workspace mailboxes.
- An Instantly account on the Growth plan or higher with an API key that can read campaigns and leads.
- A Slack workspace connected to Geni, plus the channel or direct message where the Monday digest should post.

## Prompt

Build me an agent workflow that runs every Monday at 8am America/New_York and posts a cold email capacity digest to Slack. The point of the digest is to catch under-provisioned campaigns before they silently cap outbound: match the supply of sending mailboxes in Primeforge against the demand of unsent leads in Instantly.

Step 1. Compute fleet capacity from Primeforge. Use Primeforge's List Workspace Mailboxes to pull every mailbox in the workspace. Skip any mailbox that is paused or scheduled for deletion. Treat everything remaining as an active mailbox. Estimate total safe daily send capacity as active_mailboxes multiplied by 30 (the standard safe-send number per mailbox per day, which should be a configurable constant near the top of the instructions).

Step 2. Pull demand from Instantly. Use Instantly's List Campaigns to get every active campaign (status 1). For each active campaign, use Instantly's List Leads filtered to that campaign id, and count the leads that are still unsent (pending, status 0, plus active in-sequence, status 1). Keep each campaign's remaining lead count and name/tags.

Step 3. For each campaign, calculate: (a) days_to_drain equals remaining_leads divided by that campaign's fair share of daily capacity, where fair share is fleet_capacity times (this campaign's remaining leads divided by total remaining leads across all active campaigns); (b) demand_share equals this campaign's remaining leads divided by total remaining leads; (c) recommended_additional_mailboxes equals the extra mailboxes needed so that remaining_leads divided by (30 times new_mailbox_count) is at most 7, rounded up. Flag a campaign as at risk if days_to_drain is greater than 14, or if its demand_share is materially higher than its current share of fleet capacity.

Step 4. Send a single Slack digest using the Slack Bot Send a Message action to a channel I will specify when I set this up. Rank the at-risk campaigns from worst to best. For each flagged campaign, state the concrete numbers on one line each: remaining leads, days to drain at current fair share, and recommended additional mailbox count. Under that, call out any campaigns that could be safely paused this week to free capacity for hotter ones (candidates: low remaining leads plus low reply rate, or campaigns whose demand_share is far below their capacity share). If nothing is at risk, post a short green-light note that says the fleet has enough headroom for the week.

Tone: concise and operator-focused. No marketing fluff, no emoji spam, no filler. Use Slack mrkdwn: bold campaign names, one line of numbers per campaign, and a short recommendation at the top. Keep the full message under about 15 lines so it can be read at a glance on a phone.

Make the sends-per-mailbox-per-day assumption (30), the days-to-drain threshold (14), and the target Slack channel easy to change at the top of the workflow instructions so I can tune them later without rewriting the logic.

## How to customize

- Change the day, time, or Slack channel the digest posts to.
- Tune the sends-per-mailbox-per-day assumption if your warmup is tighter or more relaxed than the default of about 30.
- Adjust the days-to-drain threshold that flags a campaign as at risk (the default is 14 days).
- Add or remove specific campaigns and tags you want the digest to cover.

## FAQ

### Why not just look at Instantly's dashboard?

Instantly shows how each campaign is performing, but it does not compare your total backlog of unsent leads to the actual size of your sending fleet. This digest ties both sides together so you can see under-provisioning before it silently caps outbound.

### What counts as an active mailbox?

Any mailbox in your Primeforge workspace that is not paused and not scheduled for deletion. The workflow filters those out automatically before computing capacity.

### Can the digest post in a direct message instead of a channel?

Yes. Point it at a channel, a private channel, or your own direct message, whichever you prefer.

### What if I use a different sending platform, like Smartlead?

When you use this prompt, ask the workflow author to swap Instantly for your platform. The capacity math stays the same, only the source of campaigns and lead counts changes.

### What happens on a Monday when nothing is at risk?

You get a short green-light note that says the fleet has enough headroom for the week ahead, so the digest never becomes noise you learn to ignore.

Use this prompt in General Input: https://www.generalinput.com/prompts/monday-morning-cold-email-capacity-check-in-slack