SKILL.md
Apollo Core Workflow B: Email Sequences & Outreach
Overview
Build Apollo.io email sequencing and outreach automation via the REST API. Sequences in Apollo are called "emailer_campaigns" in the API. This covers listing, searching, adding contacts, tracking engagement, and managing sequence lifecycle. All endpoints require a master API key.
Prerequisites
- Completed
apollo-core-workflow-a(lead search) - Apollo account with Sequences feature enabled
- Connected email account in Apollo (Settings > Channels > Email)
- Master API key (not standard)
Instructions
Step 1: Search for Existing Sequences
// src/workflows/sequences.ts
import axios from 'axios';
const client = axios.create({
baseURL: 'https://api.apollo.io/api/v1',
headers: { 'Content-Type': 'application/json', 'x-api-key': process.env.APOLLO_API_KEY! },
});
export async function searchSequences(query?: string) {
const { data } = await client.post('/emailer_campaigns/search', {
q_name: query, // optional name filter
page: 1,
per_page: 25,
});
return data.emailer_campaigns.map((seq: any) => ({
id: seq.id,
name: seq.name,
active: seq.active,
numSteps: seq.num_steps ?? seq.emailer_steps?.length ?? 0,
stats: {
totalContacts: seq.unique_scheduled ?? 0,
delivered: seq.unique_delivered ?? 0,
opened: seq.unique_opened ?? 0,
replied: seq.unique_replied ?? 0,
bounced: seq.unique_bounced ?? 0,
},
createdAt: seq.created_at,
}));
}
Step 2: Get Email Accounts for Sending
Before adding contacts to a sequence, you need the email account ID that will send the messages.
export async function getEmailAccounts() {
const { data } = await client.get('/email_accounts');
return data.email_accounts.map((acct: any) => ({
id: acct.id,
email: acct.email,
sendingEnabled: acct.active,
provider: acct.type, // "gmail", "outlook", "smtp"
dailySendLimit: acct.daily_email_limit,
}));
}
