seny

Installing the script

Seny ships as a single <script>tag. There's no SDK to install, no npm package, no build step. The runtime is about 8 KB gzipped and loads asynchronously so it never blocks your page.

Floating button (default)

The simplest install — paste one line anywhere before the closing</body> tag. The agent renders a floating button in the corner you configured in the Appearance tab.

<script src="https://app.seny.ai/w/wgt_abc123.js" async></script>

Inline embed

If you'd rather have the agent appear directly in your page layout (instead of floating in a corner), switch the widget to inline mode in the Appearance tab, then add a target container where you want it to render.

<div data-seny-widget></div>
<script src="https://app.seny.ai/w/wgt_abc123.js" async></script>

The widget takes over the container with a full-width conversation panel. Useful for landing pages, pricing pages, or a dedicated "Talk to us" section.

Framework-specific examples

Next.js

// app/layout.tsx
import Script from "next/script";

export default function RootLayout({ children }) {
  return (
    <html>
      <body>
        {children}
        <Script
          src="https://app.seny.ai/w/wgt_abc123.js"
          strategy="afterInteractive"
        />
      </body>
    </html>
  );
}

WordPress

Paste the script tag into your theme's footer template, or use a plugin like Insert Headers and Footers and add it to the footer section.

Shopify

In your theme editor, open theme.liquid and paste the script tag just before </body>.

Webflow

Project settings → Custom code → Footer code → paste the script tag and publish.

Content Security Policy

If your site has a CSP, you'll need to allow Seny's script origin and WebSocket endpoint:

script-src 'self' https://app.seny.ai;
connect-src 'self' https://app.seny.ai wss://seny-broker-499745110623.us-east1.run.app;
media-src 'self' data: blob:;

Verifying the install

Once the script is live, open your browser console. You should see a [seny] log line when the runtime boots. If you see nothing, check that the script URL is reachable and that your widget status is active or draft in the dashboard.