Guide · Shopify
HAL on Shopify in three steps.
No app store, no monthly plugin. One snippet in your theme and HAL chats on every page — storefront, collections, checkout-adjacent, the lot.
Step 1 — copy your widget code
In HAL: Settings → Widget → Install. Copy the snippet (it contains your project ID):
<script
src="https://api.chatwithhal.com/widget.js"
data-project-id="YOUR_PROJECT_ID"
async
></script>Step 2 — add it to your theme
- Shopify admin → Online Store → Themes.
- On your live theme: ⋯ → Edit code.
- Open Layout/theme.liquid.
- Paste the snippet just before
</body>. - Save — the launcher appears on every page that uses the theme.
Prefer not to touch theme code? Most theme editors accept custom HTML/liquid blocks in the footer section — the snippet works anywhere raw HTML renders.
Step 3 — make it feel native
- Set the primary color to your store's accent (Settings → Widget).
- Pick bottom-left if your theme puts badges bottom-right.
- Add a teaser bubble: "Question about sizing or shipping? Ask away."
Identify logged-in customers
If your theme exposes the customer object, identifying logged-in shoppers turns their chats into contact records — with order history context one identify away:
<script>
{% if customer %}
window.addEventListener('load', function () {
if (window.HalWidget) {
HalWidget.identify({
email: {{ customer.email | json }},
name: {{ customer.name | json }}
});
}
});
{% endif %}
</script>Verify identities for extra safety — see identity verification.
Store-specific tips
- Pre-sales questions convert — a page-visit automation on collection pages ("Want a hand picking?") beats a generic greeting.
- Track add-to-cart — Shopify's events can map to HAL tracking for attribution from first visit to order.
- Test on mobile — most storefront traffic is mobile; check the launcher clears your sticky bar.
- Hide on specific templates? Wrap the snippet in a template conditional if you truly need it gone somewhere.