Daily Kajabi churn-rescue briefing with Gmail save drafts

Every weekday at 8am, get a Slack triage of Kajabi customers who just churned or had a payment fail, plus a personalized save draft ready to send.

Agentic Task
KajabiGmailSlack BotSalesCustomer SupportDaily DigestsEmail AutomationNotifications & Alerts

Every weekday at 8am in my timezone, build a Kajabi churn-rescue briefing for my retention team. The goal: surface every customer who churned or whose subscription payment is failing in the last 24 hours, draft a save email for each one in Gmail, and post a single triage thread to Slack so a CSM can review and send.

Step 1: Pull at-risk purchases from Kajabi. Call Kajabi List Purchases filtered to purchases that were deactivated, cancelled, refunded, or have a failing/past-due payment status in the last 24 hours. Deduplicate by customer (one entry per customer, keeping the highest-severity reason).

Step 2: Enrich each at-risk customer. For every customer in the list, call Kajabi Get Customer Details to fetch their name, email, and lifetime offers, and call Kajabi Get Offer Details for the specific offer tied to the failing or cancelled purchase. Estimate lifetime value from their past purchases (sum of paid amounts across their offers).

Step 3: For each at-risk customer, use Gmail Create a Draft to draft a personalized save email from me, addressed to the customer. The email should be short and warm, never discount-led. Name the specific offer they're losing access to, acknowledge what happened (failed payment vs. cancellation vs. refund), ask what changed, and offer two concrete paths: update their payment method, or pause instead of cancel. Sign it from me. Do not send the email — leave it as a draft.

Step 4: Post one Slack Bot Send a Message to a configurable retention channel (default #retention). Format:

• A header line with totals broken out by reason: failed payments, cancellations, refunds.

• One bullet per customer, grouped by reason, sorted highest lifetime value first. Each bullet shows: customer name, offer they're walking away from, lifetime value, suspected reason in plain English (for example, "card declined, 2nd retry"), and a link to the Gmail draft so the CSM can open it, edit, and hit send.

• A closing line with what to do next (review the drafts and send the ones that look right).

Deduping rule: keep a record of which customers were surfaced in yesterday's briefing and skip them in today's. Do not create a duplicate Gmail draft for a customer already drafted in the last 48 hours.

Edge case: if there are zero at-risk customers, still post a short Slack message confirming the check ran and the count is zero, so the team knows the workflow is healthy.

Configurable inputs: the retention Slack channel, the sender name/signature on the email, the at-risk lookback window (default 24 hours), and the timezone for the 8am trigger.

Additional information

What does this prompt do?
  • Spots Kajabi customers in the last 24 hours who cancelled, were deactivated, or whose subscription payment is failing, so your team sees every at-risk account in one place.
  • Writes a short, warm save email to each customer, named to the specific offer they are losing, with a path to update payment or pause instead of cancel.
  • Posts a single morning thread to your retention Slack channel with totals by reason, the highest lifetime-value customers first, and a link to each Gmail draft so the team can review and hit send.
  • Skips anyone already surfaced the day before so the same customer is not emailed twice.
What do I need to use this?
  • A Kajabi account on the Pro Plan (or the Public API add-on) with permission to read customers, offers, and purchases.
  • A Gmail account for the person who should appear as the sender of the save emails.
  • A Slack workspace with a channel for your retention or customer success team (for example, #retention).
  • Roughly which Slack channel to post in, and the name and signature you want on the outgoing emails.
How can I customize it?
  • Change the send time or the days it runs (for example, 7am Monday through Friday, or seven days a week).
  • Point it at a different Slack channel, or send a DM to one owner instead of a channel post.
  • Tune the email voice and offer: keep it discount-free, add a one-time win-back coupon, or swap pause for a downgrade option.
  • Adjust the at-risk window (last 24 hours by default), the priority order, or the rule that hides repeat customers.

Frequently asked questions

Does this actually send the save emails automatically?
No. It creates a Gmail draft for each at-risk customer and links to it from Slack. A human reviews the draft and clicks send, so nothing goes out without you signing off.
Will it email the same customer two days in a row?
No. The briefing remembers who appeared in yesterday's list and skips them, so a customer with a multi-day payment retry only gets one outreach from this workflow.
Do I need to be on a paid Kajabi plan?
Yes. Kajabi's Public API is included with the Pro Plan or available as a paid add-on on other plans. Only account owners or subowners can generate the credentials.
What if no one churned yesterday?
The Slack message still posts so your team knows the check ran. It just reads as a clean day with zero at-risk customers.
Can I change the Slack channel it posts to?
Yes. The channel is a setting on the workflow. Point it at any public or private channel where the retention bot has been added.

Stop losing Kajabi customers to silent payment failures.

Connect Kajabi, Gmail, and Slack once, and Geni runs your churn-rescue briefing every weekday at 8am.