AI crafts personalized appeals with impact stories and tailored ask amounts. Development officers review every message before it reaches donors.
Fundraising emails need emotional storytelling and personalized asks to convert. Generic appeals with identical ask amounts underperform dramatically. But writing individually personalized outreach with impact stories relevant to each donor's interests and appropriate ask amounts based on giving capacity is prohibitively time-consuming.
MultiMail's AI agent segments donors by giving history, interests, and capacity, then drafts personalized fundraising appeals with relevant impact stories and tailored ask amounts. With gated_send oversight, development officers review messaging accuracy and donor appropriateness before delivery.
The AI segments donors by giving history, interests, capacity, and engagement level. Major donors, recurring donors, and lapsed donors each receive different messaging strategies.
The agent selects an impact story relevant to the donor's stated interests and calibrates the ask amount based on their giving history and estimated capacity.
With gated_send, development officers review the ask amount, story selection, and tone for each donor. They apply relationship context that data alone can't capture.
Approved appeals are sent. The AI monitors for donor replies, donation confirmations, and questions to route to the development team.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def send_fundraising_appeal(donor: dict, campaign: dict):
"cm"># Calibrate ask based on giving history
if donor["last_gift"] > 500:
ask = int(donor["last_gift"] * 1.2)
elif donor["last_gift"] > 0:
ask = int(donor["last_gift"] * 1.1)
else:
ask = 50
body = (
f"Dear {donor[&"cm">#039;name']},\n\n"
f"{campaign[&"cm">#039;impact_story']}\n\n"
f"Last year, your ${donor[&"cm">#039;last_gift']:.0f} donation helped "
f"{campaign[&"cm">#039;last_year_impact']}.\n\n"
f"This year, a gift of ${ask} would {campaign[&"cm">#039;projected_impact']}.\n\n"
f"Donate now: {campaign[&"cm">#039;donate_url']}\n\n"
f"Thank you for making this work possible."
)
return requests.post(
f"{API}/send",
headers=HEADERS,
json={
"from": "[email protected]",
"to": donor["email"],
"subject": campaign["subject"],
"text_body": body
}
).json()Draft a fundraising appeal with personalized impact story and calibrated ask amount.
import requests
API = "https://api.multimail.dev/v1"
HEADERS = {"Authorization": "Bearer mm_live_xxx"}
def segment_donors(campaign_id: str):
donors = requests.get(
f"{API}/contacts/search",
headers=HEADERS,
params={"tags": "donor"}
).json()
for donor in donors["contacts"]:
tags = [f"campaign-{campaign_id}"]
history = get_giving_history(donor["email"])
if history["total_giving"] > 5000:
tags.append("major-donor")
elif history["total_giving"] > 500:
tags.append("mid-level")
else:
tags.append("grassroots")
requests.post(
f"{API}/contacts/{donor[&"cm">#039;id']}/tags",
headers=HEADERS,
json={"tags": tags}
)
print(f"Segmented {len(donors[&"cm">#039;contacts'])} donors")Tag donors by giving capacity and interest area for targeted fundraising appeals.
"cm">// Fundraising campaign via MCP
"cm">// 1. Find donors by interest
const donors = await mcp.search_contacts({
tags: ["donor", "interest-education"]
});
"cm">// 2. Send personalized appeal
for (const donor of donors.contacts) {
const history = await getGivingHistory(donor.email);
const askAmount = Math.round(history.lastGift * 1.15);
await mcp.send_email({
from: "[email protected]",
to: donor.email,
subject: "Maria can read now, thanks to donors like you",
text_body: `Dear ${donor.name}, your $${history.lastGift} gift helped fund reading programs for 50 children. A gift of $${askAmount} would expand the program...`
});
}Use MultiMail MCP tools for fundraising campaign management.
Personalized appeals with relevant impact stories and calibrated ask amounts convert 3-5x better than generic mass emails.
AI calibrates ask amounts based on donor history and capacity, avoiding the twin failures of asking too little (leaving money on the table) or too much (alienating donors).
Gated send lets development officers apply relationship context — a donor going through a tough year needs a different approach than the data suggests.
Every appeal is logged for state charitable solicitation compliance and FTC endorsement guideline requirements.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a 38-tool MCP server. Formally verified in Lean 4.