Use the project’s script controls.
Framer’s current interface places scripts in Project Settings → Custom Code. Add a named script, choose its location and page scope, and select how often it executes.
Framer distinguishes execution once from execution on every page visit. For a persistent widget, start with a single installation and test navigation for the site’s actual behavior. Custom code added through settings is visible on the published site, not the editor preview.
Connect the domain and the assistant.
Add the public domain to Sairo, complete ownership verification, and review the indexed sources. If an agency duplicates a Framer project for another client, generate that client’s own Sairo site record and snippet.
Prepare answers to the questions your marketing site is intended to resolve. A visually rich page may need additional readable service text before the assistant has enough information to give useful answers.
Add the generated script near the end of the body.
Copy the site-specific snippet from Sairo and add it to the selected custom-code entry. Choose the end-of-body location and keep the async attribute supplied by Sairo.
Publish to the domain you intend to support. Check that another component or script entry is not already loading the same assistant, and keep a record of the installation point for the next maintainer.
<script src="https://sairo.app/widget.js" data-site="YOUR_PUBLIC_SITE_KEY" async></script>Source references
Check layout and content independently.
Test narrow breakpoints with the mobile menu, sticky calls to action, and any consent interface. Follow the keyboard path from launcher to message input and back after closing the panel.
For a loading problem, inspect the published snippet and browser connection errors. For an answer problem, inspect the knowledge sources and saved answers. Keeping those checks separate makes troubleshooting much faster.