Renewals and retention

A real conversation before every renewal.

Weeks before a policy or subscription renews, a loop calls with a recap of what the person used, asks how it is going and passes what it hears to your team, while there is still time to act.
The problem

Why people leave quietly

“The renewal notice is our only contact.”

The last thing a member hears before renewing is the new price.

“They don’t know what they used.”

Benefits people used once are forgotten by renewal time.

“We find out why they left after they’ve gone.”

Exit reasons arrive too late to change anything.
How the loop works

How the renewal loop runs

  1. Your system starts it ahead of renewal. It calls the loop weeks before the date, with what the member used this year.
  2. A recap call. A voice loop walks through what they used and asks how it is going.
  3. Memory for context. The loop reads the member’s memory, so the call can mention what they told you before.
  4. Your team gets the answers. The call summary goes to your retention team, with the transcript attached.
renewal-call.tsTypeScript
interface Renewal {
  memberId: string;
  phone: string;
  renewsOn: string;
  used: string[];
}

export class HealthLoop extends Workflow {
  async run(event: HealthEvent<Renewal>, step: HealthStep) {
    const { memberId, phone, renewsOn, used } = event.body;

    const { sessionId } = await step.do("Recap call", async ({ ctx }) => {
      const member = await ctx.USER.getUser({ id: memberId });
      const history = await member.getMemory();
      return ctx.startVoice({
        loopId: "renewal-recap",
        user: member,
        to: phone,
        body: { renewsOn, used, history },
      });
    });

    const call = await step.waitForVoiceComplete({
      sessionId,
      timeout: "1 hour",
    });

    await step.do("Send to retention", async () => {
      await fetch(`${this.env.CRM_API}/renewals/${memberId}`, {
        method: "POST",
        body: JSON.stringify({ renewsOn, summary: call.summary }),
      });
    });
  }
}
Channels and integrations

What the loop works with

Phone calls. Outbound calls to a phone number, or a browser call from your app. Each call ends with a transcript and a summary.
SMS. One message or up to 500 at once, with opt-out checks and timed delivery.
Member memory. One record per person, shared by every loop, so each journey starts with what the last one learned.
Your own systems. Loops call your endpoints to read data and send results back. Your systems start loops with one authenticated API call.
Data and compliance

How data is handled

Your own data plane. Each organisation’s loops, runs, members and keys live in that organisation’s own store, apart from every other customer.
A record of every run. The trigger, each step and its result, every tool call, every log line and every error are kept for your team to review.
Keys you control. An API key only reaches loops in the organisation that made it, and you can revoke it at any time. Secrets are encrypted and only admins can see them.
FAQ

Questions

How do Health Loops help with renewals and retention?

Your system starts a loop weeks before a renewal. It calls the member or customer with a recap of what they used, asks how it is going, and sends the summary to your retention team while there is still time to act.

Can the loop offer a discount or change a plan?

Only if you build that into it and connect it to your systems. The simplest setup passes the request to a person.

Does this work for subscriptions as well as policies?

Yes. The loop only needs the renewal date and what the person used, from your policy system, store or CRM.

See this loop run on your own journey.