Marketing Automation
email marketing
How to Create AI-Powered Re-engagement Campaigns
Automatically identify and re-engage inactive subscribers with AI-personalized content.
Jay Banlasan
The AI Systems Guy
This ai re-engagement email campaign automation system identifies quiet subscribers and brings them back with content matched to why they signed up. I run this monthly across all accounts.
Most re-engagement fails because it sends "we miss you" to everyone. This system personalizes the approach.
What You Need Before Starting
- Python 3.8+ with requests
- Anthropic API key
- ESP API with engagement data
- At least 90 days of email history
Step 1: Identify Inactive Subscribers
import pandas as pd
from datetime import datetime, timedelta
def find_inactive(df, days=60):
cutoff = datetime.now() - timedelta(days=days)
return df[
(pd.to_datetime(df["last_open"]) < cutoff) &
(df["total_opens"] > 0)
]
Step 2: Classify Inactivity Reason
import anthropic
from dotenv import load_dotenv
load_dotenv()
client = anthropic.Anthropic()
def classify(subscriber):
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=256,
system="Classify inactivity reason: content_mismatch, frequency_fatigue, lifecycle_complete, seasonal, unknown.",
messages=[{"role": "user", "content": f"Last open: {subscriber['last_open']}. Opens: {subscriber['total_opens']}. Last click: {subscriber['last_click_topic']}."}]
)
return message.content[0].text
Step 3: Generate Personalized Re-engagement
def create_reengagement(subscriber, reason):
message = client.messages.create(
model="claude-sonnet-4-20250514",
max_tokens=512,
system="Write re-engagement email. Short, direct, personal. Give a reason to come back. No guilt trips.",
messages=[{"role": "user", "content": f"Name: {subscriber['name']}. Reason: {reason}. Interest: {subscriber['last_click_topic']}."}]
)
return message.content[0].text
Step 4: Run the Campaign
def run_reengagement(inactive_list):
for sub in inactive_list:
reason = classify(sub)
email = create_reengagement(sub, reason)
schedule_send(sub["email"], email, delay=0)
What to Build Next
Track which re-engagement reasons respond best to which email types. Feed that back into the classifier.
Related Reading
- AI for Email Marketing Automation - how AI transforms email marketing operations
- Lead Scoring with AI - framework for deciding what to automate first
- AI in CRM: Beyond Contact Storage - framework for deciding what to automate first
Want this system built for your business?
Get a free assessment. We will map every system your business needs and show you the ROI.
Get Your Free Assessment