# Relay: Embedded Widget

> The Embedded Widget renders a Relay verification inside your web page as a checkbox-style step, shipped as the @persona/relay npm package.

Source: https://help.withpersona.com/articles/KdzrTAbJUJCMKwhmPy3WeD/
Section: Relay > Features > Configurations

## What is the Embedded Widget?

The **Embedded Widget** is one of the ways a user can complete a [Relay](https://help.withpersona.com/articles/FTAuKBlqXIUaKHv654ng26/) verification. It renders the verification directly inside your own web page, so the user never leaves your site.

To a user, it starts as a lightweight, familiar checkbox-style step in your existing form. Behind it, Relay runs the verification flow for the claim type you asked for.

## When would you use it?

Choose the Embedded Widget when you want Relay to feel like part of your page. It suits a signup form, a checkout step, or any gate that sits inline in a flow the user is already moving through.

Choose [Hosted Flow](https://help.withpersona.com/articles/CMPajCawApr2f359BF9lUb/) instead when you would rather hand the user off to a Persona-hosted page. Some teams prefer that because a visibly separate experience helps reinforce for users that verification is happening away from the site they are using.

For native apps, see [Relay on iOS and Android](https://help.withpersona.com/articles/wXsJwROMPcovoF1BZXlD9T/).

## How it fits your integration

The widget is the client-side half of a Relay integration. Your server creates the Relay session and passes the Relay session access token to the page; the widget uses that token to run the verification.

A few things worth knowing before you build:

- The widget is distributed as the `@persona/relay` npm package. You give it a container element and a set of options.
- It calls back when the flow finishes. That callback carries no personal information and no claim result, so it is a signal to call your own server, not a source of the answer.
- A Relay session expires a set time after it is created, and the widget reports expiry so you can handle it. The documentation has the current window.
- You can set the [theme](https://help.withpersona.com/articles/C9zRnkipOjmKNO1PL4DnR0/) to light, dark, or auto.

💡

Start retrieving the claim result from your server when the widget reports that the flow is
complete. The claim result never reaches the browser.

## Try it

The public demo at [explore.withpersona.com/relay](https://explore.withpersona.com/relay) runs the widget inside a sample signup form, with an activity panel showing each step as it happens. You can switch that panel to a technical view to see the same steps as SDK, gateway, or raw API calls.

## Full technical documentation

The developer documentation is the source of truth for the integration:

- [Embedded Widget usage](https://docs.withpersona.com/relay-widget-usage)
- [Relay Widget SDK reference](https://docs.withpersona.com/relay-sdk-reference)
- [Getting started](https://docs.withpersona.com/relay-getting-started)

## Plans Explained

### Embedded Widget by plan

|                 | **Startup Program** | **Essential Plan** | **Growth Plan** | **Enterprise Plan** |
| --------------- | ------------------- | ------------------ | --------------- | ------------------- |
| Embedded Widget | Available           | Available          | Available       | Available           |

[Learn more about pricing and plans](https://withpersona.com/pricing?utm_source=product&utm_medium=referral&utm_audience=a&utm_campaign=cm_gen_ds_hc-plan-table).
