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

# Safety

> Read number Health in Console, review recorded findings, report a ban, and choose who gets notified.

**Safety** shows each number's latest present Health estimate, recorded findings, and actions in force. Open a project and select **Safety** in the
sidebar.

Polymorfa estimates Health for eligible production Linked Device sessions. Test
numbers, Cloud API sessions, and simulated sessions remain **Unknown**.

Five tiles at the top count the numbers in each Health band. They do not fold
retained finding rows into the current Health totals. The tiles count every number in the project, not the page of the table
you are looking at. Above 2,000 numbers in one project, Console reads the first
2,000 and prints a line saying so beside the tiles.

**Collection by number** shows whether each number has a fresh, stale,
unsupported, or absent telemetry record. Select a number there to open its
latest snapshot and signal history.

For the score itself, the bands, and what Polymorfa does and does not collect,
see [BanSafe](/guides/bansafe/overview).

## The Safety page

The page opens on the health of every number in the project. Select a number to
read its detail beside the table, in the order you need it:

1. **Health** — the number's latest estimate out of 100, its source, estimator
   version, fresh-evidence coverage, reliability, deductions, and evaluation time.
2. **Telemetry collection** — whether recent records are fresh and the bounded
   aggregate signals in each retained snapshot. **Not measured** is distinct
   from a measured zero.
3. **Recorded findings** — retained observations from the former conduct
   evaluator, with the last time each was observed. They are separate from the
   current Health estimate and are not continuously refreshed by it.
4. **Safe Mode for this number** — how this number behaves while it sends, and
   what it reports it is running. See [Safe Mode](#safe-mode).
5. **Health over time** — the number's health across recent evaluations.
6. **Warm-up plan for this number** — what the number may send today and the
   ramp it is on. See [Warm-up plan](#warm-up-plan).
7. **What WhatsApp did** — every restriction recorded on the number: what it
   was, when it started, when it ends if it does, and whether Polymorfa
   observed it or your team reported it. **Report a ban** sits beside the
   heading. See [Report a ban](#report-a-ban).
8. **Ban Insurance** — the claims filed on this number's bans. See
   [Ban Insurance](#ban-insurance).
   Below the table, **Safe Mode** sets the ceiling for every number in the
   project, **Warm-up plan** sets how much a new number may send each day, and
   **Health rule** sets what happens when a session's Health falls below a chosen
   score.

**Health rule activity** sits below the project rule. It shows the number,
action, public status or outcome, triggering Health and threshold, estimator,
and completion time. This project-wide history remains visible after a rule
stops or logs out a number.

When Polymorfa has limited the number, a banner above the findings names the
limit and the exact remaining requirement to lift it, for example *"This lifts after 48 hourly safety checks meet the restriction's recovery threshold. 12 of 48 done, and 2 findings must resolve first."* See
[Restrictions](/guides/bansafe/enforcement).

Health is unavailable until the selected estimator can evaluate enough fresh
evidence. Console shows the reason and the time of the last estimate; it never
turns an unavailable estimate into zero.

The launch source reads **Rules-based estimate** with reliability
**Rules-based**. **Why this score** shows the total deduction, the deductions
for conduct, delivery, connection, and observed condition, and the largest
factors. A group with too little fresh evidence says so instead of reporting a
zero deduction. Learned Health remains on the roadmap while Polymorfa collects
and validates production data.

A check that could not be measured on this number shows an em dash and the
reason, never a green check.

The title of a finding, the sentence describing what was seen, and the fix all
come from Polymorfa with the finding, so a new check reads correctly in Console
the day it starts running.

## The Health column on Numbers

The **Numbers** page carries a **Health** column beside **Connection**. It
shows the band, the score, and a badge for any
restriction Polymorfa has applied to the number. Sort by the score or filter by
the band the way you use any other column, and select a number to open its
details beside the table. A number BanSafe has no measurement for, such as a
testing number, reads **Not available**.

Connection and Health are separate columns and mean different things.
**Connection** is what WhatsApp and the runtime are doing with the number;
**Health** is the latest supported estimate of the account's present state. A
Polymorfa restriction never appears in the Connection cell, so it can never be
mistaken for a WhatsApp ban. See [Sessions](/console/sessions).

## Safe Mode

**Safe Mode** sits below the number list. It decides how the numbers in this
project behave while they send: whether they go online, whether they show a
typing indicator, whether they mark messages as read, and how far apart
messages go out.

Every setting starts at its least visible value and nothing changes until you
save a different one. Presence, typing indicators and read receipts are visible
to the people the number messages and cannot be taken back, so Console prints
what a contact sees under each control before you choose it. Read
[Safe Mode](/guides/bansafe/safe-mode) for the behaviour behind each value.

| Control           | Choices                                                               |
| ----------------- | --------------------------------------------------------------------- |
| **Presence**      | **Dark**, **Online while sending**, **Online during set hours**       |
| **Typing**        | **Off**, **Before each text message**, **Before every message**       |
| **Read receipts** | **Off**, **Chats this number replies to**, **Every incoming message** |
| **Pacing**        | **Off**, **Varied gaps**, **Conversation pace**                       |

Choosing **Online during set hours** adds **Online from** and **Online until**.
Both are whole hours from 0 to 23, read in each number's own local time. They
are on the project only; a single number cannot set its own hours.

Select **Save Safe Mode** to store the project ceiling. Nothing is sent until
you do, and the button stays inactive while there is nothing to save.

### One number's Safe Mode

**Safe Mode for this number** is in the panel beside the table, under the
number's findings. A number may be quieter than the project, never more
visible, so each control offers **Follow the project** and the values at or
below the project ceiling. The values above it are not offered.

The panel also prints two lines you cannot edit:

* **In force on this number** — the settings the number is being asked to run.
* **Reported by this number** — the settings the number itself last reported.
  When the two differ, Console says so; the number applies the change when it
  next confirms. A number that is disconnected reports nothing.

Select **Save this number** to store the override.

### What Console says when a change is refused

| What you see                                                                   | What it means                                                                                                                                  |
| ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------- |
| Safe Mode is part of BanSafe Lite, which is not included on this number's plan | Safe Mode is included in BanSafe Lite (Standard and Pro). The controls are disabled until the number is on a plan that includes it.            |
| The setting is saved, and the number has not confirmed it yet                  | The change is stored. Polymorfa keeps delivering it, and it applies as soon as the number confirms or reconnects. Nothing was lost.            |
| A setting cannot be more visible than the project ceiling                      | The project ceiling was lowered after the page loaded. Raise the ceiling under **Safe Mode**, or reload and choose a value the ceiling allows. |

### When the controls are read-only

Console says why before you change anything, and hides the save button.

When the number's plan does not include BanSafe Lite, the controls are disabled
under *"Safe Mode is part of BanSafe Lite, which is not included on this
number's plan. Safe Mode is part of BanSafe Lite, included on Standard and Pro numbers."* A team
member without owner, admin, or developer access sees them disabled under
*"Changing Safe Mode needs team owner, admin, or developer access."* Every
value stays on screen and readable in both cases.

## Warm-up plan

**Warm-up plan** sits below **Safe Mode**. While it is on, every number in the
project has a daily message allowance that starts small on the number's first
day, grows over its first weeks, and falls when the number's health does. It is
off until you turn it on. Read
[Warm-up plan](/guides/bansafe/warm-up-plan) for the allowance itself.

| Control                              | What it sets                                              |
| ------------------------------------ | --------------------------------------------------------- |
| **Warm-up plan on for this project** | Whether every number in the project has a daily allowance |
| **Messages on the first day**        | 1 to 2,000                                                |
| **Days to reach the cap**            | 1 to 90                                                   |

Console prints the ramp under the two controls as you change them, for example
*"A number in good health climbs from 20 messages on its first day to 2,000
over 14 days."* The allowance resets at midnight in each number's own country.
A number whose age Polymorfa cannot prove starts the ramp on the day you turn
the plan on.

Select **Save warm-up plan** to store it. Nothing is sent until you do, and the
button stays inactive while there is nothing to save.

### One number's warm-up plan

**Warm-up plan for this number** is in the panel beside the table, under the
number's health chart. It reads **Allowed today**, **Sent today**, **Day of the
ramp**, and when the allowance **Resets**. The chart shows the projected
allowance across the ramp and marks today's durable usage. **Sent today** reads
`0` before the first reserved send of the day. A granted slot remains counted
if transport later fails or its outcome cannot be confirmed. The Health
adjustment uses only a fresh estimate from the selected estimator; without one,
the tenure ramp remains in force without an additional Health reduction.

**Ramp starts from** identifies the evidence behind the day count: **Message
history**, **Link date**, or **Plan start**. **Not verified** means Polymorfa
cannot establish the source of the start date. A plan start is a fallback for
the allowance calculation; it does not prove the number's age.

When the project has no warm-up plan, the panel says so and draws no chart.

### What Console says when a change is refused

| What you see                                                                                                                               | What it means                                                                                                                                 |
| ------------------------------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- |
| The warm-up plan is part of BanSafe Lite, which is not included on this project's plan                                                     | The warm-up plan is included in BanSafe Lite (Standard and Pro). The controls are disabled until the project is on a plan that includes it.   |
| You can turn the warm-up plan off. Turning it back on needs a plan that includes BanSafe Lite                                              | The plan is on and the project no longer includes it. You are never held to an allowance you cannot remove, so the switch still turns it off. |
| Saved. A number has not confirmed it yet, so Polymorfa keeps trying and the allowance applies as soon as the number confirms or reconnects | The plan is stored. Polymorfa keeps delivering it to the numbers that are connected. Nothing was lost.                                        |

### When the controls are read-only

A team member without owner, admin, or developer access sees the controls
disabled under *"Changing the warm-up plan needs team owner, admin, or
developer access."* Every value stays on screen and readable.

## Health rule

**Health rule** applies the same threshold and actions to every session in the
project. It is off until you enable and save it.

Move the slider to choose a score from 0 to 100. The rule applies when a
session's available Health is below that score. A score equal to the threshold
does not apply the rule. Unknown or stale Health triggers no action.

Choose one session action:

| Action                 | What happens                                                                                                      |
| ---------------------- | ----------------------------------------------------------------------------------------------------------------- |
| **Notifications only** | Leaves the session running. Select email, webhook, or both.                                                       |
| **Stop the session**   | Disconnects the session and keeps its linked credentials. You can start it again later.                           |
| **Slow down sending**  | Caps the session at the messages-per-second value you enter. The value cannot exceed the project's sending limit. |
| **Log out**            | Unlinks the session. You must pair it again before it can reconnect.                                              |

Email and webhook notifications can accompany a session action. Console
disables an email option when email delivery is unavailable and disables the
webhook option until the project has an enabled, project-wide native webhook
subscribed to `bansafe.health_threshold` or all events. An
enabled rule needs at least one session or notification action.

Select **Save Health rule** to store the complete rule. If someone saves a
newer version first, Console keeps your edits and asks you to reload the saved
rule before trying again. Saving a rule does not apply it to a session at that
moment; it governs later Health evaluations.

A team member without owner, admin, or developer access can read the rule but
cannot change it.

## Acknowledge a finding

Select **Acknowledge** on a finding to record that you have seen it. You can
add a note of up to 500 characters and snooze the finding's notifications for
1 to 30 days.

<Warning>
  Acknowledging records that you have seen this. It does not change the health
  score and it does not lift a restriction. Both change when the sending
  behaviour changes.
</Warning>

Acknowledging is available to team owners, admins, and developers. It is
deliberately not available to an API key or a project token: an
acknowledgement is a statement
by a named person on the organization's behalf, and support reads it when
reviewing an appeal. The row then shows who acknowledged it and when.

Acknowledging is required before you can appeal a restriction on the number.
See [Findings](/guides/bansafe/findings#acknowledging-a-finding).

## Report a ban

If WhatsApp bans or restricts a number and Polymorfa did not observe it, report it so the observed incident is kept with the number's history. Select **Report a ban** on the Safety page and give the date it
happened and an optional note, or call the API directly:

```bash theme={null}
curl -X POST "https://api.polymorfa.com/platform/bansafe/incidents" \
  -H "Authorization: Bearer $POLYMORFA_KEY" \
  -H "Idempotency-Key: ban-report-1" \
  -H "Content-Type: application/json" \
  -d '{ "session": "sales-01", "occurredAt": "2026-09-06T09:00:00Z", "note": "Number banned during outreach" }'
```

The request needs `sessions:manage`. `note` accepts up to 500 characters.
Repeating the same `Idempotency-Key` for the same number returns the original
receipt with `created: false`. Reusing it for a different number returns
`409 bansafe_incident_idempotency_scope_conflict`. Read reported and observed incidents back with
`GET /platform/bansafe/incidents`.

## Ban Insurance

The **Ban Insurance** section sits beside what WhatsApp did to the number and
lists the claims filed on its bans. It is read-only: a claim is filed for you
when WhatsApp bans a number whose plan includes insurance, and a person reviews
it. Nothing on the page files, approves, or appeals one.

Each claim shows its state — waiting for review, in review, approved, not
approved, credits returned, or credits taken back — a sentence saying where it
stands, and what the ban was attributed to: another device on the account, how
the number was being used, a shared connection, Polymorfa, or not yet
determined.

All three amounts are on screen, because the amount returned alone does not say
why it was that much:

| Amount                 | What it is                                   |
| ---------------------- | -------------------------------------------- |
| Returned               | What this claim returns to the balance.      |
| Used by this number    | What the number spent over the days covered. |
| Most this plan returns | The ceiling the plan puts on one claim.      |

Beside them are the number of days covered, when the ban was recorded, and,
once they have happened, when the claim was reviewed and when the credits were
returned. A number with no claim says so.

If ban-insurance evidence is off for the project, each claim says that
Polymorfa cannot check whether another device on the account was sending, so
the claim needs a review rather than being decided on its own.

To change evidence collection, use the **Ban insurance evidence** section on
the project Safety page. Turn **Ban insurance evidence on for this project**
on or off, then select **Save evidence setting**. Team owners, admins, and developers can change
it. Collection is off by default. Turning it off deletes stored device
evidence; existing claim summaries remain.

If a number has not confirmed the change, the page reports that the setting is
stored and still pending. This is not confirmation that every connected
number has applied it.

Refund notifications are under **Billing & usage**. See
[Ban Insurance](/guides/bansafe/ban-insurance).

## Safety notifications

Four safety preferences appear under **Settings → Notifications**:

| Notification          | Raised when                                                                               |
| --------------------- | ----------------------------------------------------------------------------------------- |
| Elevated safety risk  | A number enters Fair Health or opens a warning-level safety finding.                      |
| High safety risk      | A number enters Poor or Failing Health, or opens a critical safety finding.               |
| Health rule triggered | A project Health rule queues a configured action for a session.                           |
| Sending restriction   | Polymorfa changes a sending restriction, or WhatsApp applies a restriction to the number. |

Health-rule notifications use fresh Health. All safety notifications respect
each team member's email preferences and link to the number's Safety detail.
Provider enforcement remains a separate observed event.

## Where to go next

<Columns cols={2}>
  <Card title="Findings" icon="list-check" href="/guides/bansafe/findings">
    Every check, what opens it, and what to change.
  </Card>

  <Card title="Safe Mode" icon="user-clock" href="/guides/bansafe/safe-mode">
    Human-cadence sending and what your contacts see.
  </Card>

  <Card title="Warm-up plan" icon="chart-line-up" href="/guides/bansafe/warm-up-plan">
    The daily allowance a new number ramps through.
  </Card>

  <Card title="Ban Insurance" icon="shield-halved" href="/guides/bansafe/ban-insurance">
    What a claim covers, who decides it, and how credits come back.
  </Card>
</Columns>
