Deploying Your Agent
Zimmer agents go live in two forms — a standalone landing page or an embedded widget on your own site. Both become available once you publish.
Publishing
Agents start in Draft. To go live, hit Publish — either the button in the top-right of the agent (on any tab) or under Settings → Deploy.
Any edits you make after publishing are saved as drafts — they don't affect the live experience until you publish again, so you can safely change a live agent and test it before pushing the update.
Click Unpublish to take the agent offline: the landing page and widget stop working immediately, your configuration is preserved, and you can republish any time.
Landing page
Every published agent automatically gets a public landing page — no extra setup. It shows the full template (hero, chat UI, colors, fonts) you designed in the template studio.
Copy its URL from Settings → Deploy → Landing Page URL, then share it anywhere — emails, social posts, QR codes, or as the destination for a paid ad campaign.
Custom domains (for example, chat.yourbrand.com) may be available depending on your plan — contact us at
hello@zimmer.app.
Widget embed
The widget adds your agent to any website as a floating chat button. Visitors click it to open a full conversation without leaving your site. It's a single snippet — no framework or package to install.
- Open your agent → Settings → Deploy.
- Copy the Widget Embed Code.
- Paste it just before the closing
</body>tag on your site.
<script
src="https://hub.zimmer.app/widget/v1/widget.js"
data-agent="your-agent-id"
></script>To show it on every page, add it to your site's layout or global-script field — Webflow, WordPress, Shopify, and most website builders support this.
Customize it
All options are set with data-* attributes on the script tag — no coding needed:
| Attribute | Default | What it does |
|---|---|---|
data-agent | — | The agent to load. |
data-kit | — | Load from a starter-kit slug instead (e.g. internal-knowledge-agent). One of data-agent or data-kit is required. |
data-color | #7C3AED | The accent color of the button and chat UI. |
data-position | bottom-right | Where the button sits — bottom-right or bottom-left. |
data-greeting | — | A message shown when the chat opens. |
data-auto-open | false | Set "true" to open the chat automatically on page load. |
data-delay | 0 | How long (in milliseconds) to wait before the button appears. |
data-product-id · data-category | — | Set an explicit product or category for e-commerce context. |
How it behaves
- A floating button appears (after any delay you set) and opens the agent when clicked.
- Closing it keeps the conversation — visitors can reopen and pick up where they left off, even on a return visit.
- On a store, the widget can detect the product or category from the page automatically, so the agent can talk about what the visitor is looking at.
Visitors can start over (type "start over" or "reset" — earlier messages stay visible) or use the New Conversation button for a fresh session (the previous chat is saved to your Conversations).
For developers
- Handle product-card clicks. When a product card's button is clicked, the widget sends a
postMessageto the host page (rather than navigating). Listen for it to add to cart, navigate, or track:window.addEventListener('message', (event) => { if (event.data?.type === 'zimmer:cta_click') { console.log(event.data.url); // product URL console.log(event.data.productTitle); // product name } }); - Visitor metadata. It forwards UTM parameters, referrer, page URL, and viewport size into the agent's journey, where you can use them in conditions, variables, or API calls.
- E-commerce auto-detection. When
data-product-id/data-categoryaren't set, the widget reads the product or category from common URL patterns (for example/products/<slug>,/p/<id>,/dp/<id>;/collections/<slug>,/category/<slug>) and query params (?product_id=,?pid=,?category=). - Under the hood. The widget is a single self-contained script with no dependencies; it mounts the chat in
an iframe and talks to your page via
postMessage. A per-visitor ID is stored in the browser so sessions resume on return visits.
Product card CTAs
When your agent shows a product card, the CTA button behaves differently depending on where it's deployed:
| Context | CTA behavior |
|---|---|
| Standalone page (desktop) | Opens the product URL in a new tab |
| Standalone page (mobile) | Opens a bottom sheet with product details |
| Embedded widget (iframe) | Fires a postMessage to the parent page (see the developer notes above) |