The native Storefront
A complete shop on your own address: products and variants, themes, block-built pages, promotional panels, menus, a cart and a checkout.
Open a real shop on your own address, then let the same products sell inside a conversation on your website, on WhatsApp, on Instagram and beyond. The shop prices the order, the shop signs the card, and only your customer's confirmation creates it.
Commerce in OpsIQ is four things that share one catalogue: a native storefront you own, a selling path through chat and social channels, a payment layer that never touches a card, and a published contract other platforms and developers build against.
A complete shop on your own address: products and variants, themes, block-built pages, promotional panels, menus, a cart and a checkout.
The same catalogue quoted by the server and confirmed on a signed card, across the website widget and seven messaging channels.
Provider-hosted checkout everywhere, plus bank transfer, cash on delivery, pay on collection and pay in store for the money that never goes online.
Connector Contract 2.4 with 57 declared capabilities, a typed public API and conformance tooling anyone can run.
Not a hosted page with someone else's name in the URL. Your domain, your theme, your typography, your photography, your policies. This is the real thing, running.
Colour, typography, fills and gradients, shape, width, motion, hover and how the shop behaves in light and dark. Preview desktop and phone before you save.
About, Contact, a lookbook and the account area, plus custom pages with their own hero, slug and search settings. Reserved routes such as cart and checkout stay yours to keep.
Placement, trigger, backdrop, motion, width, a coupon and once-per-visitor behaviour, built from the same blocks as everything else.
Point them at pages, products, collections, policies, cart and account actions, a live modal or a safe external link, with one level of dropdown in the header.
Forty locales, with the shop opening in the currency that follows the visitor, and your price never substituted behind your back.
Starter About and policy text where those fields are empty, never over your own words, and a readiness check that keeps warning until you have replaced it.
This is our own launch-validation shop. The shopfront, accounts, currencies, languages and checkout are the real thing. The products in it are test items, so treat it as a working demonstration rather than a catalogue.
A model that is allowed to say a number will eventually say the wrong one. So it is not allowed to. The assistant finds products and asks the server for a quote; the server prices the order, composes the confirmation card and signs it. What the shopper sees is written by the shop.
One catalogue, one quote, one signature. Three places a customer happens to be standing.
A limit that only guards the checkout page is not a limit. Every wall below is judged on the shared placement path, so the cart, the buy-now button and a confirmation in a chat all meet the same one. You set the values in Settings, and nothing on this page hardcodes them.
Goods leave before the money arrives, so you cap how much you are willing to send out that way. Above your ceiling the option simply is not offered, in the order's own currency.
Licence keys, prepaid and gift-card codes are claimed inside the order's own transaction. If there are not enough, the order rolls back and nothing is charged. Two shoppers cannot buy the same code.
Orders from the same email in the last day are summed in the same currency, never converted, and a new order that would cross your limit is refused before it is placed.
Pausing selling stops new commitments while reads, look-ups and releases keep working. Facts that are already true, such as a payment that has landed, are queued rather than executed or narrated as done.
Where OpsIQ owns the payment, a chat customer reaches an emailed six-digit code before an order is created. An operator may require more than that and never less.
Every reason the shop-floor assistant gives for a pick has to be a phrase that already appears in that product's own text. A sentence it composed itself is dropped rather than shown.
An order can start in three places. It only becomes an order in one, and that one place runs every wall you configured. Nothing is skipped because it arrived by a different route, and a refusal says what happened in a sentence the customer can act on rather than an error code.
Each of these walls is pinned by a mutation proof: the guard is deliberately broken in the source, a door-level test has to go red, and the file is restored and re-checked byte for byte. A guard that has never failed is unproven.
Every gateway OpsIQ ships uses the provider's own hosted checkout. Your customer types their card on the provider's page, on the provider's domain. OpsIQ holds a reference to a payment, never an instrument, and the code that draws that boundary refuses anything outside a reviewed list of fields.
Plenty of real trade never touches a card. Each offline method carries its own conditions rather than being a free-text note at the bottom of a receipt.
Four further providers are deliberately not shipped. Their webhooks are signed with schemes that are not HMAC at all, and folding them into an HMAC helper would produce a verifier that could never succeed. The reason for each is written down rather than left as a gap.
Region is how we group them here, never a restriction. A merchant in Lagos may well want Stripe, and a merchant in Berlin may well want Paystack. Currencies marked as your account's own follow whatever your provider account is configured for.
Commerce is built around a simple rule: nothing is treated as true because something said it was. A webhook is a prompt to go and check, a customer's claim is not evidence, and a payment is confirmed only after OpsIQ asks the provider itself and the answer matches on every field.
The card a customer confirms carries a signed payload: a nonce, the workspace, the conversation, the product, the quantity, the unit price, the currency, an expiry and the exact amount each gateway would take. It is signed with an HMAC over that payload using a key derived for your workspace alone, and verified with a constant-time comparison.
Every gateway is provider-hosted. A boundary class allows only a reviewed set of payment reference fields and refuses instrument fragments by name: card number, CVV, expiry, track data, PIN block, IBAN, sort code and more. A provider token is not a card, and is useless anywhere else.
Forged, replayed, stale and out of order are four different attacks, so they get four different answers rather than one boolean. Signatures are compared in constant time, and a webhook whose scheme does not authenticate the whole body is treated as a prompt to look the payment up, never as proof.
An operation carries an idempotency key bound to the workspace, the transaction and the exact parameters, claimed atomically. The store answers with four outcomes, not two: fresh, replay, still running, and conflict. A broken store throws rather than reporting fresh, because that is how an outage becomes a duplicate charge.
A reservation is a compare-and-swap against the exact count it read, taken inside the order's own transaction. Digital codes are claimed the same way, and a shortfall rolls the whole order back before anything is charged rather than promising a code that is not there.
Where OpsIQ owns the payment, a chat order needs an emailed six-digit code first. The code is stored only as a salted hash, attempts are counted before the comparison, the window is bounded, and burning it is a single atomic update so parallel confirmations cannot all pass.
Commerce is covered by four layers of tests and by a mutation-proof harness. The harness breaks a guard in the source, requires a named door-level test to go red, then restores the file and checks the bytes match. A guard nobody has ever seen fail is unproven.
These describe technical controls in the platform. They are not a compliance certification, and nothing here should be read as one. If you need a formal attestation for your own audit, talk to us about what your acquirer or auditor is asking for.
Selling is the easy part. What follows is the work: the customer who wants their order history, the parcel that ships in two pieces, the refund that was half paid in credit, the shopper who needs a size, the cart that was left at the door.
Sign-in with a password, order history, addresses, downloads and tracking in one place. Someone who ordered through a chat months ago can claim the same account with their email and find every one of those orders waiting.
Credit is an append-only ledger and the balance is always derived from it, never a number somebody edited. It is kept per currency and never converted, and spending it is atomic inside the order's transaction.
Sell from a shelf of encrypted codes: gift cards, prepaid cards, licence keys and scratch cards. A code is claimed when the order is placed and revealed after payment, so the same code can never go to two people.
A percentage tip is worked out on the server against the goods after discount, never on shipping or tax, and it is never taxed itself. A tip can never exceed the order it sits on, on either the cart or the buy-now path.
Send part of an order now and the rest when it lands. Each shipment carries its own carrier and tracking, and the arithmetic will not let you ship more of a line than the order actually holds. The customer sees each piece on their account page.
An order paid half in credit and half by card is refunded proportionally back to both. Refunding is transactional and idempotent, so pressing the button twice returns the money once.
Only somebody who typed their own email at your checkout is ever written to, at most twice per cart, ever. The cap is claimed in the database before the message goes out, and one click stops it permanently with no sign-in.
Seven starting points, for fashion, food, cosmetics, books, downloads, services and prepaid goods. A kit is a preview before it is an action, and each one is checked by its own verifier rather than trusted because it is in the box.
Answer one question about what you sell and OpsIQ drafts the shop: a fitting kit, your store copy and a handful of products. Everything it makes arrives as a draft. You read it, change it, and decide what gets published.
A "help me choose" panel that can recommend from your catalogue and nothing else. Every reason it gives has to be a phrase already written on that product, and any sentence it composes for itself is thrown away rather than shown.
Arithmetic against the chart you published for that product, and nothing more. Where there is no chart there is no answer, so a model cannot turn a missing size guide into a confident recommendation.
Readiness asks the questions a shopper would: is there anything to buy, can they pay, can it reach them, will anybody be told, can you be contacted. Maturity is computed from your own settings and records, never declared.
The reason store credit is a ledger rather than a number on a customer record is that a number can be wrong and nobody can tell. A history can be read back, added to, and never quietly adjusted. The balance is the sum of what happened.
Gift cards are a different mechanism and worth keeping straight. You sell them from a stock of codes, and a code is delivered after payment. Store credit is the ledger above. Today a gift-card code is not redeemed into a credit balance, so plan your offer around selling the code rather than around a redeemable wallet.
Unique visitors, product views, cart additions, checkout starts, abandons and completions, conversion, confirmed orders, revenue, acquisition, devices and places, top products and recovery. Conversion is built only from explicitly tagged public-store events, so it counts what actually happened rather than what looked close enough.
A connector does not get to sell because of its name. It declares which of its own operations answer OpsIQ's canonical commerce roles, and what it declares is exactly what it may do. Declare nothing and it disappears from the selling settings on its own. There is no list to be added to.
The assistant can find products and describe them accurately, but there is no executable order and no checkout. Every package stays here until its own typed quote and order actions pass the deeper contract, because a platform's reputation is not evidence that its integration can take money.
The connector returns a real checkout address minted by the merchant platform itself, along with the canonical quote. The address has to be HTTPS, its host has to match what the package declared, and the quote is short-lived. A product link or a cart URL assembled locally is not a checkout capability.
The deepest mode. OpsIQ refreshes the quote immediately before executing, supplies the idempotency key, and after any unknown outcome asks a recovery lookup before it retries anything. The create action has to run your platform's own pricing, stock and order logic. A raw database insert is refused outright.
OpsIQ never guesses a capability from an action's name, a platform's reputation or a vendor's marketing. A package ships a role map naming which of its own operations answer each canonical role, and that file is inside the signed package. Remove a role, or uninstall the connector, and a proposal that was already on screen stops being valid rather than leaving stale authority behind.
Talks to the WooCommerce REST API on your own WordPress. Orders, refunds and order notes, products with variations and attributes, customers, coupons, tax rates, shipping zones and methods, sales and product reports. It is one of the connectors that can create a real order from a conversation, with a recovery lookup behind it.
Works over the Shopify Admin API. Orders, transactions including capture and void, refunds, fulfilment orders and tracking, products, variants, inventory levels and locations, customers, draft orders, discounts, gift cards and abandoned checkouts. In chat it quotes and then hands the customer to Shopify's own checkout.
The reference implementation of the commerce contract, and the deepest integration here. Invoices, transactions, credit and quotes, orders, client records and contacts, services with suspend, upgrade and price changes, domains with registration, transfer, renewal and nameservers, tickets and products. It can create a real order, and prices per client because WHMCS taxes by the client's own profile.
Orders with products, messages, statuses and shipping addresses, payment capture, void and refund quoting, shipments, catalogue products and variants, categories and brands, customers and customer groups, coupons, gift certificates, carts, price lists and channels. Quotes in chat, then hands over to the BigCommerce checkout.
Deep read-and-write integrations for the shop itself: orders, invoices, credit memos and shipments on Magento; orders, states, invoices, credit slips, carriers and tracking on PrestaShop, across both its classic web service and the newer admin API. In a conversation both stay at catalogue level today.
Orders and order history, returns, products, stock and price, categories, customers and addresses, coupons and reports on OpenCart. osCommerce bridges both its legacy install and the newer REST interface, including order status, cancellation and refund. Both are catalogue-level in chat.
Customers, charges and refunds, payment intents and payment methods, subscriptions and subscription items, invoices and credit notes, products and prices, coupons and promotion codes, disputes, payouts and balance reporting. It also carries the three obligations of a payment package, so it can be the gateway as well as a catalogue.
Customers, orders, payments and refunds, catalogue items and locations, plus customer self-service for a shopper's own profile and orders. In chat it quotes and then issues a Square payment link. It is one of two gateways certified inside an existing connector rather than shipped as a separate package.
A hotel and booking integration rather than retail. Room catalogue, a quote for a stay, native booking checkout, bookings with status and cancellation, payments, guests, and self-service so a guest can see and cancel their own booking. It can create a real booking from a conversation.
A gateway package is a narrower thing than a store connector, and deliberately so. It declares what currencies, countries, methods and environment it is configured for, verifies the provider's own webhook signature scheme, and maps that provider's event names onto canonical ones. It never decides that a payment succeeded.
Connects an OpsIQ-hosted billing platform as a commerce source: catalogue, quotes, customers, orders, invoices, payment methods and payment recording, with reconciliation on a schedule so a dropped webhook cannot quietly lose revenue.
Any connector whose platform can list completed sales declares that it reconciles, and OpsIQ re-reads that list on a schedule through the same idempotent writer. A webhook that never arrived is found on the next pass. A package that could reconcile and does not fails conformance.
Commerce is not a set of integrations we happen to have written. It is a published contract with a version number, machine-checked schemas, conformance commands you run yourself and a signing step. Whatever you build sits beside what we built, under the same rules.
Most launch checklists score you. This one asks the five questions that decide whether a stranger can actually buy from you today, and every answer comes with the thing to go and do rather than a percentage.
Straight answers about the store, the money and what the assistant is and is not allowed to do.