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

# Embedding the partner portal

> Show the Partnero partner portal inside your own website using the in-site portal widget, and understand what can and can't be embedded

You can surface the partner portal directly inside your own product or website, so partners don't have to navigate to a separate site. The primary tool for this is the **in-site portal widget**.

## The portal widget

The portal widget adds a floating launcher button to your site. When a partner clicks it, the full portal opens in an embedded panel (iframe) — including login and the authenticated dashboard.

<Steps>
  <Step title="Connect a custom domain">
    The widget serves the portal from your program's **custom domain**, so you must connect and verify one first. Without an active custom domain the widget can't be enabled.
  </Step>

  <Step title="Add your site to the allowed domains">
    Add the domains where the widget may appear to the **whitelist** in your portal settings. The widget only initializes on pages whose domain matches the whitelist, and the same list is used to allow those pages to embed the portal (via a `frame-ancestors` content-security policy).
  </Step>

  <Step title="Enable and configure the widget">
    Under **Program → Portal → Settings** (and **Portal → Widget preferences**), turn on the widget and customize the launcher — title, colors, icon, position, and stacking order.
  </Step>

  <Step title="Install PartneroJS and load the widget">
    Install the PartneroJS snippet (see [JavaScript tracking](/guides/tracking/javascript-tracking)) and load the widget for your program:

    ```html theme={null}
    <script>
        po('program', 'PUBLIC_PROGRAM_ID', 'portal_widget');
    </script>
    ```
  </Step>
</Steps>

<Warning>
  The widget requires an **active custom domain** plus at least one **whitelisted domain**. If either is missing, the widget will not appear even when the toggle is on. (Some admin hints mention only a subdomain — the actual requirement is a verified custom domain.)
</Warning>

## Embedding the portal in your own iframe

If you prefer to place the portal in your own iframe rather than the floating launcher, the same domain rules apply:

* By default the portal only allows itself to be framed by its **own domain** (`frame-ancestors 'self'`).
* Once the widget is enabled with whitelisted domains, those domains are added to the portal's `frame-ancestors` policy, allowing them to embed it.
* Point the iframe `src` at the portal's custom-domain login URL. To smooth out the sign-in step, combine this with [email prefill and auto-submit](/guides/partner-portal/prefill-login-email).

<Info>
  Embedding the authenticated portal still requires the partner to log in inside the iframe. Embedding does **not** bypass authentication — see [prefilling the login email](/guides/partner-portal/prefill-login-email) to reduce that friction.
</Info>

## Embeddable signup forms

Separately from the full portal, Partnero provides **embeddable signup forms** that can be placed in an iframe on *any* page (no domain whitelist needed):

* Affiliate program signup
* Refer-a-friend signup
* Signup popups

These are loaded through PartneroJS and are meant for collecting new partners/members, not for showing the authenticated dashboard. See the [no-code guides](/guides/tracking/refer-a-friend-forms) for details.

## Choosing an approach

| You want to…                               | Use                                                                   |
| ------------------------------------------ | --------------------------------------------------------------------- |
| Add a full portal launcher to your site    | Portal widget                                                         |
| Place the portal in your own layout/iframe | Custom iframe + whitelisted domain                                    |
| Collect new signups inline                 | Embeddable signup form                                                |
| Reduce the login step for known users      | [Prefill the login email](/guides/partner-portal/prefill-login-email) |
