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

# Activity Log

> Two logs on one page, one for members who cancelled and one for people who signed up and never paid.

**Activity** holds two tables, each in its own card. **Cancellation recovery** lists members who had a subscription and lost it. **Signup recovery** lists people who signed up and never paid.

Each card names what starts the recovery it lists, and carries its own search, date filter, outcome filter, and pager. The two cards are independent. A search, a filter, or a date range on one card leaves the other alone.

Click any row on either card to open that member's profile. See [Member profiles](#member-profiles).

## Cancellation recovery

The card reads "Starts when a member cancels or loses access. We call to win them back." Underneath it lists the workflow triggers that feed the table: **A subscriber cancels**, **A trial ends without converting**, and **Member loses access**.

**Every** member enrolled in one of those workflows gets a row. That includes the ones we never got hold of, whose row reads **Couldn't be reached**.

### The table

Each row carries the date, the member's name, their id at the store that bills them, and their plan. It also carries why they cancelled, when their call is due, and a money chip that says exactly where the dollars stand. The id links to that record in Stripe or RevenueCat. **Paid** carries the amount and means the money is charged. **Pending** carries the amount and the date it collects, which means the member agreed and nothing is charged yet. **Lost** means they cancelled again.

The **Call due** column only speaks when there is something to act on:

* "Access ends · Aug 6" while the call is still ahead.
* A red "Overdue · Jul 23" when access has already ended and we still never reached them.
* Nothing at all for someone we did reach.

### Filters and paging

Three controls sit inside the card, between its heading and the rows:

* A **search box** that finds any member by name, phone, or email
* A **date** filter (This week / Last week / Month to date / Last 30 days / All time, every option labeled with the dates it covers)
* A **status** filter listing each outcome with how many members are in it

A **Called back** toggle appears alongside them once anyone has called your recovery number, and a **Texted back** toggle once anyone has texted it. See below.

A **Clear all** button appears whenever a filter is on. Sort by clicking the **Date**, **Member**, or **Outcome** column headers. Sorting by Outcome puts your strongest results first.

The table is paged from the **Rows** menu underneath it: 10 members per page by default, or 50 or 100. A summary line above that pager still totals the members we couldn't reach, and how many of them got the offer by text.

## Members who called you back

If a member calls your [recovery number](/docs/revenue-recovery/the-call/calling-back) back, that call shows up here too. Their row carries a small **phone marker** next to the outcome, with a count when they called more than once. The row jumps to the top as the newest thing that happened. The **Called back** toggle inside the card narrows to exactly those members.

Calling back is treated as **contact, not an outcome**. Someone who called back and then resubscribed still reads **Paid** with the amount, and still counts as recovered. The marker sits beside that result rather than replacing it. The only members whose outcome reads **Called back** are the ones where that call is all that has happened so far. Nobody reached them, and they picked up the phone themselves. Those used to be counted as **Couldn't be reached** with no row of their own, which was the least accurate thing on the page.

The counts follow that card's date filter, so "called back" on a **This week** view means they called this week.

Below the Cancellation recovery card, a card lists **other calls to your recovery number**. These are callers we couldn't match to anyone in your recovery list, usually because they're calling from a different number. If Revenue Recovery answers on an AI Receptionist you already had, that card links to your receptionist inbox instead of listing calls here. That number also takes your regular business calls.

## Members who texted you back

[Texts to your recovery number](/docs/revenue-recovery/the-call/texting-back) work the same way. The member's row carries a small **message marker** next to the outcome, with a count when they texted more than once. The row moves up as the newest thing that happened. The **Texted back** toggle narrows to exactly those members. The two toggles combine: turn both on and you get the members who did both. These counts follow that card's date filter as well.

Texting back is **contact, not an outcome**, for the same reason calling back is. The only members whose outcome reads **Texted back** are the ones where that text is all that has happened so far. Nobody reached them, and they texted in themselves. That's what the status filter's **Only texted back** option shows. The **Texted back** toggle is broader: it covers everyone who texted, whatever their outcome turned out to be. The two therefore show different numbers on purpose.

A member who replies **STOP** gets an **Opted out** badge beside their name. It sits with the member rather than with the result, because it isn't a result. Someone can opt out of your texts and still have come back and paid. Their row then reads **Paid** with the amount, and the badge alongside it. On the members nobody ever reached it's often the answer to why they went quiet.

Below that, a second card counts **other people who texted your recovery number**. These are texters we couldn't match to anyone in your recovery list. Each one shows the number they texted from, when they last texted, and how many texts they've sent. An **Opted out** badge appears if they sent STOP. It's one row per person, not per message. If Revenue Recovery answers on an AI Receptionist you already had, that card says so and lists nobody. That number also takes texts from everyone else who contacts your business.

## Signup recovery

The second card lists the people who hit your paywall and didn't pay. It reads "Starts when someone hits your paywall and doesn't pay. After your wait time, we call them", over its one trigger: **A user signs up but doesn't pay**. See [Signup Recovery](/docs/revenue-recovery/workflows/signup-recovery) for the event your backend sends and the wait that follows it.

These people are never rows on the Cancellation recovery table. They never had a subscription, so its billing, plan, and cancellation columns would be empty for every one of them.

### The table

Four columns: **Date**, **Person**, **What happened**, and **Outcome**.

**Person** is the name your signup event carried. Without a name it's their phone number, and without either it reads **No contact details yet**.

**What happened** is one plain sentence, for example "Waiting on a phone number from your signup flow". **Outcome** is the badge beside it:

| Outcome                 | What it means                                                                                                                                                    |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Waiting**             | Still inside your wait time, or still waiting on a phone number from your signup flow.                                                                           |
| **Due to be contacted** | The wait is over and we checked. They still have not paid, and nothing has gone out yet.                                                                         |
| **Not contacted**       | We never called. The sentence beside the badge names the reason.                                                                                                 |
| **Reached**             | We reached them, and there's no purchase yet.                                                                                                                    |
| **Paid**                | They bought after we reached them. The badge carries the amount when a store demonstrably charged it, and stays a plain **Paid** when we can't prove the figure. |
| **Paid on their own**   | They paid during the wait, so we stopped. Not counted, not charged.                                                                                              |

The badge and the sentence come from the same reading of the signup that produces the funnel counts on [Analytics](/docs/revenue-recovery/analytics/overview). This table can't tell a different story from those numbers.

### Filters and paging

Three controls sit inside this card as well, and they narrow this table only:

* A **search box** covering name, phone, and the What happened sentence
* A **date** filter, this card's own, with the same options as the one above
* An **Outcome** filter listing each outcome with how many signups are in it

Signups reach out too, so this card carries the same two toggles the card above does. A **Called back** toggle appears once one of these people has called your recovery number, and a **Texted back** toggle once one has texted it. Their rows carry the matching phone or message marker beside the outcome, and an **Opted out** badge beside the name when they sent STOP.

Sort by clicking the **Date** header. The **Rows** menu pages the table: 10 signups per page by default, or 25 or 50.

When your filters match nothing, the card stays put and says so. **Clear filters** puts the search and the outcome back. When it's the date range that emptied the table, the card says that instead and offers **Show all time**. The card is missing altogether for a merchant with no signup recovery at all, rather than showing an empty table.

## Members losing access today

A collapsed **"N members lose access today"** summary sits at the bottom of the page. Expand it for the list. When no lapse-day workflow is set up, it says so plainly rather than implying calls failed today.

## Member profiles

Every member's story (the calls, the texts, the recording, and the transcript) lives right inside Revenue Recovery. Click any row on either Activity table, or in the Analytics recovered list, and the member's profile drawer opens in place:

* A timeline of what happened, including every time they called or texted you
* The call recording with a scrubbable player, plus a player for each of their callbacks
* The transcript highlighted line-by-line as the recording plays (tap any transcript line to jump the audio there)
* The text conversation, if they texted your recovery number. It shows both sides, oldest message first, and opens on the latest few with a button for the earlier ones. A note appears when they sent STOP
* The member's full contact details (their real phone and email, because these people came from your own billing account)

A signup's timeline opens on "Signed up, didn't pay" rather than on a cancellation, because that's what happened to them.

If the member re-cancelled, the drawer says it in one plain sentence: which charge won't be collected and when it was due.
