> ## Documentation Index
> Fetch the complete documentation index at: https://docs.carewithemma.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Abandonment Recovery Tools

> The tools Emma calls mid-conversation when following up on an abandoned checkout or form

Same calling convention as the other Live-Call Tools pages — authenticated with x-vapi-secret, not a dashboard JWT.

<Note>
  Recovery calls start automatically when your platform sends a `forms.abandoned` event to `POST /n8n/webhook/{clinicId}/forms-abandoned`, directly or through an automation-tool relay. The dashboard also has a manual test trigger.
</Note>

```text theme={null}
POST /abandonment-recovery-tools/:toolName
```

## record\_abandonment\_barrier

Records why the caller stopped partway through — called once, as soon as Emma understands the reason.

<ParamField body="primaryBarrier" type="string" required>
  e.g. "insurance\_question"
</ParamField>

<ParamField body="secondaryBarrier" type="string">
  e.g. "cost\_concern"
</ParamField>

<ParamField body="specificQuestion" type="string">
  The caller's actual question, verbatim
</ParamField>

<ParamField body="knowledgeTopic" type="string">
  The Knowledge Base topic Emma used to answer, if any
</ParamField>

```json Result theme={null}
{ "success": true }
```

Fails with error: "no active recovery case found for this call" if there's no case currently in a CALLING state for this patient — this only works mid-call, not standalone.

## resolve\_recovery\_outcome

Records how the call ended — called once, near the end, regardless of outcome. This is also what stops the recovery scheduler from calling this patient again.

<ParamField body="recoveryAction" type="string">
  e.g. "answered\_question"
</ParamField>

<ParamField body="offerPresented" type="string">
  e.g. "none"
</ParamField>

<ParamField body="escalationType" type="string">
  Set when the call escalated to staff
</ParamField>

<ParamField body="resumeLinkSent" type="boolean" required />

<ParamField body="recoveryStatus" type="string" required>
  e.g. "recovered"
</ParamField>

```json Result theme={null}
{ "success": true }
```

Also fires an outcome event to your clinic's n8n webhook, if configured.

## check\_recovery\_session\_status

Re-reads the patient's current form/checkout progress live, mid-call — lets Emma confirm what's actually true right now rather than trusting the caller's own account or an async webhook that may not have landed yet. No arguments.

```json Result theme={null}
{ "success": true, "completionPercentage": 60, "formCompleted": false, "checkoutCompleted": false }
```

## send\_resume\_link

<Warning>
  This one isn't wired to a real delivery channel yet — it always returns success without actually sending anything. It exists so Emma can confirm a method and tell the caller it's done, while the underlying SMS/email send gets built.
</Warning>

<ParamField body="method" type="string">
  "sms" or "email"
</ParamField>

```json Result theme={null}
{ "success": true, "method": "sms" }
```
