---
title: "Install a widget"
description: "Create a widget, choose its formats, allow your domain, and paste the bubble snippet, the in-page snippet, an iframe or the hosted link."
canonical: "https://lookio.app/docs/widget/install"
updated: "2026-11-03"
---

# Install a widget

## Create the widget

1. Open **Widgets** in the app and select **Create a widget**.
2. Type a **widget name**, for you to tell your widgets apart.
3. Choose the **assistant** that answers. You can search the list. A widget has one assistant, and its context and knowledge apply as they are.
4. Type your **allowed domains**, for example `docs.acme.com`. This is a security measure: the widget only shows on these sites. Separate several with commas. You can change them later.
5. Select **Create widget**. The widget opens on its **Install** tab.

A widget is live as soon as it is created. Turn **Live** off to pause it without removing the code from your site.

## Choose the formats

The **Install** tab lists the three formats: **Chat bubble**, **In the page** and **Hosted page**. Each has its own switch. Select a format to see how to install it.

- A new widget starts with the chat bubble on, and the other two off.
- A format that is off does not exist. The chat bubble draws nothing on your site. The in-page chat and the hosted page answer "not found" to visitors. Only the preview in the app still shows them.
- If every format is off, the widget shows nowhere.

In the API, the CLI and the MCP the three switches are the settings `bubble`, `embed` and `hosted_page`.

## Chat bubble

Turn on **Chat bubble** (it is on by default). Paste this line before the closing `</body>` tag of every page, or in your site builder's custom code setting (Webflow, Framer, WordPress, Shopify, Softr):

```html
<script src="https://widget.lookio.app/v1/widget.js" data-lookio-widget="YOUR_WIDGET_ID" async></script>
```

The **Install** tab shows the line with your widget's ID, ready to copy.

## In a page

Turn on **In the page**. Place an element where the chat belongs, give it a height, and add the script once:

```html
<div data-lookio-embed="YOUR_WIDGET_ID" style="height: 600px"></div>
<script src="https://widget.lookio.app/v1/widget.js" async></script>
```

The chat fills the element. A page can hold several embeds and one bubble with the same script.

### Without scripts

Some builders refuse scripts but accept iframes. The iframe belongs to the in-page format, so **In the page** must be on:

```html
<iframe src="https://widget.lookio.app/w/YOUR_WIDGET_ID?embed=1" style="width: 100%; height: 600px; border: 0" title="Chat"></iframe>
```

## Hosted page

Turn on **Hosted page**, then share `https://widget.lookio.app/w/YOUR_WIDGET_ID`. Anyone with the link can chat; the visitor limits apply. It is off by default. Turn it off again and the link answers "not found".

> **Warning: Allow your domain first**
>
> The bubble and the in-page chat only show on the domains listed in **Allowed domains**, in the **Config** tab. With no domain, only the hosted page works, once you turn it on. See [Access and limits](/docs/widget/access-and-limits).

## From the API, the CLI or an agent

Widgets are managed like everything else: `GET /v1/widgets`, the `lookio widgets` commands, or the `create_widget` MCP tool. Each widget comes back with its `snippets`, ready to paste. See the [API reference](/docs/api/overview).
