You have a list of five thousand subscribers. You know roughly three hundred of them are in-market right now. Another eight hundred bought something last quarter and might buy again. The rest are cold or curious. Each group needs a different message. But your email platform can only send one campaign at a time, so you pick the message that works best for the middle. The hot leads get something too generic. The cold leads get something too aggressive. Everyone gets a compromise.

That is the cost of sending batch emails without personalisation. You are leaving money on the table with every send. The fix is not hiring a copywriter for every segment. It is using AI to write personalised content at the individual level based on what each subscriber has actually done.

ChatGPT combined with Mailchimp gives you the scale to treat every subscriber like a segment of one. Here is how to set it up.

What you will need

Step 1: Export audience data and understand your segments

Start by exporting your Mailchimp audience data. Go to Audience, then Manage Audience, then Export. Choose the fields that matter for personalisation: first name, tags, purchase history, last open date, and product categories viewed.

What to export

Segmentation fields

The most useful fields for personalisation are: tags (behaviour-based), number of purchases, average order value, last campaign open date, and any custom fields like company size or industry. You do not need email engagement data from every campaign. Just the last open date tells you if someone is actively reading.

Once you have the export, group your subscribers into rough segments. High-intent buyers are subscribers who purchased in the last 90 days. Warm leads are subscribers who opened your last 3 emails but have not purchased. Cold subscribers have not opened anything in 6 months. Each segment gets its own prompt approach.

Step 2: Build segment-specific prompts for ChatGPT

Open ChatGPT or use the API playground. Write a base prompt template for each segment. The key is to give ChatGPT enough context about the subscriber without overwhelming it with data.

Prompt template

High-intent buyer prompt

Write a short personalised email for a subscriber who:
- Purchased a [product category] 60 days ago
- Has an average order value of AUD [amount]
- Last opened an email 5 days ago

The goal is to encourage a repeat purchase with a new product launch. 
Keep it under 120 words. Use a warm, helpful tone. Suggest one specific
product that complements what they already bought. Include a clear CTA
button labelled "See what is new."

Brand voice: expert but friendly, no hype, no exclamation marks.

Repeat this for each segment. The warm lead prompt should focus on building trust and offering a low-commitment entry point. The cold subscriber prompt should offer something valuable for free (a guide, a discount, a consultation) to re-engage them without pressure.

Step 3: Generate personalised email content in batches

Use the ChatGPT API to generate personalised content for each subscriber. Loop through your exported CSV and send each row to the API with the matching segment prompt. Store the results in a new CSV column.

The following Python script runs on any machine with an internet connection. It reads your subscriber CSV, sends each row to the ChatGPT API, and writes the personalised email into a new column.

import csv
import json
import urllib.request
import os

api_key = os.environ["OPENAI_API_KEY"]

with open("subscribers.csv") as f:
    reader = csv.DictReader(f)
    rows = list(reader)

for row in rows:
    prompt = f"""Write a short personalised email for a subscriber who:
- Tag: {row['tags']}
- Last purchased: {row['last_purchase']}
- Segment: {row['segment']}
Keep it under 120 words. Warm helpful tone."""

    payload = json.dumps({
        "model": "gpt-4o-mini",
        "messages": [{"role": "user", "content": prompt}],
        "max_tokens": 300
    }).encode()

    req = urllib.request.Request(
        "https://api.openai.com/v1/chat/completions",
        data=payload,
        headers={"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
    )

    with urllib.request.urlopen(req) as resp:
        data = json.loads(resp.read())
        row["personalised_email"] = data["choices"][0]["message"]["content"]
Cost estimate

API pricing

Using GPT-4o-mini, each personalised email costs about 0.3 cents. A campaign of 5000 subscribers runs roughly 15 dollars in API costs. GPT-4o is more expensive (about 2 cents per email) but produces higher quality copy for high-value segments.

Step 4: Import content into Mailchimp and send

Once your CSV has the personalised email content, import it back into Mailchimp as a new custom field. Then create a regular campaign and use Mailchimp's conditional merge tags to pull the right personalisation for each subscriber.

Alternatively, use Mailchimp's built-in automation to trigger the campaign based on behaviour. Create a new automation, set the trigger to "subscriber added to segment," and paste the relevant personalised content into the email builder.

What changes when it is wired up

Before personalisation: one email for everyone. Low relevance for most subscribers. Opens and clicks decline over time as subscribers learn the emails are not for them.

After personalisation: each subscriber gets content that reflects their actual behaviour and stage. High-intent buyers see new products. Warm leads see social proof and case studies. Cold subscribers get a low-pressure re-engagement offer.

The data backs this up. McKinsey research shows that personalisation can reduce acquisition costs by up to 50 percent and lift revenue by 5 to 15 percent. The combination of ChatGPT's language capability with Mailchimp's delivery infrastructure puts that within reach of any marketing team.

For a deeper look at how email personalisation fits into a broader nurture strategy, see our guide on AI email nurture with Claude and HubSpot and the lead qualification agent that routes hot leads to the right rep.

Frequently asked questions

Will ChatGPT write emails that sound like our brand?
Yes, if you give it a brand voice brief in the prompt. Include a short paragraph describing your tone, do's and don'ts, and a sample email you have already sent and loved. The more context you give, the closer the output matches your voice.

How much does it cost to personalise emails with ChatGPT?
The ChatGPT API costs roughly 0.3 to 0.8 cents per personalised email depending on length. For a campaign of 5000 personalised emails, that is about 15 to 40 dollars in API costs. GPT-4o-mini is the most cost-effective option for bulk personalisation.

Can I automate this completely with n8n or Make?
Absolutely. You can build an n8n workflow that listens for new Mailchimp subscribers, sends their data to ChatGPT, and updates the Mailchimp subscriber with personalised content tags. This makes the whole process hands-off after initial setup.

Does personalisation at scale actually improve results?
According to McKinsey, personalisation can reduce acquisition costs by up to 50 percent, lift revenue by 5 to 15 percent, and increase marketing spend efficiency by 10 to 30 percent.