Quick start
- Create an account and verify your email.
- Enter your website address. Karinda reads up to 300 pages (including your sitemap) and is usually ready in 1–5 minutes.
- Choose a name, colour and greeting, and try it.
- Paste the install code on your site. Your dashboard shows it with your business ID filled in.
<script src="https://app.karinda.in/karinda-widget.js" data-business-id="YOUR_BUSINESS_ID" async></script>
Install on your site
Paste the code once, just before </body>, and the assistant appears on every page. It loads asynchronously and runs inside its own sealed container (shadow DOM), so it can't affect your site's styles.
Pick your website builder. No access to your site's code? Use your chat link instead.
Website builders
WordPress
Works on any WordPress site. On WordPress.com you need the Business plan or higher to add plugins.
- Log in to your WordPress admin (usually yourwebsite.com/wp-admin).
- Go to Plugins → Add New Plugin, search for WPCode, click Install Now, then Activate.
- In the left menu, open Code Snippets → Header & Footer.
- Copy your code (your install code, from your dashboard) and paste it into the Footer box.
- Click Save Changes. Open your website: the chat button appears in the bottom-right corner.
Wix
Needs a Wix Premium plan and a connected domain (Wix only allows custom code on those sites).
- In your Wix dashboard, open Settings and scroll to Advanced → Custom Code.
- Click + Add Custom Code (top right).
- Copy your code (your install code, from your dashboard) and paste it into the box.
- Name it Karinda, choose All pages and Load code once, and set Place Code in to Body - end.
- Click Apply. It's live straight away, with no need to republish.
Shopify
- In Shopify admin, go to Online Store → Themes.
- Next to your live theme, click ⋯ and choose Edit code.
- In the Layout folder, open theme.liquid.
- Scroll to the bottom and find </body>. Copy your code (your install code, from your dashboard) and paste it on the line just above it.
- Click Save. Open your store: the chat button appears in the bottom-right corner.
Squarespace
Code Injection needs a Core, Business or Commerce plan (not Personal).
- In Squarespace, open Settings.
- Go to Advanced → Code Injection (on newer sites: Developer Tools → Code Injection).
- Copy your code (your install code, from your dashboard) and paste it into the Footer box.
- Click Save.
Hostinger
Hostinger has two kinds of websites. If yours is a WordPress site on Hostinger, use the WordPress guide instead.
- In hPanel, open Websites and click Edit website to open the Hostinger Website Builder.
- Open Website settings (gear icon) and go to Integrations.
- Find the Custom code box. Copy your code (your install code, from your dashboard) and paste it there.
- Click Save, then Update website (top right) to publish.
- Can't find Custom code on your plan? Use the chat link option below instead.
Webflow
Custom code needs a paid Webflow site plan.
- In Webflow, open your site's Site settings.
- Go to Custom code.
- Copy your code (your install code, from your dashboard) and paste it into Footer code.
- Click Save, then Publish your site.
Framer
Custom code may need a paid Framer plan.
- In Framer, open Site Settings → General and scroll to Custom Code.
- Copy your code (your install code, from your dashboard) and paste it into End of <body> tag.
- Click Save, then Publish.
GoDaddy
GoDaddy Website Builder doesn't allow code on every page, so use your chat link. (A WordPress site hosted by GoDaddy: use the WordPress guide.)
- Copy your chat link (your chat link, from your dashboard:
https://chat.karinda.in/c/YOUR_BUSINESS_ID) - In the GoDaddy editor, add a button (for example Chat with us) to your header or contact section.
- Set the button's link to your chat link, opening in a new tab.
- Click Publish. Visitors tap the button and chat with your assistant.
Google Sites
Google Sites doesn't allow code on every page, so add your chat as a button or a box on a page.
- Copy your chat link (your chat link, from your dashboard:
https://chat.karinda.in/c/YOUR_BUSINESS_ID) - In Google Sites, open the page where visitors should chat (for example Contact).
- Option A, a button: Insert → Button, name it Chat with us, paste the link, and click Insert.
- Option B, the chat on the page: Insert → Embed → By URL, paste the link, choose Whole page, click Insert, and drag the box bigger.
- Click Publish.
Blogger
- In Blogger, open Layout.
- In any section, click Add a Gadget and choose HTML/JavaScript.
- Leave the title empty. Copy your code (your install code, from your dashboard) and paste it into Content.
- Click Save. The chat button appears on every page of your blog.
Weebly
- In the Weebly editor, open Settings → SEO.
- Copy your code (your install code, from your dashboard) and paste it into Footer Code.
- Click Save, then Publish.
Hosting and code
Cloudflare
If your domain uses Cloudflare (orange cloud), you can add it without touching your website's code, whoever built it.
- Log in to Cloudflare and click your website's domain.
- In the left menu, open Zaraz and go to Tools Configuration.
- Click + Add new tool, choose Custom HTML, and click Continue.
- Name it Karinda. Copy your code (your install code, from your dashboard) and paste it into HTML code. Keep the firing trigger as Pageview.
- Click Save. It's live on every page within a minute.
Vercel or Netlify
For sites a developer built and hosts on Vercel, Netlify or similar.
- Netlify, no code: open Site configuration → Build & deploy → Post processing → Snippet injection, click Add snippet, choose Before </body>, paste your code (your install code, from your dashboard) and save. Netlify redeploys for you.
- Plain HTML site: paste the code just before </body> in your pages (or the shared layout), commit and push. Vercel/Netlify redeploys automatically.
- Next.js: in app/layout (or pages/_document), add a <Script> from next/script with the same src and data- attributes and strategy="afterInteractive", then deploy.
- Not sure? Use Email the code to my developer below.
Custom HTML or cPanel
For hand-built sites you upload yourself (cPanel, Hostinger File Manager, FTP).
- Open your hosting File Manager (or connect with FTP) and find your website files (often in public_html).
- Open index.html (or your shared footer file, if your site has one) for editing.
- Find </body> near the bottom. Copy your code (your install code, from your dashboard) and paste it on the line just above it.
- Save the file. Repeat for each page unless they share one footer file.
Google Tag Manager
Use this if Google Tag Manager is already on your website.
- In Google Tag Manager, open your website's container and click Tags → New.
- Click Tag Configuration and choose Custom HTML. Copy your code (your install code, from your dashboard) and paste it in.
- Click Triggering and choose All Pages.
- Click Save, then Submit → Publish.
Other
I can't edit my website
No access to your website's code, or a builder that doesn't allow it? Use your chat link anywhere.
- Copy your chat link (your chat link, from your dashboard:
https://chat.karinda.in/c/YOUR_BUSINESS_ID) - Add it to a Chat with us button on your website, your Google Business Profile, Instagram bio, WhatsApp Business auto-reply or email signature.
- Anyone who opens it chats with your assistant straight away, and leads arrive in your inbox as usual.
- Want it on every page instead? Use Email the code to my developer below, or ask us about done-for-you setup.
Use Check my website in the setup wizard to confirm it's live. If you set Allowed domains (Security & Privacy), the assistant only works on those sites.
Options
The assistant's name, colour, greeting, avatar, position and proactive greeting come from your dashboard settings, so the install code never changes. These optional attributes go on the script tag:
| Attribute | Default | Description |
|---|---|---|
| data-business-id | required | Your business ID from the dashboard. |
| data-suggestions | none | Up to 4 starter questions shown as buttons, separated by |. |
| data-track | on | Set to off to turn off Karinda's visitor counts and the events sent to your analytics tools. |
| data-api-url | https://chat.karinda.in | Only change this if we ask you to. |
<script src="https://app.karinda.in/karinda-widget.js" data-business-id="YOUR_BUSINESS_ID" data-suggestions="What are your prices?|Do you have availability this week?" data-track="on" async></script>
JavaScript API
Once loaded, the widget exposes window.Karinda:
| Method | What it does |
|---|---|
| Karinda.open() | Opens the chat. |
| Karinda.close() | Closes the chat. |
| Karinda.ask(question) | Opens the chat and asks the question for the visitor. |
<button onclick="Karinda.open()">Chat with us</button>
<button onclick="Karinda.ask('Do you have availability this week?')">Check availability</button>Analytics events
If your site uses Google Tag Manager or GA4, the widget pushes these events to dataLayer (or calls gtag directly when there's no Tag Manager). With Meta Pixel installed, a Lead event is also tracked.
| Event | When |
|---|---|
| karinda_chat_opened | A visitor opens the chat (once per page view). |
| karinda_conversation_started | The first answer in a conversation. |
| karinda_message | Each later answer. Includes answered: whether it was found on your site. |
| karinda_lead | A visitor leaves their contact details. |
window.dataLayer.push({ event: 'karinda_lead', karinda_business_id: '…' })Tip: mark karinda_lead as a key event in GA4 to see which campaigns and pages bring enquiries.
Lead capture
Visitors can choose Talk to a person at any time. The assistant also offers it when it can't answer a question, after a thumbs-down, and after a few messages. The form asks for a name, email or phone, and their question.
Each lead appears in Leads and the Inbox, is emailed to the addresses in your settings with the full conversation, and is sent to your webhook if you've set one.
Webhooks
Add an HTTPS URL under Integrations and Karinda sends a POST for every new lead. Works with Zapier (“Catch Hook”), Make, n8n or your own server. Failed deliveries are retried after 10 minutes, 1 hour and 6 hours; you can see every delivery in Integrations.
Payload
{
"id": "whd_8c1f0e…",
"event": "lead.created",
"created_at": "2026-10-03T22:41:07.000Z",
"business_id": "YOUR_BUSINESS_ID",
"data": {
"lead": {
"id": "3f2a…", "name": "Jane Cooper", "email": "jane@example.com", "phone": "+1 555 0100",
"message": "Do you take Delta Dental?", "page": "/pricing", "country": "US", "conversation_id": "c9x…"
},
"transcript": [
{ "role": "user", "content": "Do you take Delta Dental?" },
{ "role": "assistant", "content": "I don't have that detail on our website…" }
]
}
}Verifying the signature
Every request has a Karinda-Signature: t=<unix seconds>,v1=<hex> header. v1 is an HMAC-SHA256 of t + "." + raw body, keyed with the signing secret shown in Integrations.
// Node.js (Express): verify a Karinda webhook before trusting it
import crypto from 'node:crypto';
app.post('/karinda', express.raw({ type: 'application/json' }), (req, res) => {
const header = req.get('Karinda-Signature') || ''; // "t=1759500000,v1=abc123..."
const { t, v1 } = Object.fromEntries(header.split(',').map(p => p.split('=')));
const expected = crypto.createHmac('sha256', process.env.KARINDA_WEBHOOK_SECRET)
.update(`${t}.${req.body}`).digest('hex');
const fresh = Math.abs(Date.now() / 1000 - Number(t)) < 300; // reject replays older than 5 minutes
if (!fresh || !v1 || !crypto.timingSafeEqual(Buffer.from(v1), Buffer.from(expected))) return res.sendStatus(400);
const event = JSON.parse(req.body); // { id, event: "lead.created", created_at, business_id, data }
// De-duplicate retries by event.id, then save event.data.lead
res.sendStatus(200);
});Languages
The assistant replies in the language the visitor writes in, using your website's content even if that's in another language. Search across languages is built in.
Privacy
The widget sets no cookies. To count unique visitors, Karinda keeps a one-way hash of IP address and browser, with a secret that changes daily, for two days. Visitors whose browser sends Do Not Track or Global Privacy Control aren't counted. Conversations are kept for the retention period you choose and are never used to train AI models. See the privacy policy, DPA and security page.
Limits
| What | Limit |
|---|---|
| Messages per visitor | 30 per 5 minutes |
| Message length | 1,000 characters |
| Lead form submissions per visitor | 5 per 10 minutes |
| Pages read per training run | 300 |
| Training runs | 6 per hour |