Install

The script tag

<script type="module"
  src="https://app.try-signal.com/sdk/signal-auto.js"
  data-signal-key="sig_pk_live_…"
  data-signal-api="https://app.try-signal.com"></script>

Paste it on every page, just before </body>. It loads in the background and never blocks your page; if anything goes wrong, Signal stays quiet rather than breaking your site.

Attribute Required What it does
data-signal-key yes Your publishable key (sig_pk_…).
data-signal-api yes The Signal API address, https://app.try-signal.com.
data-signal-popup no The popup is on; set "false" to draw your own UI (see JavaScript API).
data-signal-storage no persistent, session or none. See Consent and storage.
data-signal-debug no "true" shows a debug panel with Signal's estimates and decisions.

The client is available as window.signal once the script has run.

Allowed domains

Signal only accepts a publishable key from your own website. Add every host name your site uses under Settings → General, exactly as it appears in the address bar: example.com and www.example.com are different. Subdomains aren't included automatically.

Where to paste it

Platform Where
WordPress Install the free plugin "WPCode" → Code Snippets → Header & Footer → Footer
Shopify Online Store → Themes → … → Edit code → layout/theme.liquid, just above </body>
Wix Settings → Custom code (Premium plan) → Add custom code → All pages, Body – end
Squarespace Settings → Advanced → Code injection → Footer
Webflow Site settings → Custom code → Footer code, then publish
Anything else Before </body> on every page, or in your template's footer

Smart forms

A smart form asks your questions one at a time, skips what Signal already knows, and ends with the contact details you need. Put an empty element where the form should appear:

<div data-signal-form="earlyAccess"></div>

earlyAccess is the form's key in your configuration (see Configuration → Forms). While a smart form is on the page, the popup doesn't ask its own questions next to it.

Single-page apps

Signal records a page view on load and whenever the address changes through history.pushState, replaceState or the back button, so routers like React Router, Vue Router and Next.js work without extra code.

Testing safely: shadow mode

In shadow mode, Signal reads visits and records what it would have asked and offered, but visitors see nothing, and no emails, alerts or webhooks go out. Switch it on in Configuration ("mode": "shadow") or in the setup wizard, check the Overview for a few days, then switch to live.

Checking it works

  • Settings → Install shows the last visit and visits in the last 24 hours.
  • Add data-signal-debug="true" to see Signal's estimates and why it did or didn't speak up.
  • In the browser console, window.signal.visitorId shows the visitor id once Signal has connected.

Shopify product recommendations

To recommend products, connect your shop under Settings → Shop. Signal reads your public catalog every 6 hours and suggests shopping questions; product pages are recognised by their /products/<handle> address, and adds to cart of recommended products are counted automatically.