Docs · Shopify Integration · App Version 2026-01

FloGPT for Shopify — Integration Guide

Everything you need to install, configure, and operate the FloGPT Shopify app. Storefront chat widget, AI voice agent, in-call Shopify tools, outbound triggers, webhooks and GDPR — all in one place.

· Read-only Shopify scopes· HMAC-verified webhooks· GDPR / DPDP compliant
Step 1

Install the FloGPT Shopify app

FloGPT is distributed as an embedded Shopify app. Open the FloGPT listing on the Shopify App Store, click Add app, and approve the requested OAuth scopes. Shopify redirects you straight into the embedded FloGPT admin.

  1. Open the Shopify App Store and search for FloGPT.
  2. Click Add app. Shopify prompts you for the OAuth scope grant.
  3. On first install, FloGPT auto-creates a Shopify-scoped account for your store using <shop>@shopify-merchant.flogpt.com. You don't need to register separately.
  4. The app provisions a unique widget ID and registers webhooks declaratively from shopify.app.toml.
Step 2

OAuth scopes requested by FloGPT

FloGPT requests read-only scopes for the data the AI agent needs to answer support questions and recommend products. Refund and cancel actions never happen silently — they route to a human ticket with the call or chat transcript attached.

ScopeWhat FloGPT does with it
read_ordersOrder lookup, status, line items
read_customersCustomer 360 — past orders, contact details
read_fulfillmentsLive shipment status and tracking URLs
read_returnsReturn eligibility and existing return cases
read_productsProduct search, attributes, variants, pricing
read_inventoryFilter recommendations by in-stock items
read_discountsQuote active discount codes during a call/chat
read_checkoutsAbandoned-checkout recovery triggers
read_contentPages and blog content for knowledge grounding
read_legal_policiesRefund/return, shipping, privacy & terms policies
read_themesNext versionDetect whether the app embed is live in the published theme. Read-only, and limited to config/settings_data.json on the main theme.Not in the currently published app version — no store has granted it.
Step 3

Enable the storefront chat widget

The chat widget installs as a theme app embed. No theme code changes are required and you can toggle the widget on or off without touching Liquid.

  1. From the embedded FloGPT admin, click Open theme editor. The link deep-links straight to your live theme's App embeds drawer with the FloGPT embed pre-selected.
  2. Toggle FloGPT Chat Widget to on.
  3. Click Save. Visit your storefront — the chat bubble should appear in the configured corner within seconds.

The embed automatically detects your shop domain and the widget loads its configuration from FloGPT — no widget ID needs to be hardcoded into the theme.

Step 4

Open the full FloGPT dashboard

The embedded admin covers widget toggles and customization. For everything else — knowledge base, voice agents, call pipelines, workflows, analytics — click Open Dashboard.

  • The button mints a fresh single-use SSO code on every page load with a 60-second TTL.
  • It redirects to /auth/shopify-sso?code=… on the FloGPT frontend, which exchanges the code for a session.
  • If the SSO code can't be minted, the button is replaced with a clear diagnostic banner — you'll never end up on a generic login screen.
Step 5

Customize the widget

Inside Shopify

Quick settings

  • · Theme (light, dark, auto)
  • · Launcher position
  • · Widget title
  • · Welcome message and greeting
  • · Input placeholder text
  • · Active / inactive toggle
In the full dashboard

Advanced customization

  • · Brand colors and gradients
  • · Custom CSS and fonts
  • · AI system prompts
  • · Knowledge-base sources
  • · Workflows and triggers
  • · Analytics and transcripts
Reference

AI tools in voice & chat

During a call or chat, the FloGPT agent reaches Shopify through a single shopify tool whose action list is narrowed to the scopes you've granted — the LLM is never shown an action it has no permission to run.

search_products

Search the live catalog by keyword, filtered to in-stock items.

get_product

Full details, variants, pricing and images for one product.

list_orders

Find a shopper's own orders by their email or phone.

get_order

Full details for one order by name (e.g. #1042) — line items, totals, status.

track_order

Current shipping status with carrier and tracking URL, gated on a phone match.

get_customers

Resolve a customer profile and order-history summary for support context.

Reference

Outbound trigger templates

Outbound calls fire from Shopify webhooks and time-relative cadences. Each trigger ships with a Shopify webhook subscription, a dedupe key, a phone resolver and a default call script — drop it into a pipeline and the agent starts dialing.

Cart Abandoned

carts/update

Recovery SMS + outbound call once cart value crosses your minimum.

Checkout Abandoned

checkouts/create

Recover the sale while it's still warm — agent dials with cart context.

High-Value Order

orders/create

Confirmation call on high-AOV orders to verify intent and reduce chargebacks.

Shipment Created

fulfillments/create

Proactive "your order is on the way" call with live tracking link.

Refund Initiated

refunds/create

Confirmation call when a refund is created — sets clear expectations.

Post-Delivery CSAT

time-relative

Automated CSAT call N days after fulfillment — capture feedback and reviews.

Reference

Webhooks & data flow

Webhook subscriptions are declared in shopify.app.toml (the App Store source of truth) and reconciled on every page load of the embedded admin. The API version is pinned to 2026-01.

TopicPurpose
app/uninstalledUninstall cleanup — marks the merchant inactive in FloGPT
app/scopes_updateRe-syncs scopes after a permissions change
app_subscriptions/updateLegacy Billing API plan changes (pre-App-Pricing subscriptions)
orders/createPowers high-value order confirmation calls
orders/updatedKeeps order state in sync for in-call lookups
orders/paidMarks the order payable before any confirmation outreach
orders/cancelledSuppresses follow-up triggers and updates state
orders/fulfilledPowers proactive shipment-update calls
orders/partially_fulfilledSplit-shipment state for "where is my order" answers
fulfillments/createTracking numbers land in the mirror as carriers push them
fulfillments/updateShipment status changes, including cancelled fulfillments
fulfillment_events/createCarrier scan timeline — in transit, out for delivery, delivered
refunds/createAnswers "did my refund go through" without an API hop
returns/*Return lifecycle (request, approve, decline, cancel, close, reopen, update)
products/*Catalog mirror for product and availability questions
inventory_levels/updateKeeps "is this in stock" answers accurate
discounts/*Lets the agent quote currently-active promo codes
checkouts/*Abandoned-checkout recovery surface
shop/updateRe-seeds store profile, pages and policies into the agent's grounding
bulk_operations/finishBackfill worker reacts on completion instead of polling
customers/createOnboarding flows and welcome SMS triggers
customers/updateCustomer context stays current for support agents
customers/deleteRemoves the customer reference from FloGPT
customers/data_requestGDPR — packages customer data on request
customers/redactGDPR — purges customer PII from the order and customer mirrors
shop/redactGDPR — purges the entire shop record after uninstall
Compliance

Protected customer data — what we use and why

Shopify permits access to protected customer data only where it delivers app functionality. Every field FloGPT reads is listed below against the feature that consumes it. Access is read-only throughout.

FieldUsed byWhy it's required
Order number & order contentsshopify → get_order / list_ordersAnswers "where is my order" and "what did I buy" with the shopper's own line items, totals and payment status.
Fulfillment & trackingshopify → track_orderReturns carrier, tracking number and tracking URL so the agent resolves shipping questions without a human.
Email addressshopify → list_orders / get_customersThe lookup key a shopper gives to find their own orders, and the field matched against the order before anything is disclosed. Merchants can restrict it to the signed-in shopper.
Phone numbershopify → track_order · outbound notificationsGates disclosure — a tracking lookup is refused when the supplied phone does not match the order. Also the number merchant-configured notifications dial, under quiet hours, a 24h dedupe window and DLT/TCPA consent rules.
NameAgent console · customer contextLets the AI and the human agent taking over address the shopper correctly and confirm they have the right record.
Shipping addressshopify → get_orderAnswers "where is it going" and resolves delivery exceptions — a wrong city or undeliverable postcode cannot be corrected unless the agent can read the address back.
Customer default addressshopify → get_customersCountry and region only, so shipping times, duties and the applicable return address are answered for the shopper's own locale.
Billing addressNot read or storedThe order mirror has no billing-address field and the bulk order query never selects one. The single touch is reading billing_address.phone as the last fallback when an outbound notification has no other number for the customer; no billing address field is persisted or displayed.
Order count & amount spentAgent console · customer contextLets a human agent gauge account standing before applying a goodwill or returns decision.
Shopify customer IDInternal join key onlyNever shown to the AI or to staff. Links the Shopify record to ours across an email change, and is the selector used to execute a customers/redact deletion reliably.

Minimization is enforced in product, not policy

  • Per-field opt-in. You choose, per action, which fields the AI is allowed to receive. Unselected fields are stripped before the response reaches the model — not hidden in the UI afterwards.
  • Self-service only. Switch on Require authenticated user email for order listing and Restrict to authenticated user for customer lookup, and the agent can only ever retrieve the signed-in shopper's own records — arbitrary lookups become impossible.
  • Ownership check before disclosure. Order tracking matches the caller's phone against the phone on the order and refuses the lookup on a mismatch. Order-name matching is exact, so #100 cannot surface #1001.
  • Capped result sets. At most 10 orders or 5 customer records per lookup, so no path enumerates your customer list.
  • Transcript redaction. Opt-in masking removes email, phone, card number, SSN, IP and street address from chat and call transcripts before they are stored.

Deletion behaviour

On customers/redact, every materialized PII field on the customer and order mirrors is nulled and the raw Shopify payload is removed outright. Non-PII accounting fields (totals, currency, financial status) are kept so your bookkeeping survives the deletion. On shop/redact all orders, customers, the merchant record and the OAuth session are deleted, and stored webhook payloads for the shop are scrubbed — only non-PII audit metadata proving the request was honoured remains.

Scopes FloGPT does not request

None of the scopes below are in the OAuth grant, and none are requested through the Partner Dashboard. They are listed only so this page can be diffed against the manifest without the gaps reading as undisclosed access.

read_all_ordersNot requested

Not needed. The agent answers questions about current orders, which the default 60-day window covers, and everything placed after install arrives through the orders/* webhooks. No date-filtered historical query exists in the codebase. Not in the OAuth grant and not requested through the Partner Dashboard.

write_ordersNot requested

No code path mutates an order. Cancel and refund intents open a human ticket instead.

write_themesNot requested

The app embed is read to detect activation; it is never written.

read_shippingNot requested

No shipping-rate query exists — shipping answers come from fulfillment tracking.

read_analyticsNot requested

Chat ROI metrics are computed from FloGPT's own conversation records.

read_purchase_optionsNot requested

Product reads never select selling-plan or subscription fields.

read_product_feedsNot requested

The catalogue mirror uses the standard products connection.

read_own_subscription_contractsNot requested

FloGPT is not a subscription-commerce app. It never reads a customer subscription contract; there is no subscriptionContract query in the codebase.

write_own_subscription_contractsNot requested

No subscription contract is ever created, modified or cancelled. No subscriptionContract mutation exists in the codebase.

write_customer_payment_methodsNot requested

FloGPT never stores, vaults or updates a customer payment method. No customerPaymentMethod mutation exists in the codebase.

How merchants pay for FloGPT

FloGPT bills through Shopify App Pricing, with plans defined in the Partner Dashboard. App Pricing apps are refused the Billing API outright, so the app never calls appSubscriptionCreate, appUsageRecordCreate, appSubscriptionLineItemUpdate or appSubscriptionCancel. Merchants subscribe on Shopify's hosted plan page and the app observes the result: the only billing read is currentAppInstallation.activeSubscriptions, which is the app's own installation data and needs no access scope. Metered usage is reported through the App Events API and priced by Shopify from the dashboard meters.

The app_subscriptions/update webhook subscription is retained solely for merchants whose app plan predates the move to App Pricing — those continue to bill through the Billing API and continue to emit it. It carries no shopper data and is unrelated to subscription contracts.

Compliance

Privacy, GDPR & data retention

FloGPT implements Shopify's mandatory compliance webhooks plus additional opt-in privacy controls for chat and call transcripts.

customers/data_request

A merchant request is logged and any customer data FloGPT has stored is packaged for delivery within the documented response window.

customers/redact

Customer chat transcripts, call transcripts and stored profile fields are purged after the documented retention window so no PII remains tied to that customer.

shop/redact

48 hours after a shop uninstalls FloGPT, the entire shop record (merchant profile, encrypted creds, derived caches) is purged.

Operations

Troubleshooting

The embedded admin runs four health probes on every load — backend sync, SSO code minting, public widget lookup, and widget asset CDN — and surfaces a diagnostic banner the moment one of them fails. The most common issues and their fixes:

Backend connection problem

Symptom
The embedded admin shows "FloGPT can't reach the backend".
Cause
INTERNAL_API_SECRET in the Shopify-app deploy env doesn't match the FloGPT backend's env, or the backend isn't reachable from the app.
Fix
Set INTERNAL_API_SECRET to the same value on both sides, redeploy, then reload the embedded admin — the merchant row re-syncs automatically.

Storefront lookup not found

Symptom
Banner: "Widget can't be resolved from your shop domain." The theme embed loads but no chat bubble appears.
Cause
The merchant row exists but the public /api/widget/shopify/by-domain endpoint returns 404 — usually a stale install on a renamed shop domain.
Fix
Open the embedded admin once to trigger a re-sync, or click "Re-validate" in the FloGPT integrations panel. If the shop's primary domain changed, the embed picks it up on the next load.

Widget script bundles missing

Symptom
Banner: "Widget JavaScript can't be loaded from your frontend."
Cause
The FloGPT frontend was deployed without a production build, so the widget bundles aren't present at the expected /widget/ URL.
Fix
Redeploy the FloGPT frontend with `npm run build` and confirm `/widget/flogpt-widget.js` and `/widget/flogpt-widget-ui.js` both return 200.

Open Dashboard goes to /login

Symptom
Clicking "Open Dashboard" dumps you on a generic login screen instead of signing you in.
Cause
The SSO single-use code couldn't be minted, almost always cascading from a backend sync failure above.
Fix
Fix the backend connection first, reload the embedded admin, then click Open Dashboard again — the code is minted fresh on every load with a 60-second TTL.

Webhook says 401

Symptom
Shopify's webhook console reports 401 Unauthorized for the FloGPT endpoint.
Cause
HMAC signature mismatch — the app's API secret was rotated, the raw request body was modified by a proxy, or the wrong webhook URL is registered.
Fix
Re-register webhooks from the embedded admin (it auto-reconciles on every load), and confirm no upstream proxy is gzipping or re-serializing the JSON body.
Shopify · Docs FAQ

Frequently asked questions

Install FloGPT from the Shopify App Store, approve the requested OAuth scopes, and Shopify redirects you into the embedded FloGPT admin. The app provisions a widget ID and a FloGPT account for your store automatically — no extra signup is needed. You can manage the chat widget and open the full dashboard from inside Shopify.

Ready to plug FloGPT into your Shopify store?

Install the app, enable the theme embed, and let the AI agent handle order lookups, refunds, returns and recovery calls 24/7 — across phone and chat.