/push — Export to Sequencer or File
You take approved outreach emails and format them for the user's email sequencer, or export them as plain text files ready to copy-paste.
Process
Step 1: Detect Format + Connected Tools
Check ./gtm/icp.md for Connected Tools and Stack sections.
If outreach/CRM tools are connected (check Connected Tools in icp.md for any MCP connections or API keys), offer direct push:
I can push these directly to {connected tool}
as a new campaign. Or export as files.
Which do you prefer?
Use whatever tool is connected — follow its API conventions. Do NOT hardcode preferences for any specific tool.
If no direct push tools, offer file formats:
Adapt the menu to the user's stack. Read icp.md Stack section. If they use specific tools, name those tools in the options. If they have no tools (just Gmail, manual sending), simplify the menu.
{If user has tools in their stack:}
How do you want these exported?
1. Plain text (copy-paste ready)
2. CSV (for {their sequencer or "email sending tools"})
3. {Their sequencer} format (if applicable)
4. {Their CRM} format (if applicable)
5. LinkedIn copy-paste (all messages with char counts)
6. LinkedIn CSV (for {their LinkedIn tool or "automation tools"})
7. Both email + LinkedIn files
8. Just show me — I'll copy them manually
{If user has NO tools (Gmail, manual, etc.):}
How do you want these exported?
1. Plain text (copy-paste into Gmail)
2. LinkedIn copy-paste (all messages, ready to send)
3. Both email + LinkedIn text files
4. Just show me — I'll copy them manually
Step 2: Gather Approved Outreach
Read ./gtm/prospects.md for all prospects with status "outreach-written".
Check what was written — email only, LinkedIn only, or both. Export whatever exists.
If no outreach has been written, suggest: "Run /outreach first to write outreach for your prospect list."
Step 3: Export
Plain Text (.txt)
Simple, universal. One file with all emails separated by dividers.
Create ./gtm/export/outreach-{date}.txt:
================================================================
TO: {prospect name} — {title} — {company}
EMAIL: {email if known, otherwise "[find email]"}
LINKEDIN: {url if known}
================================================================
Subject: {subject line}
{email body}
================================================================
{next email...}
CSV (Instantly, Apollo, Smartlead, etc.)
Create ./gtm/export/outreach-{date}.csv:
first_name,last_name,email,company,title,subject,body,linkedin_url
{first},{last},{email or empty},{company},{title},{subject},{body with newlines as \n},{linkedin}
CSV formatting rules:
- Escape commas and quotes in body text
- Replace newlines with
\nin the body column - Include LinkedIn URL column even if empty
- Email column: use company domain email if found, otherwise leave blank with a note that they need to find it
Outreach / Salesloft Format
Create ./gtm/export/outreach-{date}-sequences.txt:
SEQUENCE: Signal Outbound — {date}
STEP 1: Email (Day 0)
---
PROSPECT: {name} — {company}
Subject: {subject}
Body:
{email body}
---
{next prospect...}
HubSpot Sequences Format
Create ./gtm/export/outreach-{date}-hubspot.csv:
Email,First Name,Last Name,Company,Job Title,Contact owner
{email},{first},{last},{company},{title},{user name from voice.md}
Plus a separate template file with the email body for the sequence step.
LinkedIn Copy-Paste (.txt)
Create ./gtm/export/linkedin-{date}.txt:
================================================================
TO: {prospect name} — {title} — {company}
LINKEDIN: {linkedin URL}
CHARS: {character count}
================================================================
{linkedin connection request message}
================================================================
{next prospect...}
LinkedIn API (HeyReach, Dripify, etc.)
Create ./gtm/export/linkedin-{date}.csv:
linkedin_url,first_name,last_name,company,title,message
{url},{first},{last},{company},{title},{message}
CSV formatting for LinkedIn messages:
- Escape commas and quotes in message text
- Replace newlines with spaces (LinkedIn messages are single-block)
- Verify every message is under 300 characters in the CSV
If the user has a LinkedIn automation tool in their stack (from icp.md), format for that specific tool. If not, default to the generic CSV that most tools can import.
Direct Push: Instantly API
If $INSTANTLY_API_KEY is set, push directly:
# Create campaign
curl -s "https://api.instantly.ai/api/v1/campaign/create" \
-H "Content-Type: application/json" \
-d '{
"api_key": "'$INSTANTLY_API_KEY'",
"name": "Signal Outbound — {date}",
"schedule": {...}
}'
# Add leads to campaign
curl -s "https://api.instantly.ai/api/v1/lead/add" \
-H "Content-Type: application/json" \
-d '{
"api_key": "'$INSTANTLY_API_KEY'",
"campaign_id": "{id from create}",
"leads": [
{
"email": "{email}",
"first_name": "{first}",
"last_name": "{last}",
"company_name": "{company}",
"custom_variables": {
"signal": "{signal}",
"subject": "{subject}",
"body": "{body}"
}
}
]
}'
NEVER hardcode the API key. Always use $INSTANTLY_API_KEY.
After push, show:
Pushed {N} leads to Instantly campaign
"{campaign name}". Check your Instantly
dashboard to review and activate.
Direct Push: Clay MCP
If Clay MCP is connected, offer to push contacts to a Clay table:
mcp__claude_ai_Clay__track-event:
- event_name: "outreach_ready"
- properties: {prospect data + outreach copy}
Or use Clay's account management:
mcp__claude_ai_Clay__add-contact-data-points:
- Add signal, outreach copy, and status to existing contacts
Step 4: Present Export
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EXPORT COMPLETE
{date}
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
Format: {format name}
Prospects: {N}
File: ./gtm/export/{filename}
──────────────────────────────────────────────
{If any prospects are "LinkedIn only" or have pattern-guess emails:}
EMAIL STATUS
─────────────────────────────────────────────
{N} verified emails → ready to send
{N} pattern-guess emails → verify before sending
{N} LinkedIn only → connection requests ready
{If pattern-guess emails exist:}
Pattern-guess emails are based on the company's
email format. Verify them before sending — a
bounced email hurts your sender reputation.
{If the user has an enrichment tool connected:}
Want me to try verifying the pattern-guess emails
with {connected tool}? Say "verify" and I'll check.
{If no enrichment tools and user wants better emails:}
If you have access to any email verification or
enrichment tool, I can help you connect it and
verify these. Otherwise, the LinkedIn outreach
is ready to go as-is.
──────────────────────────────────────────────
DELIVERABILITY CHECK
─────────────────────────────────────────────
Before sending, make sure:
✓ Domain authentication (SPF, DKIM, DMARC)
set up on your sending domain
✓ Sending domain is warmed up (if new, start
with 5-10/day and ramp over 2-3 weeks)
✓ Daily send limit: stay under 50/day per
mailbox for cold outreach
✓ Don't send all {N} emails at once — spread
across 2-3 days minimum
{If sequencer in stack:}
Your sequencer handles warmup and send pacing
automatically — just check it's configured.
{If no sequencer (Gmail, manual sending):}
Since you're sending manually, keep it to
10-15 cold emails per day and space them out.
Don't send them all at once.
──────────────────────────────────────────────
NEXT STEPS
{If pattern-guess emails exist:}
1. Verify pattern-gue