Luka Mrkić
Head of BD
Insights, strategies, and real-world playbooks on AI-powered marketing.
MAY 21, 2026
{{ai_first_line}} per recipient at send time.Instantly.ai sends cold email at scale with deliverability built in: sending account rotation, warmup, inbox rotation. ChatGPT writes copy that feels written for one recipient. Integrating them means every lead receives a sentence (or an entire email) generated for them before Instantly sends it.
Four things happen, in this order:
{{custom_variable}} in the email body. Instantly renders per lead at send time.
That covers the architecture. The remaining decision is which tool runs steps one through three.
Make.com handles this cleanly. Fewer steps than Zapier, cheaper at volume, and the JSON handling for the Instantly API is flexible.
In Instantly, open your lead list and add a custom field called ai_first_line. This is the placeholder your sequence will reference. You can add more such as ai_subject and ai_ps. Instantly supports arbitrary custom fields per lead.
Create a new scenario with these modules:
gpt-4o and temperature 0.7.https://api.instantly.ai/api/v2/leads, POST with Bearer auth. The body includes custom_variables.ai_first_line set to the OpenAI output.System prompt for the OpenAI module:
You write one-sentence cold email openers that reference a specific, recent
fact about the prospect. Maximum 20 words. No flattery. Avoid the phrases
"I noticed," "I came across," and "I see." Start with the fact itself.
Lowercase casual tone.
Instantly API body:
{
"campaign": "YOUR_CAMPAIGN_ID",
"email": "{{lead_email}}",
"first_name": "{{first_name}}",
"company_name": "{{company}}",
"custom_variables": {
"ai_first_line": "{{OpenAI_output}}"
}
}
In your Instantly campaign body:
hey {{firstName}},
{{ai_first_line}}
quick one. we help {{role-relevant value prop}}.
worth a 15 min look next week?
[you]
When Instantly sends, every recipient receives their own opener. Everything after the variable stays static.
Run the scenario on a tiny segment first. Open the resulting Instantly leads and read the rendered emails in the campaign preview. If two out of ten openers feel off, the issue lives in your prompt or your enrichment data. Tune those before pushing 5,000 leads through.
For volumes under a few hundred emails per week, the API round trip adds friction with little payoff. A Custom GPT in ChatGPT covers this use case:
{{ai_first_line}} in your sequence.Trade off: there is no automation. You re-run the prompt every time you add leads. The upside is zero API spend on the Instantly side and the chance to eyeball every line before it ships.
At serious volume, middleware adds latency and cost. A 50-line Python script runs faster and gives you full control over retries, prompt versioning, and logging.
import openai, requests, csv, time
openai.api_key = "sk-..."
INSTANTLY_KEY = "..."
CAMPAIGN_ID = "..."
SYSTEM = """You write one-sentence cold email openers referencing a specific
recent fact about the prospect. Max 20 words. Avoid 'I noticed', no flattery.
Lowercase casual tone. Start with the fact itself."""
with open("leads.csv") as f:
for row in csv.DictReader(f):
resp = openai.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "system", "content": SYSTEM},
{"role": "user", "content":
f"Prospect: {row['first_name']} at {row['company']}. "
f"Role: {row['title']}. Signal: {row['signal']}."}
],
temperature=0.7,
)
opener = resp.choices[0].message.content.strip()
requests.post(
"https://api.instantly.ai/api/v2/leads",
headers={"Authorization": f"Bearer {INSTANTLY_KEY}"},
json={
"campaign": CAMPAIGN_ID,
"email": row["email"],
"first_name": row["first_name"],
"company_name": row["company"],
"custom_variables": {"ai_first_line": opener},
},
)
time.sleep(0.3) # stay under OpenAI rate limits
Wiring the integration is the easy part. The prompt determines whether the email earns a reply or lands in spam.
Three rules that consistently work:
A weak prompt:
Write a personalized cold email opener for {{first_name}} at {{company}}.
A strong prompt:
Write a single-sentence cold email opener under 20 words. Reference the recent
signal directly. Avoid the phrases "I noticed" and "I saw." Lowercase, casual,
no flattery, no questions. Prospect: {{first_name}}, {{title}} at {{company}}.
Signal: {{signal}}.
The reply rates land around 2 percent with the weak version and 8 percent with the strong one.
At GPT-4o pricing of roughly $0.005 per line:
A manual VA research line typically costs around $0.20. The unit economics favor the AI workflow by roughly 40x at any volume, provided the prompt and enrichment are dialed in.
Track these in Instantly’s analytics:
If you want us to set this up for your team end to end - with Clay enrichment, prompt tuning, and a CRM feedback loop wired in - let’s chat.
Yes. Instantly has a native feature called Magic AI that generates personalized lines using prospect data. It works for basic use cases. ChatGPT integration adds value when you want custom prompts, specific tone control, or proprietary enrichment signals that the native tool does not see.
Yes, with care. Personalizing the opener (a single variable) is high ROI. Generating the whole body via AI tends to produce bland middles. The pattern that works well: AI opener, human-written value prop, optional AI P.S. line.
GPT-4o for the cost and quality balance. Claude 3.5 Sonnet writes slightly more natural prose, costs more, and takes more work to wire via the OpenAI-native integrations in Make and Zapier. GPT-4o-mini is fine for openers on a tight budget. Avoid it for full emails.
Instantly’s API limits are generous and sit well above what most workflows need. OpenAI’s rate limits are the likely bottleneck. For batches of 10K+ leads, add a 0.3 second sleep between calls. For non-urgent generation, the OpenAI batch API cuts cost by about 50 percent.
Yes. Direct API calls work from Python, Node, or any HTTP client. See Method 3. Middleware is optional convenience.
Three controls. First, ban the AI tells in the system prompt with explicit phrasing rules. Second, cap length aggressively. Third, feed specific enrichment data. If the input is generic, no model can make the output specific. Vary the prompt across segments to avoid pattern repetition across recipients.
Merge tags such as {{firstName}} come from the lead’s core fields. Custom variables are arbitrary key-value pairs you can write to any lead via API or CSV import. Personalization output from ChatGPT goes into custom variables.
ai_first_line as a custom variable in your Instantly lead list.The integration is the easy part. Reply rate becomes a function of prompt quality and enrichment quality. Those are the right places to spend your time.
For the enrichment layer that feeds this pipeline, the Clay + Apollo lead enrichment guide covers the waterfall setup, signal scoring, and fallback stack that makes the personalization actually land. For Claude-based openers instead of GPT-4o, the Clay + Claude cold outreach guide uses the same Instantly integration with Anthropic’s API.