Member onboarding

Welcome every new member in their first week.

A new policy, patient or subscription starts a loop. It calls the person, explains what they have, offers a wellness scan, remembers what they need and hands your team a summary.
The problem

Why onboarding stalls

“Welcome packs go unread.”

A PDF in an inbox doesn’t tell anyone what to do next.

“We meet members when they claim.”

The first real conversation happens at the worst possible moment.

“Every team asks the same questions.”

Sales, service and care each collect the same details again.
How the loop works

How the onboarding loop runs

  1. A new member starts it. Your policy, booking or store system calls the loop with the member’s id and number.
  2. A welcome call. A voice loop calls, explains what the plan or programme includes and asks what they’d like help with.
  3. A baseline scan. The member gets a link to a phone-camera wellness scan, and a snapshot when it’s done.
  4. Memory for later. The call summary goes into the member’s memory, so every later loop starts with context.
  5. A handover. Your team gets the summary in your own system.
welcome.tsTypeScript
interface NewMember { memberId: string; phone: string; plan: string }

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

    const { sessionId } = await step.do("Welcome call", async ({ ctx }) => {
      const member = await ctx.USER.getUser({ id: memberId });
      return ctx.startVoice({
        loopId: "welcome-call",
        user: member,
        to: phone,
        body: { plan },
      });
    });

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

    await step.do("Remember", async ({ ctx }) => {
      const member = await ctx.USER.getUser({ id: memberId });
      await member.remember(`Welcome call: ${call.summary}`);
    });

    await step.do("Hand over", async () => {
      await fetch(`${this.env.CRM_API}/members/${memberId}/notes`, {
        method: "POST",
        body: JSON.stringify({ 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.
Wellness scans. A phone-camera scan behind a consent screen, with a hosted PDF report. The scan link works from your app, a text message or WhatsApp.
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

What is an onboarding loop?

An onboarding loop is a Health Loop that starts when someone joins: it calls them, explains what they have, offers a wellness scan, saves what they need to their memory and hands your team a summary.

What if the member doesn’t answer the welcome call?

The call ends with a summary of what happened, and the loop decides what comes next. A common pattern is a text with the scan link and a second call later, started by your system.

Does onboarding replace our welcome pack?

It can sit beside it. The loop can text a link to your welcome pack, but the call and the scan are what start the relationship.

See this loop run on your own journey.