Replace rhpk_YOUR_PUBLISHABLE_KEY with the key from your console."}},{"@type":"Question","name":"How do I connect a Shopify store to Rinhelp at /shop?","acceptedAnswer":{"@type":"Answer","text":"Open /shop, enter your-store.myshopify.com, click Connect Shopify, complete custom OAuth. One store per workspace; scopes read_orders and write_orders; Protected Customer Data for email match."}},{"@type":"Question","name":"What happens after I paste the script — where do conversations go?","acceptedAnswer":{"@type":"Answer","text":"Every chat lands in the shared inbox. Threads the agent could not answer from indexed sources are flagged in the miss pile."}},{"@type":"Question","name":"How does Shopify WISMO / order lookup work in the widget after connect?","acceptedAnswer":{"@type":"Answer","text":"Visitor submits order number + email. Connected Shopify returns order name, a closed-set fulfillment status, and tracking (company optional, number, url). Miss → refuse + handoff. Operators: shopify.lookup_order."}},{"@type":"Question","name":"How does a Shopify refund request get approved before refundCreate?","acceptedAnswer":{"@type":"Answer","text":"Widget intake → shared inbox → console or MCP inbox.approve_action / inbox.reject_action → then Shopify refundCreate."}},{"@type":"Question","name":"Will the embedded AI chat widget break my Shopify theme CSS?","acceptedAnswer":{"@type":"Answer","text":"The panel is hosted with shadow isolation. You style color, corner, and greeting in the Rinhelp console; theme CSS stays on the theme."}},{"@type":"Question","name":"What fulfillment status labels can a Shopify order lookup return?","acceptedAnswer":{"@type":"Answer","text":"Canceled, Fulfilled, In progress, On hold, Partially fulfilled, Pending, Processing, Restocked, Scheduled."}},{"@type":"Question","name":"Can I add the widget beside an existing support stack?","acceptedAnswer":{"@type":"Answer","text":"Yes. Paste Custom Liquid, connect /shop when you want order paths, and keep ticket work on the tools your team already runs."}}]}
All posts

How to Add AI Support to Shopify (One Script Tag)

  • topic

    Shopify

  • published

    Sep 10, 2026

  • reading time

    7 min

  • author

    Wilbert Liu

the short version

In Rinhelp, index your storefront pages, style color, corner, and greeting, then preview a real question. Paste one publishable-key script into a Shopify Custom Liquid section. Conversations land in the shared inbox with cite + refuse from indexed pages. Open /shop, enter your-store.myshopify.com, complete custom OAuth (one store per workspace; read_orders, write_orders; Protected Customer Data for email match). The same widget then runs WISMO — order number + email → order name, closed fulfillment status, tracking company optional / number / url; miss → refuse + handoff — and refund requests that wait for human or MCP approve before Shopify refundCreate.

I get the same Shopify question a lot: “Where do I paste the chatbot, and how do orders show up in the same chat?”

Add Rinhelp AI support to a Shopify storefront in two doors on the same widget. First, create the website source, style color, corner, and greeting, preview a real question, then paste one script into a Custom Liquid section. Chats land in the shared inbox. Second, open /shop, enter your-store.myshopify.com, and complete custom OAuth so WISMO (order number + email) and refund requests that approve, then refundCreate, unlock in that same chat.

Here is the script shape you will paste:

html
<script src="https://rinhelp.com/api/widget.js?key=rhpk_YOUR_PUBLISHABLE_KEY" async></script>

This page is the Shopify-only how-to: Custom Liquid clicks, then /shop connect, then short WISMO and refund summaries with deep links. The broader loop map lives on Shopify AI customer support. The generic (any site) paste guide lives on add AI support with one script tag.

What “add AI support to Shopify” means here

On this page it means a hosted chat widget on the storefront, grounded in indexed pages with cite and refuse, plus an optional /shop connect so order lookup and refund intake run in the same panel. Policy answers come from published pages. Order and refund paths come from connected Shopify, not from the page crawl.

Before you paste (Rinhelp console)

  1. Add and index the storefront (or the host where support pages live) so the agent can ground answers in real URLs.
  2. Style the chat — color, corner (bottom-right or bottom-left), title, greeting — then preview a real question you know is on an indexed page.
  3. Copy the publishable-key script (rhpk_…) from the console.

Product surface for the panel: live chat. Same script story without Shopify Theme editor depth: one script tag.

Part 1 — Install on Shopify with Custom Liquid

Merchants who can open Theme editor can follow these clicks:

  1. In Shopify admin, go to Online Store → Themes → Customize on the live theme.
  2. Open the template where the launcher should appear. Prefer a section that loads store-wide (footer-adjacent is a common pattern) so one paste covers the storefront.
  3. Add section → Custom Liquid.
  4. Paste the Rinhelp script (async widget.js?key=rhpk_…).
  5. Save. Load the storefront in a private window, open the launcher, and ask a policy question you know is on an indexed page.

The panel is hosted. Shadow isolation keeps theme CSS yours. You style in the Rinhelp console; Shopify owns the theme.

When you smoke-test, ask something your shipping or returns policy page actually answers, then click the citation and confirm the page carries the claim. That is the install bar for Part 1 — policy grounding live on the storefront — before you unlock order paths in Part 2.

Optional backup path: if you already edit theme code for analytics, you can paste the same script in Layout → theme.liquid before </body>. Custom Liquid remains the path this guide leads with. Dawn-class themes usually keep a Custom Liquid section available without digging into raw layout files.

What goes live after Part 1

Once the script is on the theme, the widget answers policy and published-page questions — shipping policy, returns policy, sizing, help — with citations when indexed pages support the ask, and a clear refusal when they do not. Every conversation lands in the shared inbox; unanswered threads show up in the miss pile so you can see what to write next.

Deep product: AI agent · cite and refuse how-to.

Part 2 — Connect Shopify at /shop

Order lookup and refund intake use the connected shop, not the crawl. After Part 1:

  1. Sign in to Rinhelp and open /shop (console: Shop).
  2. Enter the myshopify domainyour-store.myshopify.com.
  3. Click Connect Shopify and complete custom OAuth.
  4. Confirm the connected card shows domain and scopes.
  5. Ensure Protected Customer Data access so email match works for WISMO and refund intake.

Claimable connect facts: one Shopify store per workspace; scopes read_orders and write_orders; custom OAuth at /shop.

After the connected card looks right, go back to the storefront widget and run one order lookup with a real order number + email you control. Confirm the status label is one of the closed set below and that tracking lines match Shopify Admin. That is the smoke test for Part 2.

Part 2b — WISMO after connect

Shoppers ask where the order is in the same widget.

  • Inputs: order number + email.
  • Source: connected Shopify.
  • On found: order name; fulfillment status from this closed set only — Canceled | Fulfilled | In progress | On hold | Partially fulfilled | Pending | Processing | Restocked | Scheduled; tracking with company (optional), number, and url.
  • On miss: refuse + handoff.
  • Operators: MCP shopify.lookup_order — same locked fields as the widget.

Policy FAQs still cite indexed pages in the same conversation when the ask is about published rules rather than a specific order. Order facts come from Shopify; page facts come from the index.

Full field essay: Shopify WISMO order lookup.

Part 2c — Refund after connect

Shoppers can start a refund request in the widget (order number + email; amount and reason as the form collects). That step does not move money.

  1. The request lands in the shared inbox as an action.
  2. A human in the console — or MCP inbox.approve_action / inbox.reject_action — approves or rejects.
  3. After approve, Rinhelp calls Shopify refundCreate.

Full gate essay: Shopify refund with human approval.

Beside your stack

You can add the storefront widget beside tools you already use for tickets. Install and connect stay the same; ticket workflows stay where your team already works. The widget owns storefront FAQ, WISMO, and refund intake with an approve step; your existing stack keeps the human ops you already trust.

Pricing (light)

As of 2026-09-10 on pricing: $29/mo for 300 resolutions, then $0.10; unresolved conversations free; 14-day trial with up to 100 resolutions and 500 messages. Re-check that page before you buy or publish a screenshot.

FAQ

How do I add AI support to Shopify with one script tag?

Index pages in Rinhelp, style the chat, copy the widget.js?key=rhpk_… script, then paste it into a Shopify Custom Liquid section via Theme editor → Customize → Add section. Save and test on the storefront.

How do I install an AI chat widget on Shopify using Custom Liquid?

Online Store → Themes → Customize → choose a store-wide or footer-adjacent section → Add section → Custom Liquid → paste the Rinhelp script → Save.

What does the Rinhelp Shopify install script look like?

html
<script src="https://rinhelp.com/api/widget.js?key=rhpk_YOUR_PUBLISHABLE_KEY" async></script>

Replace rhpk_YOUR_PUBLISHABLE_KEY with the key from your console.

How do I connect a Shopify store to Rinhelp at /shop?

Open /shop, enter your-store.myshopify.com, click Connect Shopify, complete custom OAuth. One store per workspace; scopes read_orders and write_orders; Protected Customer Data for email match.

What happens after I paste the script — where do conversations go?

Every chat lands in the shared inbox. Threads the agent could not answer from indexed sources are flagged in the miss pile.

How does Shopify WISMO / order lookup work in the widget after connect?

Visitor submits order number + email. Connected Shopify returns order name, a closed-set fulfillment status, and tracking (company optional, number, url). Miss → refuse + handoff. Operators: shopify.lookup_order.

How does a Shopify refund request get approved before refundCreate?

Widget intake → shared inbox → console or MCP inbox.approve_action / inbox.reject_action → then Shopify refundCreate.

Will the embedded AI chat widget break my Shopify theme CSS?

The panel is hosted with shadow isolation. You style color, corner, and greeting in the Rinhelp console; theme CSS stays on the theme.

What fulfillment status labels can a Shopify order lookup return?

Canceled, Fulfilled, In progress, On hold, Partially fulfilled, Pending, Processing, Restocked, Scheduled.

Can I add the widget beside an existing support stack?

Yes. Paste Custom Liquid, connect /shop when you want order paths, and keep ticket work on the tools your team already runs.

Over to you

Two doors, one widget: Custom Liquid install, /shop connect, then WISMO and approve-then-refundCreate in the same chat.

Required siblings: Shopify AI customer support · One script tag · WISMO order lookup · Refund with human approval

Optional next reads: Best Shopify AI chatbots 2026 · What is cite and refuse · What is a support miss pile.

Start with the support questions your website can already answer.

Add your site, style the chat, and paste one line into your page. By the end of the afternoon you will know what your content already answers — and, from the flagged conversations, exactly what it is missing.