4 KB lazy-load shim
Initial script is 4 KB gzipped with zero blocking dependencies. Full chat UI lazy-loads on bubble click or after 8s idle. Lighthouse scores are unaffected — measured on a sample of 200 production sites.
Drop one script tag and your site has a chat widget that pulls in your AI knowledge layer, routes to humans during business hours and falls back to bot otherwise. It knows the page the visitor is on, their UTM source, their cart contents and their previous conversations across every channel.
Walk through the average B2B SaaS pricing page on a 3G connection and you will find a chat widget that adds 280 KB of JavaScript, blocks the main thread for 600 ms, and shows a "we typically reply in a few hours" message that has not been true since 2019. The visitor scrolls past, the page fails its Largest Contentful Paint budget, and Core Web Vitals tank the SEO score for the entire site. Worse, the lead does not get captured in the CRM because the widget vendor lives in its own silo — a different login, different identity model, different tagging convention.
E-commerce widgets have their own problems. They prompt aggressively, harvest emails to grow a marketing list that gets reported as spam, and have no idea that the visitor just abandoned a cart with three items. When the visitor does chat, the conversation lives in the widget vendor's app, separate from the brand's WhatsApp Business inbox where the same person was talking to support yesterday.
A modern web widget needs to be small enough to never affect performance, smart enough to know the page context, and connected enough to share state with WhatsApp, Instagram and email. It also has to gracefully hand off — a visitor who starts on web chat at 9pm should be able to continue on WhatsApp the next morning without retyping their problem.
Wachat's web widget is a 4 KB gzipped JavaScript shim that lazy-loads the full experience only when the bubble is clicked or after 8 seconds of idle time, whichever comes first. The initial paint adds zero blocking JavaScript and uses passive event listeners, so Core Web Vitals are unaffected. The full chat UI is React-based, loaded on demand, and supports streaming AI responses, file upload, voice messages, emoji and rich cards.
The widget knows what the visitor knows. It captures page URL, page title, scroll depth, time on page, UTM parameters, referrer and screen size on every message. Pricing-page visitors get auto-routed to a sales queue with a "Talk to sales" pre-fill; docs-page visitors get routed to support with a "Ask about the docs" pre-fill; checkout-page visitors who paused get a proactive nudge after 30 seconds of inactivity, offering help with the cart contents that Wachat already knows about via the Shopify or Razorpay integration.
Hand-off to WhatsApp is one tap. A visitor who has typed their question on web chat sees a "Continue on WhatsApp" button that captures their number, sends them an opt-in confirmation template, and continues the same conversation thread in the same shared inbox. Agents do not see a new ticket — they see the same one, now on a different channel, with full history intact. This is the single biggest lift for businesses with mobile-heavy traffic, because customers prefer mobile chat but bounce from desktop widgets.
Theming is comprehensive: bubble colour, position (bottom-right, bottom-left, mid-right), border radius, font family, dark mode, welcome message, idle nudge, attention-grabber animations, and CSS variables for every surface. The widget supports five languages out of the box (English, Hindi, Tamil, Bengali, Spanish) with full UTF-8 input and right-to-left support for future markets. Custom CSS is sandboxed inside a Shadow DOM, so your site's styles never bleed into the widget and vice versa.
Initial script is 4 KB gzipped with zero blocking dependencies. Full chat UI lazy-loads on bubble click or after 8s idle. Lighthouse scores are unaffected — measured on a sample of 200 production sites.
The widget knows the page URL, UTM source, referrer and time-on-page. Build rules: pricing-page chats go to sales, docs-page chats to support, blog visitors to a growth bot. Pre-fills the composer with the most likely first message.
One-tap continuation on WhatsApp: the widget captures the phone number, sends the Meta-approved opt-in template, and continues the same thread in the shared inbox. No "ticket #1234" friction, no retyping.
Trigger messages based on time on page, scroll depth, exit intent, returning visitor or specific URL patterns. The cart-page nudge can reference the actual items in the cart, pulled live from Shopify or Razorpay context.
In business hours, visitors reach a human in under 60 seconds. Out of hours, the AI layer answers from your help centre, product catalogue and past resolved tickets — and queues a human follow-up at the start of the next business window.
Customise colour, position, font, dark mode and copy via the admin UI or JS config. Ships with five languages (English, Hindi, Tamil, Bengali, Spanish) and accepts custom locales. Shadow DOM isolation prevents CSS conflicts.
Pass the logged-in user's ID, email and JWT-signed attributes to identify visitors deterministically. The widget reconciles to the existing CRM contact, so a returning user sees their full conversation history across web, WhatsApp and email.
A B2B SaaS routes pricing-page chats to AEs with a proactive nudge at 45 seconds: "Want a quote with your team size pre-filled?" The widget reads the segment selector on the page, pre-fills team size in the message, and routes the chat to the AE owning that segment. Demo bookings from pricing page are up 34%.
A D2C apparel brand triggers a widget nudge when a visitor sits on the checkout page for 60 seconds without progressing. The nudge references the cart contents and offers a 5% off code in exchange for chatting. Recovered carts are tagged in the CRM and credited to the widget channel in analytics.
A developer-tooling startup uses the widget on its docs site with AI-first answers from the documentation corpus. 78% of chats are resolved without a human, freeing engineers to handle the 22% that involve real bugs or feature requests routed to the appropriate sub-team.
A private university widget routes chats from the programme-detail page to the relevant admissions counsellor (MBA, BTech, MSc). Chats outside the 09:00-21:00 window get AI replies and a callback request that creates a CRM lead with the page context attached.
A specialist clinic widget pulls the doctor's next 5 available slots from the practice-management system and offers them inline as buttons. The visitor picks one, confirms via WhatsApp template, and the appointment is created in the EHR — no phone call, no email back-and-forth.
Web Chat Widget is included on every SabNode workspace. No separate billing, no extra setup — flip it on from your workspace settings.
Copy a 3-line script tag from the Wachat admin and paste it into your site head (or a Google Tag Manager tag). The bubble appears immediately with your default theme and welcome message.
Use the admin UI to pick brand colour, position, font, dark mode and welcome message. Preview against your live site in the embedded iframe before publishing changes.
For logged-in users, call window.wachat.identify({ id, email, name, signature }) with a server-signed JWT so visitors are deterministically matched to existing CRM contacts.
Map URL patterns to teams, AI bots and proactive nudges. For example: pricing.* → sales team, /docs/* → AI bot with docs corpus, /checkout → cart-recovery flow.
Watch the widget dashboard: visitors who saw the bubble, who clicked, who chatted, who converted to a CRM contact, and who handed off to WhatsApp. Iterate nudges weekly based on the conversion funnel.
Can't find what you're looking for? Talk to our team.
No credit card. No sales call required. Spin up a workspace, plug in a number, and your team is live in under an hour.