Build your own cold outreach system on MyAgentMail
Cold email + LinkedIn outreach infrastructure for indie hackers and small teams. Provisioned inboxes, real LinkedIn sessions, intent signals, server-side cadence engine. Drop-in alternative to Lemlist, Apollo, Instantly — with full data ownership.
The problem
Cold outreach SaaS — Lemlist, Apollo, Instantly, Smartlead — bundles the parts you actually need (sending infrastructure, deliverability, cadence engine, LinkedIn outreach) with parts you don't (their UI, their AI templates, their CRM lock-in). Pricing scales by seats and contacts even if you're a one-person operation.
If you can write a simple agent or script, building your own outreach system gives you:
- Full data ownership. Leads, replies, send history live in your DB, not theirs.
- Per-customer isolation if you're reselling — Lemlist doesn't do multi-tenant; we do.
- No vendor lock-in. Swap channels, scale, or migrate without rebuilding.
- AI-agent-native architecture. Your agent reads docs, calls the API, ships an integration in an afternoon — vs. clicking through Lemlist's UI to configure each campaign by hand.
What MyAgentMail gives you
The infrastructure layer, not the UI:
- Email: provisioned inboxes (
[email protected]), send via REST or SMTP, receive via webhook or IMAP, real threading, bounce + complaint tracking, per-inbox auto-pause on abuse signals. - LinkedIn: real LinkedIn account sessions you connect, send invitations, DMs, post engagement signals. Multi-account quota multiplication — connect a second account, daily action ceiling doubles.
- Cadence engine: define
email → wait → linkedin_invite → wait → linkedin_message → wait → emailonce, enroll a lead, we fire steps server-side with branch conditions and business-hours guard. - Reply detection + cadence exit: when a lead replies on either channel, the runtime exits their sequence automatically and fires
cadence.lead.repliedwebhook. - Open + click tracking on email so cadence engine can branch on engagement (gate on
message.clicked, notmessage.opened— opens are noisy in 2026).
Sketch — minimal cold outreach loop
import { MyAgentMail } from "myagentmail";
const mam = new MyAgentMail({ apiKey: process.env.MYAGENTMAIL_KEY });
// You bring the leads (your scraping / list / DB / signals).
const leads = [
{ email: "[email protected]", linkedin: "linkedin.com/in/jane", firstName: "Jane" },
// ...
];
// Define your sequence once. Re-use across enrollments.
const cadence = await mam.cadences.create({
name: "Founders cold outreach Q2",
inboxId: "ibx_...",
sessionId: "sess_...",
dailySendCap: 25,
exitOnReply: true,
steps: [
{ kind: "linkedin_connect", message: "Hi {{firstName}}, saw your work at {{company}}..." },
{ kind: "wait", days: 3 },
{ kind: "email", condition: "no_reply_to_prev", subject: "Quick question about {{company}}", body: "..." },
{ kind: "wait", days: 4 },
{ kind: "linkedin_message", condition: "after_accept", message: "..." },
],
});
// Enroll. The runtime takes it from here — fires steps in order,
// exits on reply, fires cadence.* webhooks for your handler.
await mam.cadences.enroll(cadence.id, leads);
// Listen for engagement on your webhook handler:
// - cadence.step.fired
// - cadence.lead.replied (lead engaged → exit)
// - message.opened / message.clicked (engagement signal)
What you save vs. building each piece yourself
| Piece | DIY cost |
|---|---|
| SMTP/SES/SendGrid + custom-domain setup + DKIM | Days |
| Inbound webhook + parsing + threading state | Week |
| LinkedIn automation that survives anti-bot | Months (or 1 banned account) |
| Cadence runtime with branch conditions + business hours | Week |
| Per-account rate limiting + abuse prevention | Days |
| Bounce/complaint pipeline + auto-pause logic | Week |
Total DIY: ~6-8 weeks of engineering. MyAgentMail: a 7-day free trial and an afternoon to ship a working sequence.
Pricing
$5/month email + $29/month LinkedIn add-on (Solo tier — 2 sessions, 100 actions/day per session, 3 intent signals). Need more accounts? Team is $99/mo for 15 sessions; Agency is $299/mo for 60. Both have a 7-day free trial; you can build and run a real sequence before paying. See /pricing.
For comparison, Lemlist's Multi-channel Expert tier is $99/user/month and you still don't own your data.
Common questions
"What about deliverability?" ZeptoMail backbone for outbound; SES as backup. Per-inbox auto-pause if your bounce rate or complaint rate spikes (we don't let one customer's spam ruin our IP reputation). For high-volume cold senders, Postmark has marginally better deliverability — but you trade away receive, LinkedIn, and the cadence engine.
"Will my LinkedIn account get banned?" Anti-bot risk is real. We minimize it by polling at industry-standard cadences (every-6h with ±10% jitter for system signals — matches Unipile's published guidance), routing auth through residential proxies geo-matched to the user's country, and capping daily actions per session. Connect a second LinkedIn account to multiply headroom and reduce per-account risk. More on the polling design.
"Can I export everything?" Yes. Every send, receive, and event is in our messages table, addressable via the API. Soft-deletion only — nothing is wiped from under you.
Related
14-day productized build. $10K flat, optional maintenance at $2K/month. We tune the firing rules, the drafter prompts, and the cadence to your ICP.
Other use cases
- For recruiting agentsEmail + LinkedIn API for AI recruiting agentsSource candidates from LinkedIn, message them with personalized outreach, follow up over email when a connection accepts. Reply detection, multi-account quotas, and intent signals built in.
- For sales agentsEmail + LinkedIn API for AI sales agentsBuild AI sales agents that actually work leads end-to-end — connect on LinkedIn, send personalized email, detect replies, branch the cadence, and follow up at the right moment. One API key, two channels, multi-tenant ready.
- For support agentsEmail API for AI customer support agentsBuild AI customer support agents that read inbound email, draft thoughtful replies, and learn from human edits before sending. Real inbox per agent, full thread state, drafts API for human-in-the-loop.
- For SaaS buildersMulti-tenant email + LinkedIn API for SaaS buildersBuild SaaS products that give each customer their own provisioned inbox and connected LinkedIn account. Workspace-isolated keys, per-tenant rate limits, scoped billing structures — multi-tenancy is first-class, not an afterthought.
- For transactional emailTransactional email API for AI-powered appsSend password resets, receipts, and notifications from AI-built apps. Provisioned inbox, custom domain, ZeptoMail-backed deliverability, and per-send open + click tracking with optional opt-out for privacy-sensitive sends.
Last reviewed 2026-05-02.