New AI Agent can now build your knowledge base, connect channels and invite agents — all by chat Try it now
YundaDesk
PricingBlogChannels
Start freeLog in
Questions?Contact sales
Playbook

Embed an AI Support Widget on Your Shopify Store Step by Step

From pasting code in your Shopify admin to WooCommerce theme files and a custom API for self-built sites, plus mobile fixes and multilingual pitfalls, here is the full checklist.

YundaDesk Team 2026-04-28Updated 2026-07-10 6 min read

Everyone assumes embedding a chat widget is a two-minute copy-paste job. The two minutes are easy. What actually takes time is what comes after: the widget button sitting on top of your checkout CTA, the input field getting pushed off-screen on mobile, or discovering three days in that German visitors are still greeted in English. This walks through Shopify, WooCommerce, and self-built sites, from install to sign-off.

Before you paste anything, know what’s behind the widget

The embed code itself takes minutes. Whether those minutes are worth it depends entirely on what system sits behind the widget. Before you paste a script, confirm a few things:

  • Does an AI agent handle common questions first — shipping windows, sizing, return policy — instead of routing everything straight to a human queue?
  • When the AI can’t answer, or a customer asks for a human, does it hand off seamlessly without the customer repeating themselves?
  • Do the conversations the widget collects actually feed back into the knowledge base, or does someone have to manually clean them up every time?

For the full picture, see what AI customer service actually is. Once that’s settled, the embed step is worth doing right. Real-time expectations land directly on the widget: when a shopper opens the corner button, they usually expect direction quickly, not a generic message queue.

DATA

The widget entry point inherits real-time expectations

90%Consumers who say an immediate response matters
~60%Define immediate as within 10 minutes
Source: HubSpot Research

Shopify: add a snippet to your theme file

Shopify’s admin doesn’t let you run arbitrary third-party JS outside the app store, so the reliable route is editing your theme file directly:

  1. In Shopify admin, go to Online StoreThemes → click next to your live theme → Edit code.
  2. In the file list, open theme.liquid.
  3. Find the closing </body> tag and paste the widget script right before it.
  4. Save, refresh any storefront page, and confirm the widget button appears in the corner.

If the store uses a custom theme or a third-party landing page builder (PageFly, GemPages, etc.), double-check that those standalone pages also load the shared code block from theme.liquid. Some landing pages render independently and can miss the widget entirely.

WooCommerce: plugin route or direct theme edit

WooCommerce runs on WordPress, so embedding is more flexible than Shopify but also easier to get wrong:

  • Direct theme edit: go to AppearanceTheme File Editor, open footer.php, and paste the script before </body>. Simple, but you’ll need to re-add it if you switch themes.
  • Plugin route: install a code-snippet plugin (Insert Headers and Footers is a common one) and paste the script there instead. It survives theme switches, which makes it the safer default — especially if someone on the team updates themes periodically.

A common WooCommerce trap is caching plugins (WP Rocket, W3 Total Cache, and similar) serving a cached, stale version of the widget script after you change its config. Clear the page cache after any widget update before you sign off.

Self-built sites: widget and custom API, two channels

Sites outside Shopify and WooCommerce — a Next.js storefront, a custom Vue build, a corporate site with a bolted-on shop — don’t have one obvious template entry point. Two options work here:

Option one: the standard widget

Same idea as above: find the shared layout or master template and drop the script before </body>. On single-page apps, make sure the script only initializes once — route changes in an SPA can accidentally spin up two widget instances if you’re not careful.

Option two: custom API for deeper integration

If the site has its own login and order system and you want the chat window to already know who’s logged in and which order they’re asking about — instead of asking the customer to type their order number again — a custom API lets you wire support into your own front-end components rather than dropping in the default widget shell.

These two aren’t either/or. The same support system can run the standard widget on marketing pages and the API on a member center or order-detail page that needs deeper context, with both feeding the same workspace and customer profile.

Mobile: the three things most likely to break

Mobile traffic typically outweighs desktop for cross-border storefronts, so test the widget on an actual phone once it’s live, not just in a desktop preview:

  • Does the widget button cover the “Add to cart” or “Buy now” button on mobile
  • When the keyboard opens, is the input field and the latest message still visible
  • Does the chat window close cleanly with the back button/gesture, without a full page reload
  • Do product images or order cards get squished on small screens

Shopify and WooCommerce default themes handle mobile breakpoints quite differently, so the same widget code can render in a completely different spot depending on which theme it’s dropped into. Check each theme separately.

Multilingual: the widget should follow the page language, not your admin default

If the storefront is multilingual — Shopify Markets, a multilingual plugin, whatever the setup — the usual failure is the widget only speaking one default language. A customer switches to the French version of the page and the widget still greets them in English, which reads as “this site wasn’t built for me.”

Interface copy is the easy part to localize. The hard part is what customers actually type. YundaDesk’s AI agent automatically replies in whatever language the customer is using, no separate phrasebook to maintain. The widget also happens to be the first touchpoint for the country/language fields in the cross-border CRM — the moment a customer opens the chat, that language signal is already on their profile.

Pre-launch checklist

Pasting the code isn’t the finish line. Run through this before calling it done:

Check What to look for
Desktop load speed Widget loads asynchronously, no hit to first paint
Mobile overlap Checkout button, cart icon not covered by the widget button
Multilingual Widget copy and AI replies follow the page language on switch
Handoff AI hands off to a human seamlessly, full history carries over
Omnichannel Widget conversations land in the same customer profile as WhatsApp, email, and other channels

That last item is the one teams skip and regret later. The widget is one entry point into an omnichannel setup — if it runs as its own island, a customer who switches to WhatsApp tomorrow to chase an order has to introduce themselves all over again. For how that ties together, see what an omnichannel inbox actually solves.


Pasting the script is the easy part. What actually determines whether the widget is any good is what’s behind it — a complete AI-plus-human system, or an empty shell that just spins. Run through the checklist above for Shopify, WooCommerce, or a self-built site, and treat it as more worth your time than how fast you can paste the code.

Run this playbook in your own workspace

AI answers first, humans back up, every step is revertible — everything in this article can be put into practice in YundaDesk.