Outreach
Leads, pipeline, and emails
The leads table, the pipeline funnel, the email approval queue, and how the PlusVibe bulk push respects the readiness guard.
Last updated 2026-05-29
In the app
Who this is for
Outbound operators using Leads for the prospect list, Pipeline for funnel analytics, Emails for human approval of generated copy, and PlusVibe for delivery.
When to use each screen
- Leads. Sortable table work, Select all on page, Push selected and Mark completed to PlusVibe, and View details for a single contact.
- Pipeline. Stage counts and quick status edits without opening each lead.
- Emails. Polish subject and body, then Approve & send when your workflow uses generated drafts.
Before you start
Start with PlusVibe setup: required fields and first sync so the credentials, the lead's domain, and the empty audit_url are in the right state before sync.
Connect PlusVibe under Integrations before any bulk push or campaign-dependent action. For per-lead Unibox, Writeback, and Generate Email actions, open Lead detail.
In the app: Leads
- Under Outreach, choose Leads.
- The page title is Leads with subtitle "PlusVibe outreach pipeline". The table renders 25 rows per page.
Columns: Company / domain, Contact, Status, Grade, Top issue, Opens, Actions.
Selection. Row checkboxes plus a Select all on page toggle for visible rows.
Bulk actions (PlusVibe). Pick a campaign in the dropdown, then choose:
- Push selected. Sends the selected lead IDs into the campaign via
POST /api/plusvibe/leads/push. See the readiness guard below for the rules the dashboard applies before the push reaches PlusVibe. - Mark completed. Marks the matching PlusVibe contacts as completed. Requires the lead's contact email to be set.
Row actions. View details opens /leads/<id>. View audit appears once an audit run has been linked.
Status badges
| Enum | Badge label |
|---|---|
new | New |
audit_queued | Audit Queued |
audit_complete | Audited |
email_generated | Email Ready |
email_sent | Email Sent |
bounced | Bounced |
opened | Opened |
replied | Replied |
converted | Converted |
retargeted | Retargeted |
sent | Sent (legacy) |
Empty state. The page explains that leads are synced from PlusVibe or created when audits link to contacts.
Push to PlusVibe: the readiness guard
The dashboard refuses to push a lead to a Plusvibe campaign before its writeback has populated the custom_* merge fields. Plusvibe renders email templates at send time using whatever variables exist on the lead at that moment, so a lead pushed too early would receive step 1 with empty placeholders, and Plusvibe never retries that send. The guard lives in the /api/plusvibe/leads/push route and the dashboard surfaces its response inline.
Ready statuses. A lead is considered ready when its status is one of email_generated, email_sent, opened, replied, retargeted, or converted, and plusvibeLeadData.lastOutboundWriteback.variables is populated on the row.
What happens on push:
- All ready. The push proceeds. The dashboard pre-populates every
custom_*merge field in the same HTTP call that enrols the lead, so Plusvibe's send loop sees a fully-rendered lead the first time it ticks. - One or more not ready. The push returns HTTP 409 with a structured body containing
ready(the leads that would have been pushed) andnotReady(the leads that block the push, each with theirstatusand areason). Nothing is pushed; the operator must adjust the selection.
Reasons mapped per status:
| Status | Reason |
|---|---|
new, missing status | Lead has not been audited yet, run an audit first |
audit_queued | Audit not completed yet |
audit_complete | Audit completed but writeback hasn't run, re-audit the lead |
bounced | Lead bounced, re-audit or remove |
| Any ready status with missing writeback data | Audit completed but writeback hasn't run, re-audit the lead |
Resolving a 409. Either wait for the in-flight audits to finish (the writeback fires within roughly a second of audit completion), or deselect the not-ready leads and push only the ready subset. The dashboard's bulk action surfaces the notReady list inline so you can see which leads block the push.
Pipeline
- Under Outreach, choose Pipeline.
- The title reads Outreach pipeline.
Funnel cards. Total, Audited, Email sent, Opened, Replied, Converted, with percentages against the total where shown.
Optional email stats. Total emails, Emails sent, Send rate, Total by status.
Stage cards. One per pipeline stage with a label, a count, and a bar. Expand a card to see sample leads and a per-lead status dropdown (new, audit_queued, and so on) for quick edits.
Emails
- Under Outreach, choose Emails.
- The page title is Outreach emails with subtitle "Preview, edit, and approve generated emails before sending".
Layout. A two-column view. Left: draft cards listing subject, recipient, created date, and a writebackStatus badge. Right: an inspect panel with Email preview and Edit email tabs, plus Save and Approve & send buttons. Approve & send is hidden once the row is sent.
Empty state. "No emails generated yet. Run audits on leads to generate outreach emails."
Common pitfalls
- Bulk action errors after a successful push. Check campaign connectivity on
/integrations. The push itself may have succeeded while the follow-up status update failed; the dashboard surfaces this as a partial-success warning. Mark completedrejects the action. It requires the lead's contact email to be set. Selected leads with no email are skipped silently in the response.- No drafts on
/emails. Drafts only appear after an audit has linked to a lead and the writeback (or the manual Generate Email action on Lead detail) has produced an outreach email row. Re-run the audit for any lead that is missing one. - Push returns 409 even though the selection looks ready. A lead with status
email_generatedbut missingplusvibeLeadData.lastOutboundWritebackis technically not ready. This happens to legacy rows where the writeback never landed. Re-audit those leads; the new writeback fills both fields atomically.
Related
- PlusVibe setup: required fields and first sync.
- Lead detail. Status dropdown, PlusVibe Writeback, Unibox, and per-lead Outreach Emails.
- PlusVibe overview.