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

# Layered verification

> Combine account, social, and proof of human checks in one gate for stronger assurance than any single signal.

One weak signal is easy to game. Publish a listing that layers checks, so visitors must pass more than one.

| Layer                  | Check                                       | When                                         |
| ---------------------- | ------------------------------------------- | -------------------------------------------- |
| Social or work account | `ownership-social` or `ownership-org-oauth` | The linked identity most products need first |
| Human                  | `proof-of-human`                            | Bot resistance and fair access               |
| Signed account         | `ownership-basic`                           | A signed account check alongside the others  |
| Wallet risk            | `wallet-risk`                               | Payment flows and high-value access          |

For consumer apps, start with a social account plus proof of human. Add `ownership-basic` or `wallet-risk` only when your threat model needs them.

## Publish the layered gate

[Create a listing](https://proofable.me/profile/portals/new), require the checks above, set pricing, and publish. Visitors only need your `gateId`.

## Add it to your app

```jsx theme={"system"}
<VerifyGate
  gateId="gate_layered"
  onVerified={(result) => {
    // Store result.qHash to prevent replay
  }}
>
  <button>Verify to continue</button>
</VerifyGate>
```

## Check on your server

```javascript theme={"system"}
const layered = await client.gateCheck({
  gateId: 'gate_layered',
  address: user.accountAddress,
});
```

<Warning>
  Set recency on the gate for point-in-time checks, and store proof IDs where replay matters.
</Warning>

[Sell access with one gate](/gates/sell-access) covers publishing. [Hosted verification](/verification/hosted) covers the browser flow.
