> For the complete documentation index, see [llms.txt](https://docs.limecall.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.limecall.com/callback/install-on-other-platforms.md).

# Install on other platforms

Shopify, Webflow, Squarespace and Wix.

All of these paste the same snippet. Copy yours from **Widget → Embed** — it carries your own widget key:

```html
<script src="https://dashboard.limephone.io/callback-widget.js"
        data-key="YOUR_WIDGET_KEY"
        data-api="https://dashboard.limephone.io"></script>
```

{% hint style="warning" %}
Paste it as-is. Any extra `data-` attribute **overrides your saved settings and freezes that one**, so a snippet carrying `data-mode="bubble"` will ignore every later change to Display style. See [Install with JavaScript](/callback/install-with-javascript.md).
{% endhint %}

After pasting on any platform, confirm it actually loaded — open your live site and run this in the browser console:

```js
window.LimeCall && window.LimeCall.getState()
// { ready: true, open: false, mode: "bubble", inWebCall: false, tab: null, visible: true }
```

`undefined` means the script never ran: the code area was not published, a cache is stale, or the platform strips scripts on that plan. Each platform's specific version of that is noted below.

## Shopify

1. In your Shopify admin, go to **Online Store → Themes**.
2. On your current theme, choose **Actions → Edit code**.
3. Open `layout/theme.liquid`.
4. Paste the snippet immediately before `</body>`.
5. Save.

The widget now appears across the storefront, including product and collection pages.

On Online Store 2.0 themes `layout/theme.liquid` is still the right file — the snippet is a plain script tag, so it does not need to be an app embed or a section.

{% hint style="info" %}
Shopify checkout pages are locked down and will not run third-party scripts on most plans. This is expected — and usually desirable, since you rarely want a callback prompt mid-checkout.
{% endhint %}

## Webflow

1. Open **Site settings → Custom code**.
2. Paste the snippet into the **Footer code** field.
3. Save, then **Publish** the site.

Custom code only runs on the published site, not in the Designer preview. Always test on your live domain.

For a single page instead, open that page's settings and use its own **Before `</body>` tag** field.

{% hint style="info" %}
Webflow's Footer code field runs on every published page, which is what you want. Do not put it in **Head code** — the widget would load before the page it attaches to.
{% endhint %}

## Squarespace

1. Go to **Settings → Advanced → Code Injection**.
2. Paste the snippet into the **Footer** box.
3. Save.

Code Injection requires a Business plan or higher. On Personal plans, use a Code Block on individual pages instead — the same snippet works, it just has to be added per page.

Squarespace serves cached pages aggressively. If the widget does not appear, hard-reload once before assuming the snippet is wrong.

## Wix

1. Go to **Settings → Custom Code** in your site's dashboard.
2. Click **Add Custom Code**.
3. Paste the snippet.
4. Set **Add Code to Pages** to *All pages*, and **Place Code in** to *Body – end*.
5. Apply.

Custom code needs a Premium plan and a connected domain. It does not run on free `wixsite.com` addresses — `window.LimeCall` will be `undefined` there no matter how correct the snippet is.

Leave **Load code once** unselected. The widget expects to initialise on each page view, and loading it once across a session leaves it missing after client-side navigation.

## Anything else

If your platform lets you add HTML to a footer or a "custom code" area, the JavaScript method works. See [Install with JavaScript](/callback/install-with-javascript.md).

Framer, Ghost, Carrd, Notion-backed sites and most site builders all expose one of these. The rule is the same everywhere: the snippet goes at the end of the body, on every page you want the widget on.

For a React, Vue or Next.js app you control, add the script tag to the HTML shell rather than injecting it from a component — mounting it per route re-runs initialisation on every navigation. In Next.js that is `app/layout.tsx` or `pages/_document.tsx`.

If it does not, and you can add a Google Tag Manager container, use [Install with Google Tag Manager](/callback/install-with-google-tag-manager.md).

## After installing on any platform

1. Test in a private/incognito window.
2. Clear any platform or CDN cache first.
3. If nothing appears, see [The widget is not showing](/troubleshooting/widget-not-showing.md).
