Help
Everything on one page.
Install the module, connect your shop, and fix anything that goes wrong. Jump to the part you need.
- Install the module
- Your pairing code
- Connect your shop
- AI services
- Visits this week
- Sales from AI assistants this month
- Billing
- When something goes wrong
- Upgrading
- Leaving
- For your developer
- Contact
Install the module
You need:
- Odoo 18, 19 or 20, with the eCommerce app installed.
- An Odoo you can install your own modules on: Odoo.sh, or your own server. Odoo Online does not allow that, so it is not supported.
- Administrator access. The AI Shopping Assistants app is for administrators only.
Download the AI Shopping Assistants module for your Odoo (zip, v6.46.0):
Not sure which you have? In your Odoo, open Settings and scroll to the bottom of the page: the About block there reads Odoo 18.0, 19.0 or 20.0, with +e after it on Enterprise.
Each zip holds one module folder, agsync_connector; install it the way you install any module of your own.
On your own server
- Put the
agsync_connectorfolder in your addons path, and restart Odoo. - In your Odoo, turn on developer mode (at the bottom of Settings → General Settings, under Developer Tools), open Apps and choose Update Apps List: a newly added module is not listed until you do. Then remove the Apps filter from the search box, search for AI Shopping Assistants and press Install.
- It has its own app, AI Shopping Assistants, on your Odoo's home screen, and it opens on its Overview.
On Odoo.sh
On Odoo.sh a module is part of your repository, so there is no folder to copy onto a server and no Odoo to restart. Adding one is a commit, a push and a build, and the build takes as long as your branch usually takes.
- Add the
agsync_connectorfolder to a staging branch first if you have one, alongside your other modules. A production branch is not the place to meet a build for the first time. - Push. Odoo.sh builds that branch; wait for the build to finish, then install and try it there.
- When you are happy, merge to production and let that branch build too.
- In your Odoo, turn on developer mode (at the bottom of Settings → General Settings, under Developer Tools), open Apps and choose Update Apps List: a newly added module is not listed until you do. Then remove the Apps filter from the search box, search for AI Shopping Assistants and press Install.
- It has its own app, AI Shopping Assistants, on your Odoo's home screen, and it opens on its Overview.
Odoo marks a staging build as a copy, and the module says so on its own screen. Where the status line would tell you what is being sent, it reads:
Updates are switched off because this is a copy.
That is expected on a staging branch and there is nothing to fix. Nothing is sent from a copy, so Connect refuses there: the pairing code is for the production build. What a staging branch is for is everything that runs inside your own Odoo: press Run the setup checks again on the app's Grade screen, read the lines it prints, and open your shop's agent pages in a browser. They are listed further down this page, and they answer on a staging build like anywhere else.
Merging to production builds that branch too, and the module is installed per build. In the production build's Odoo, turn on developer mode (at the bottom of Settings → General Settings, under Developer Tools), open Apps and choose Update Apps List: a newly added module is not listed until you do. Then remove the Apps filter from the search box, search for AI Shopping Assistants and press Install. If your project has only a production branch, install it there and skip the staging step; the setup checks run the same, and there is no copy warning to read past.
Your Zaltric Score, and the setup checks
The app's Grade screen shows two things. Once your shop is connected to Zaltric, it shows the Zaltric Score the free check on check.zaltric.com gives your shop: the same number and letter, from the same check, which reads your shop from outside as an AI assistant would. Your shop's part is out of 60 and your software's out of 40, and under them, what would raise your grade, with the points each line would add and, where your Odoo can fix it, the setting that does. Under the grade are the setup checks, which run inside your own Odoo, need no connection, and look at your Odoo's own settings, which a check from outside cannot see.
Check again asks Zaltric's free check to grade your shop again, at the web address Zaltric already holds for it. Your Odoo sends only which of your shops to check, never runs it on its own, and Zaltric limits how often each shop can be checked. A shop that was never connected has no Check again and sends nothing; you can check any shop at check.zaltric.com instead.
Your shop's addresses start with http:// behind a proxy
Odoo writes the addresses in your robots.txt and your sitemap from the address it believes each visit arrived on. If a web server or a tunnel sits in front of your Odoo (nginx, Apache, Caddy, Cloudflare), Odoo only knows a visit used https when two things are true:
proxy_mode = Trueis set in the Odoo configuration file, and Odoo has been restarted.- The web server in front of Odoo sends both
X-Forwarded-HostandX-Forwarded-Proto: httpson every request. Odoo ignores the second one when the first is missing.
nginx (from Odoo's own deployment guide), in the location blocks that pass to Odoo:
proxy_set_header X-Forwarded-Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Real-IP $remote_addr;($scheme is https on the server block that serves https. Behind a load balancer that ends https before nginx, write https.)
Apache: ProxyPreserveHost On and RequestHeader set X-Forwarded-Proto "https". Apache's mod_proxy already sends X-Forwarded-Host.
Caddy: reverse_proxy sends both headers by default.
Cloudflare, or a Cloudflare Tunnel straight to Odoo: Cloudflare sends X-Forwarded-Proto but never X-Forwarded-Host. Add a Request Header Transform Rule that sets X-Forwarded-Host to your shop's host name, for example shop.example.com, on requests to that host.
Turn on proxy_mode only when Odoo sits behind a proxy you control. With it on, Odoo trusts these headers from whoever sends them.
Then run the Setup check again from your shop's own address.
A product feed for your shop
A feed is a list of your products that an AI assistant reads to learn they exist. Odoo 19 and Odoo 20 make a Google feed themselves; Odoo 18 does not, so the free module makes one for it.
On an Odoo 18, open the app's Settings screen, switch Product feed on and press Save. The feed's address carries a secret key, so it is never shown: Copy feed address puts it on your clipboard.
On an Odoo 19 or an Odoo 20 there is nothing to switch on here. The feed is Odoo's own, and you switch it on under Website → Configuration → Settings → Google Merchant Center on the same screen as your other website settings. To get its address, press Manage feeds in that block and copy the feed's address. Once that feed is on, the Google row's Finds products cell on the app's Assistants screen reads:
Ready. Your Odoo's own Google product feed is on. Add it in your Google Merchant Center if you have one.
On every series, adding the address in Merchant Center is your move, if you have an account there.
If you later upgrade to Odoo 19 or Odoo 20, press Run the setup checks again on the app's Grade screen. It tells you that the feed address has changed, and where the new one is.
This feed is built and served inside your own Odoo (nothing about it is fetched from Zaltric), and the account that reads it is yours. It goes on being served whether or not you have a subscription. What a subscription adds, and what stops when it ends, is the hosted shop window.
A product list for ChatGPT
Apply at chatgpt.com/merchants first: ChatGPT takes product lists only from shops OpenAI has approved. The free module builds that file for you, in OpenAI's format, from the same products your Google feed carries. Nothing in the free module sends the list to OpenAI: an approved shop delivers the file the way OpenAI explains on approval.
On Odoo 18, 19 and 20, open the app's Settings screen, switch Show your products in ChatGPT on and press Save.
OpenAI requires a brand on every product, and Odoo has no brand field of its own. A product carrying a product attribute named Brand is read. On Odoo 20, an attribute whose External Identifier is brand is read whatever it is called, and one named Brand with a different External Identifier is not. For the rest, write your brand once in Brand for products that have none on the same screen, and only where it is true of them. The line under the switch counts the products OpenAI would refuse, and says why.
Whether your products appear in ChatGPT is OpenAI's decision, not Zaltric's.
Pages assistants may quote
A shopper who asks an AI assistant about your returns, delivery times or warranty can be given your shop's own words, quoted, with the page they come from and the date you last changed it. Which pages, you decide. On the app's Settings screen, under Pages assistants may quote, the shop picked at the top lists what it could let an assistant quote: its terms and conditions page (when your Odoo serves one, that is when the invoice terms are a link to a web page), every published page of that website, and the descriptions of its published delivery methods. Each is a tick, and nothing is ticked until you tick it. Untick a page and it stops being quoted at the next update. A page kept behind a password or a sign-in is never offered.
Each ticked page is split at its headings into short passages, and the passages travel in the ordinary catalogue update: a change to a ticked page, to the terms, to a delivery method's description, or to the ticks themselves sends an update as a product change does. A long section is split and sent in parts. A page over the module's bounds is left out whole, and the block says which and why.
Odoo's own sample terms are refused, ticked or not. When you first switch the terms to a web page, Odoo fills it with a sample, and the block says beside the tick that it is still Odoo's sample text until you write your own. Once the terms page is ticked and the terms are your own, an assistant can also be handed the page as the terms link on a basket. Real terms left unticked send neither their passages nor a link, and the block says the terms are not ticked; untick them and the link is withdrawn at the next update. A shop upgraded from an earlier version sends what it sent before until somebody ticks a page. How the module recognises Odoo's sample is set out under For your developer.
Your returns policy
On the app's Settings screen, under Returns, say how returns work at your shop, as your returns page says it: how many days after delivery a customer has, the country it applies to, who pays the return postage, and your returns page. Your home page then tells search engines and AI assistants your returns policy, in your own facts.
Nothing is said until either the number of days and the country, or the returns page, are filled in. Empty the fields and it stops being said.
Delivery prices and delivery times
Your home page tells search engines and AI assistants what your delivery costs, with nothing to set up: each published delivery method with a fixed price, what it costs, and the order total from which it is free. A method limited to some postcodes in the US, Canada or Australia is stated too, with the postcodes it serves. A method priced by weight, or limited to some products, is not stated, because its price depends on the basket: say what it costs on your delivery page.
How long delivery takes is yours to say, because Odoo has no place for it. On the app's Settings screen, under Delivery times, each delivery method with a fixed price that brings an order to an address has two ranges, in working days, as your delivery page says them: Days to dispatch, from the order to the day it leaves you, and Days in transit, from then to the door. Give the fewest and the most days for each, the same number when it is always the same. Your home page then states them for that method.
Nothing is said about a method until you fill in its days, and emptying all four figures stops it being said. The delivery time line on the app's Grade screen opens this setting.
Your prices when you take sales through Stripe
Your products reach your Stripe catalogue at the price your own Odoo checkout charges for one of each, worked out by Odoo itself from your US dollar price list and its rules, and that is the price Stripe shows and charges.
In your Stripe Dashboard, under Settings, Agentic Commerce, switch on Product price and availability. Stripe then asks your Odoo for a product's price and whether it is in stock, instead of waiting for the next catalogue update. It uses the same address as Stripe's other checks, so there is nothing more to enter. It needs version 6.42.0 of the module or later; until then, Stripe uses your catalogue.
If your shop sells in another currency, Odoo converts each price to US dollars at the day's exchange rate, so a product can come out at an odd figure such as $18.33, and two of it may not cost exactly twice one. An order for more than one of a product can then come out a cent away from what Stripe expects, and is declined. To avoid that, give your US dollar price list fixed prices for your products, or a formula based on your sales price with Odoo's rounding rules (for example, round to 1.00 and take off 0.01, so every price ends in .99). Your checkout, your Stripe catalogue and the assistants then all show the same round figure.
Giving your customers the shopper skill
From module 6.45.0, every connected shop offers a shopper skill: a small file that turns your customer's own AI assistant into a personal shopper for your shop. It searches your products with live prices and stock, builds a basket, and sends your customer to your own checkout to pay. It never pays for them.
On the app's Settings screen, under Shopper skill, copy the line for your customers and give it to them: on your site, in your footer or account page, or in an e-mail to trade customers. They paste it into their AI assistant. Your shop also serves a page for them at /shopper, with the same line, the skill to download (/shopper/SKILL.md, and /shopper/skill.zip for assistants that take a skill as a zip) and the steps to add your shop to their AI assistant as a connector.
It is on for every connected shop, on every plan and during a trial. These addresses answer only while your shop is connected and its shop window is live. To turn them off, untick Offer the shopper skill.
Claude, and how AI assistants find your shop window
Claude reads the same agent pages the module publishes from your own server the moment it is installed, listed below. One of them, the profile, is where an AI assistant asks what your shop can do; the other two describe the shop in words. Nothing about those three has to be switched on. Every page of your website also points AI assistants to them: a small "For AI assistants" link in the footer, under Odoo's own "Powered by Odoo", opens agents.md (hiding the footer's copyright bar hides it too), and three links in the page's head, which visitors do not see, name all three.
Searching your catalogue is a different thing, and it is the shop window's. An AI assistant finds it by reading the profile, and on a fresh install that profile lists no service to call, so an AI assistant can read about your shop and cannot search it. Once your shop window is connected, the profile names it, and says the assistant may search your catalogue and build a basket for the shopper to finish at your own checkout. From module 6.15.0 the profile also says that a customer of your shop can sign in from their AI assistant on your own login page and, once they agree, be shown their own prices and recent orders, or their company's where they belong to one, with a basket rebuilt from one of those orders; the customer still finishes at your own checkout.
Letting your customers sign in from AI assistants
From module 6.41.0 you decide whether your customers can sign in from their AI assistants. On the app's Settings screen, under Customer sign-in, switch on Let customers sign in from AI assistants. Your Odoo then runs its Checks before sign-in starts: the app's version, that customers can have accounts on your shop, that no old sign-in key is still in use, that your shop has a secure web address, and a test sign-in through Zaltric. Each check that fails says how to put it right.
Sign-in works only while the switch is on and every check passes. The checks run again with every update your shop sends and every 15 minutes. If they keep failing for a day, sign-in stops and your administrators are e-mailed; it starts again by itself once they pass. Switching it off signs every customer out, and each signs in again from their assistant if you switch it back on.
Your shop window needs nothing from you: the first update Zaltric accepts after you connect brings back your shop window's address, and the module writes it into the description of your shop that AI assistants read, inside your own Odoo.
Your own Odoo tells you when it has happened: on the app's Assistants screen, your shop window's row reads, under Finds products,
Live. Assistants reading your shop window can search this catalogue now.
That row is the confirmation, and it is the only one: the check's own profile line goes green on the profile the module writes at install, which names no shop window, so it says nothing about whether yours has been written in.
Your pairing code
A pairing code connects one Odoo to your subscription. You create one on your connect page, at https://app.zaltric.com/account/connect, inside your Zaltric account.
Your account was created the moment Stripe took the payment. Sign in at app.zaltric.com/login with the email you paid with: there is no password, and we email you a six-digit code to type on the next page. Then press Connect your Odoo.
Any business can start a 14-day free trial: choose a plan, give an address you can receive mail at, and add a card at checkout. Throwaway addresses are refused.
- 8 charactersA code is exactly 8 characters long. Paste the whole code and nothing else.
- works onceEach code connects one Odoo, once.
- 15 minutesA code expires 15 minutes after you create it.
- create anotherYour connect page creates a fresh one whenever you need it, and a spent or expired code costs nothing. If an Odoo is already paired and waiting to be switched on, no second code is created for it, and your connect page says when that wait ends.
The page “Where your pairing code is” answers three situations: you have just paid, you need to sign in again, you have not subscribed yet.
Connect your shop
Open the AI Shopping Assistants app in your Odoo. Its Overview opens on Connect your shop to Zaltric, in three steps. The boxes below show exactly what your own screen says, so you can compare.
If your website has nothing for AI assistants to find yet, the block starts with Before connecting: and says what to publish first. You can connect before your products are published.
- Get your code from your Zaltric account: the link opens your connect page.
- Paste it here: paste the code and press Connect.
While your code is checked, step 2 says Checking your code with Zaltric. For a short while after that, step 3 reads Waiting to be switched on, with these words under it:
Connected, and waiting to be switched on at Zaltric's end.
Your Odoo is connected and waiting for Zaltric to switch the connection on. Nothing is needed from you, and nobody at Zaltric has to press anything: your Odoo asks again every fifteen minutes, and with a live subscription the first update switches the connection on. If it stays this way, the subscription is the usual reason: check https://zaltric.com/billing.
If the wait is about your subscription, Check your subscription beside it opens your billing page.
That is the ordinary path, and it happens automatically: nothing is needed from you. There is one exception: re-connecting an Odoo that is already live, after a key was lost or rotated. The owner of your Zaltric account switches that one over, on your connect page: it says which Odoo starts sending and which one stops, and asks you to confirm. If you leave it, the new pairing clears itself on the date the page gives, and your live Odoo carries on as it is. If the page says the switchover is one we have to do for you, we do it.
Once your shop is switched on, the Overview's status reads Waiting while the first update travels, with:
Connected. The first update is on its way; it can take about a minute to appear.
When the first update has arrived, its status reads Working, with:
AI assistants have your latest products and prices.
The Overview is worked out when you open it, so open it again to look again; that changes nothing in your shop.
If the code is refused
A refused code is answered in step 2, beside Get a new code, which opens your connect page. A mistyped or already-used code is answered with:
Zaltric does not recognise that pairing code. It may have been mistyped, or it may already have been used: each code connects one Odoo, once. Get a fresh pairing code at https://zaltric.com/connect and try again.
An old one with:
That pairing code has expired. Codes are short-lived on purpose, so that one left lying around cannot be used later. Get a fresh pairing code at https://zaltric.com/connect.
Either way, do the same three things:
- Open your connect page.
- Create a fresh code.
- Paste the whole code and nothing else.
A code is exactly 8 characters. The screen says so if the box holds more or fewer.
Your connection reference
Once you are connected, the app's Settings screen shows a Connection reference under Connection. Quote it whenever you contact Zaltric about this shop. Use the copy button: it is long on purpose.
What is sent
Your product details are sent to Zaltric automatically whenever you change them. There is nothing to press day to day. Your Odoo does not send your customer list or your orders; what passes through Zaltric when a shopper checks out, or when a signed-in customer asks to see their orders, is set out under Every address the module adds.
Once a night, a connected module (version 6.31.1 and later) also reads a small public file on downloads.zaltric.com to learn whether a newer version exists. That request carries nothing about your shop: like any visit to a web page it comes from your server's internet address, and it names no shop, product or version.
Press Send an update now, on the app's Settings screen under Updates, if you have changed something and want it to reach Zaltric straight away, or after fixing whatever caused a failure.
How long a change takes to reach AI assistants
Stock and prices: checked live with your shop when an AI assistant looks at a product, on every plan, and in searches within 15 minutes. New products, descriptions, photos and categories: within 6 hours on Starter, 1 hour on Growth, minutes on Professional. Until a change reaches them, an AI assistant searching your shop window sees the version AI assistants were last given, whole and consistent, rather than half of a new one. Your Odoo tells you which you are in: it prints the time your last update reaches AI assistants by, and says they have it once that time has passed. Pressing Send an update now sends your change to Zaltric straight away, and it still reaches AI assistants within those times.
So a product that sells out can still appear in an AI assistant's search results for up to 15 minutes; when the AI assistant looks at it, your shop is asked, and your own checkout has the last word: the shopper lands there, and the basket is built there under your shop's own stock rules.
What a handed-off shopper pays
Your update carries one price per variant: the one an ordinary visitor to your website would be shown, in that website's own currency. That is the number an AI assistant sees, wherever the shopper is. The exception is a customer who signs in from their AI assistant on a shop that offers it: the assistant shows them their own price, read from the shop at that moment, and the shop's checkout still prices every line again when they arrive.
When a shopper arrives from an AI assistant, they land on a page served by your own Odoo that prices every line again, there and then, with the pricelist and taxes that shopper would get on your shop, never the price the AI assistant quoted. They confirm that number before anything is added to a basket, so what they agree to is what your checkout charges. A shopper abroad can therefore be quoted your website's price by an AI assistant and be charged your own shop's price for them; your shop decides, exactly as it does for somebody who arrived through a search engine.
AI services
Zaltric's shop window speaks both open standards for AI shopping: Google's Universal Commerce Protocol, which it has answered for live Odoo shops since September, and the Agentic Commerce Protocol from OpenAI and Stripe, now running on our demonstration shop. Whichever assistant your customer uses, your Odoo shop answers in the language it expects, and the sale is made in your own Odoo: on your own checkout or, if you switch on card payments for AI assistants, with a single-use Stripe token charged on your own Stripe account.
The table below shows what works for a connected shop today. Its first row, the Zaltric shop window, is the hosted copy of your catalogue that AI assistants read, the one thing a subscription adds. A Can find your products cell on any other row says that AI service lists products in your market; it does not say it can search a shop without a window. Your market is your company's country in your Odoo.
The screen inside your Odoo can say more, because it knows your shop: whether yours is connected, ready, or waiting on a step.
Where each AI service stands
Statuses last checked 2026-10-08.
Can find your products: whether that AI service can discover a shop's products. Can send the shopper to your checkout: whether a shop's window can send a shopper on to checkout through it. A dash means that AI service is not open to your shop in that market.
Zaltric shop window (ours)
AI assistants can read a shop window now.
AI assistants can read a shop window now.
AI assistants can read a shop window now.
AI assistants can read a shop window now.
AI assistants can read a shop window now.
AI assistants can read a shop window now.
The shop window sends a shopper on to the shop's own website with the basket filled.
The shop window sends a shopper on to the shop's own website with the basket filled.
The shop window sends a shopper on to the shop's own website with the basket filled.
The shop window sends a shopper on to the shop's own website with the basket filled.
The shop window sends a shopper on to the shop's own website with the basket filled.
The shop window sends a shopper on to the shop's own website with the basket filled.
Google lists products in this market.
Google lists products in this market.
Google lists products in this market.
Google lists products in this market.
Google lists products in this market.
ChatGPT
ChatGPT lists products in this market.
Claude
Claude can search a subscribed shop's window in this market.
Claude can search a subscribed shop's window in this market.
Claude can search a subscribed shop's window in this market.
Claude can search a subscribed shop's window in this market.
Claude can search a subscribed shop's window in this market.
Claude can search a subscribed shop's window in this market.
Whether an AI service accepts a given shop is that service's decision, not ours. The same table is inside your Odoo, where it also shows how your own shop stands.
Sign-in for a shop's own customers (their own prices, their recent orders, a basket rebuilt from one of them) is the shop's feature over any AI assistant that connects to it directly. It is not an AI service opening a market, so it has no row in this table.
Visits this week
The app's Sales and visits screen counts the visits AI assistants make to your shop's own agent pages. The number is written by the module inside your Odoo, from the requests your own server answered, and it covers the last seven days. It counts only the assistants it can recognise: some, such as Meta's Muse, browse like an ordinary browser and look the same as a shopper, so their visits are not counted. The addresses it counts are these:
/.well-known/ucpYour shop's agent profile: the document an AI assistant reads to learn what your shop can do. On a fresh install it lists no service to call; once connected, it names the hosted shop window and what an AI assistant may do there: search the catalogue and build a basket./.well-known/ucp/2026-04-08The same agent profile in the protocol's 2026-04-08 version, for AI assistants that use that version. Your agent profile names it./.well-known/acp.jsonTells an AI assistant that your shop takes checkout inside the AI assistant, and where to send it, in the Agentic Commerce Protocol's own format. Your Odoo copies it from your shop window and keeps each copy for up to fifteen minutes./llms.txtA short description of your shop for AI assistants: what it is, how many products and variants it has, the departments they are filed under, and a link to the profile above. No individual product, and nothing about your customers. It also has a section on buying: once your shop is connected, it gives your shop window's address and says how a shopper is handed over to your shop; while your profile names no address to call, it names the basket page the module adds, where a shopper arriving from an AI assistant lands./agents.mdThe same description, written as instructions for an agent that has just arrived and has to decide what to do next./shopperA page for your customers: the line to paste into their own AI assistant, the skill to download, and the steps to add your shop to their AI assistant as a connector./shopper/SKILL.mdThe shopper skill itself: a short file that turns your customer's AI assistant into a personal shopper for your shop. It searches your products with prices and stock as your shop has them, builds a basket, and sends your customer to your own checkout to pay./shopper/skill.zipThe same skill as a zip file, for AI assistants that take a skill as a zip.
On a quiet week the screen reads:
No AI assistant we can recognise visited in the last seven days.
Your shop is published for AI assistants either way. A count can also read low when a cache or a CDN in front of your shop answers those addresses itself, because the count is written by your own server, which then never sees the visit. Nothing is required of you. If you want the count closer to what actually happens, ask whoever runs your hosting whether the addresses above go past the cache to your Odoo; a cache that passes them through lets your own server see every visit.
Sales from AI assistants this month
Under the visits, the same screen adds up this month's sales that came through AI assistants, and what they were worth in your company's currency. It always says "at least", because it counts only what it can prove. In a quiet month it reads:
No orders from AI assistants yet this month. Orders from an assistant that carry no tag are not counted, so the real number may be higher.
Its How we count says exactly what it counts:
Confirmed sales orders this month that an AI assistant placed through its own checkout with your shop, counted from the first day of the month in your shop's time zone (in UTC when no time zone is set; you can set it on the app's Settings screen, under Updates). An assistant is named only when it proved who it was. Only the items it put in the order are counted, never other things in the same basket or things added on your shop afterwards. Some sales that start with an assistant arrive another way, for example through a plain link, so this is the least it brought, never more. Orders that arrived only through a link that says it is from an AI assistant are shown apart, because anybody can make such a link. Such an order is shown as referred by an assistant only when that assistant's maker says its own links carry that tag (today, ChatGPT); a shopper who comes back by typing your address, or through a link with no tag, is not counted. A copy of such an order, made with Odoo's Duplicate, keeps those tags and is counted there too. Cancelled orders are not counted. Refunds are not taken off. Amounts are before tax, in your company's currency. To see every order, open Sales, Reporting, and group by Source.
Billing
14-day free trial on every plan for a new customer. Your card is taken at checkout and first charged in 14 days; cancel before then from your account and nothing is charged. The trial covers one shop, at the catalogue size and speed of the plan you are trying. Subscribing again after a cancellation starts billing straight away, with no second trial.
Sign in at app.zaltric.com to manage your subscription.
Your invoices, your saved card and cancellation are all handled at Stripe; the Manage subscription button on your account page takes you there.
Cancelling stops the next charge, and your subscription runs to the end of the period you have already paid for. The billing page covers this in one place.
Signing in again
Nothing is lost. Go to app.zaltric.com/login and enter the email you paid with: we email you a six-digit code to type on the next page, and each code works once, for 10 minutes.
We email the six-digit sign-in code to the address you subscribed with.
When something goes wrong
Start at the status on the app's Overview. It says what happened and what to do next, and the detail under it names which failure this was. Some failures are retried by themselves (the list below says which), and the rest need something from you. Every failure below has a page of its own:
- Malformed requestZaltric could not read what your Odoo sent.
- Required protocol headers are missing or unreadableSomething between your Odoo and Zaltric changed the request on the way.
- Batch failed contract validationOne product in the update held a value Zaltric cannot accept.
- UnauthenticatedThe key your Odoo uses to reach Zaltric was not accepted.
- This key may not perform that actionThe connection has not finished being switched on at Zaltric's end.
- Connection is not activeThis connection is not switched on, so no update can go through it.
- Subscription is not activeYour subscription is not active, so updates are on hold.
- Pairing code is invalid or already redeemedZaltric does not recognise that pairing code.
- Pairing code has expiredThat pairing code is too old to use.
- A live connection already exists for this databaseYour Odoo looks like a copy of one that is already connected.
- This account is frozenYour account has been frozen, so nothing can connect or send updates.
- A request with this idempotency key is in progress (retried by itself)The same update is already being processed.
- Stale snapshot (retried by itself)The update was built from an older copy of your catalogue.
- Snapshot page out of sequence (retried by itself)Part of an update arrived without the parts that come before it.
- Idempotency key reused with a different request bodyYour Odoo sent two different updates under the same reference number.
- Batch would remove too large a share of the live catalogThe update would have removed too many products at once.
- Batch would cut a price below the collapse floorA price in that update had fallen too far to be a real cut.
- Batch would mark almost every product out of stock at onceThat update marked almost every product out of stock at once.
- Batch would move this shop to an unrecognised web addressThat update carried a different web address for your shop.
- Batch would price this shop in a currency that is not its ownThat update priced your shop in money it does not sell in.
- Store refused for this connectionThat shop cannot be added, or it is bigger than your plan covers.
- This shop is not covered by the current planYour plan does not cover this shop, so it is not being served.
- Protocol upgrade requiredYour AI Shopping Assistants module is too old.
- Too many requests (retried by itself)Your Odoo sent too many requests in a short time.
If a message tells you to report something, send it through the contact form with the whole message and your connection reference.
What a sellable variant is
Both numbers the check prints are counted with Odoo's own rule for what a shop sells, read as an ordinary visitor would read it. A product counts when it is marked Can be Sold (Odoo's own flag, one setting for the whole database rather than per website), is published on that website, belongs to that website (or to no website in particular), and to that website's company or to none, and is a kind Odoo sells online: a plain product always is, while a service Odoo tracks as something else, such as one that opens a project or a repair order, counts only where you have the app that sells it. Neither the product nor the variant may be archived. The first number counts products; the second counts every variant of those products.
It is an upper bound: the update can carry fewer, and three things make it. A variant with no price on it is left out where that website is set to refuse zero-price sales. A product whose every variant goes that way is dropped whole. And a product with no variants Odoo has actually made (a configurable, made-to-order product where nobody has yet chosen a combination, or one whose variants have all been archived) is dropped whole too, and your Odoo's log says which. So a shop under both numbers certainly fits, and the update never carries more than this line counted.
Bigger than your plan covers
Each plan covers a catalogue size per shop, and each plan card on the pricing page says what it is: on Starter it is 500 products and 2,500 variants, and the largest plan carries 2,000 products and 10,000 variants. A trial is judged at the numbers on the card for the plan you are trying.
A shop bigger than its plan is not turned away. The module sends the part your plan carries: your products in the order your shop page lists them before a visitor picks a sort, stopping at the first one that would take the update past either number. A product with more variants on its own than your plan carries for a whole shop is skipped and named on the screen, so it cannot hold up the rest. What is left out is not in your shop window, and AI assistants do not see it. Nothing in your Odoo changes either way.
The status line says so:
Connected, but this shop is bigger than your Zaltric plan, so part of it is not being sent to AI assistants.
The detail under it gives your shop's two numbers, your plan's two, and how many products and variants the last update sent and left out.
Two things get more of it sent: a bigger plan, from your account, or, past the largest plan, your two numbers through the contact form, because larger catalogues are by arrangement; or unpublish what your shop does not need AI assistants to see, and the next update sends what then fits.
One thing to know before you unpublish: in Odoo, Published is your website's own switch. Unpublishing takes the product off your shop for human shoppers too, not only out of the update, so unpublish what you no longer sell, rather than what you simply do not want counted.
The first update, before the module knows your plan
Zaltric tells the module your plan's two numbers in its answer to every update, and the module keeps them. Until the first answer it uses the largest plan's. If your plan is smaller and your shop is bigger than it, Zaltric refuses that first update when it arrives, before anything is written, and its answer carries your plan's numbers; the module then sends a fresh update by itself, cut to them. Zaltric's answer is Store refused for this connection, and nothing is needed from you.
However much of the shop is sent, a big catalogue goes in parts, and Zaltric applies none of it until the last part has arrived, so your shop window never shows half an update. If the parts stop following each other, the module starts again from the first by itself: Snapshot page out of sequence.
All of this is module 6.25.0 and later. A module older than that sends a shop whole or not at all: over your plan, Zaltric refuses the update and nothing is sent until the shop fits, and over 2,000 products or 10,000 variants the module sends nothing. Updating to the current module, as set out under Upgrading the module, is what changes that to the part your plan carries.
During the free trial your catalogue is judged at the caps of the plan you are trying, not at a smaller trial size. What the trial narrows is shops: it covers one shop, so moving up a plan adds no second shop until the trial ends. Cancel from your account before the first charge, or let the plan begin on day 15.
Upgrading the module
The downloads under Install the module are version 6.46.0. What each version brings is on the module releases page. Your connection and your settings survive the upgrade. Upgrade the module where it is, and do not uninstall it first: uninstalling is leaving, and it removes what the module keeps in your Odoo.
From version 6.31.1, a connected shop's module says when a newer version is out, on the app's Settings screen under Module, in these words: "A newer version is available: 6.46.0. Your connection and settings survive the upgrade."
Download the zip for your own Odoo again: the series it names has to match yours, and the About block at the bottom of Settings says which you run.
On your own server
- Delete the old
agsync_connectorfolder from your addons path and put the one from the new zip in its place. - Restart Odoo.
- In your Odoo, open Apps, remove the Apps filter from the search box, search for AI Shopping Assistants, open it and press Upgrade.
On Odoo.sh
- In your repository, delete the old
agsync_connectorfolder and put the one from the new zip in its place, on a staging branch first if you have one. - Commit and push, and wait for the build to finish.
- In that build's Odoo, open Apps, remove the Apps filter from the search box, search for AI Shopping Assistants, open it and press Upgrade.
- When you are happy, merge to production, let that branch build, and do the same there.
On Odoo Online
Odoo Online does not allow modules of your own, so the module cannot be installed or upgraded there.
Which version you run
On the app's Grade screen, press Run the setup checks again. On an Odoo 19 with the current module, one line of the report reads:
OK: This module is up to date in your Odoo (version 19.0.6.46.0).
The part after your Odoo's own 19.0 is the module's version. If that line says instead that the module's files and the installed module are two different versions, the files were replaced and the upgrade was not run: press Upgrade in Apps as above. Your Zaltric account shows the version too, on each connected shop's card, as the module last reported it.
Leaving
Uninstall AI Shopping Assistants from Apps like any other module. Every address in the list of addresses the module adds stops being served, and nothing more is sent.
Uninstalling does not cancel your subscription. Cancel that from your billing page. It ends at the close of the period you have already paid for, and the hosted shop window switches off then.
Your catalogue is removed from Zaltric once your subscription has ended and the connection is closed. Ask on the contact page if you want it removed sooner.
For your developer: technical detail
Nothing in this section is needed to install the module, connect your shop or run it day to day. It is here for whoever looks after your Odoo.
Every address the module adds
These are the addresses the module answers on, on your own site. Most of them are read by machines rather than by people: the agent pages at the top, which start being served straight away, with no sign-up and no approval from anyone needed, each written from your live catalogue when it is asked for; and the feed addresses at the bottom, which a channel fetches using a key. Which feeds your own Odoo serves depends on its version, and the Google feed's row says which Odoo adds it. Neither group needs a Zaltric connection.
The cart address is the one a person meets, and it is listed twice because a browser reaches it in two ways. It is where a shopper lands on your own shop when they arrive from an AI assistant, and where confirming adds the lines to that shopper's basket (in your Odoo, on your own checkout), and it answers from the moment the module is installed like the agent pages do.
The WebMCP addresses are for an AI assistant working in the shopper's own browser, on your shop's pages: the small script that offers it your shop's search and basket, and the addresses that script calls. They answer from the moment the module is installed, need no Zaltric connection, and stop answering for a website when you switch WebMCP off for it.
The sign-in addresses at the end are for a customer who already has an account on your shop, and they let that customer sign in from their AI assistant. Once the customer agrees, your Odoo answers the Zaltric shop window with that customer's own prices and recent confirmed purchases, or their company's where they buy for one. None of these addresses does anything until your shop is connected to Zaltric.
The checkout addresses near the end are the ones the Zaltric shop window writes through when a shopper's AI assistant asks for a checkout: a draft quotation in your Sales app, made the way your website makes a basket. The shopper is then sent to your shop's own basket with its items in it, and pays through your own checkout. With card payments switched on, an AI assistant can instead pay with a single-use Stripe token, charged on your own Stripe account through your Odoo Stripe provider. Nothing else can open them: each answers only a request the shop window has signed.
The addresses at the very end are for taking sales through Stripe. Stripe's notices about your sales reach your Odoo through the first, and the second answers your Odoo's own test that they can; neither does anything until you set up selling through Stripe on the app's Settings screen. Through the last, Zaltric can pause your sales through Stripe at once if something goes wrong. Like the checkout addresses, each answers only a request the shop window has signed.
Nothing about your existing customers or their orders is sent to Zaltric from any address on this list, except what a customer lets their AI assistant see through the sign-in addresses, which reaches it through the Zaltric shop window, and an order read back through the order address at the end of the list, which reaches the platform that placed it through the shop window too. When a shopper checks out through an AI assistant, their name, email address, phone number and delivery address pass through Zaltric's shop window into your Odoo, which keeps them on a quotation in your Sales app. Your Odoo's answer, with the basket's items, totals and any discount code, goes back the same way. Where Zaltric has switched it on for your shop, a customer with an account on your shop can also sign in from their AI assistant. The prices and orders they then ask to see, and the delivery addresses your checkout offers them, go from your Odoo, through the shop window, to them. When a checkout through an AI assistant becomes a sale, your Odoo reports it directly to that AI assistant's platform; if the platform asks for the order, it is read through the shop window and not kept. Zaltric does not keep any of these details.
/.well-known/ucp/.well-known/ucp/
Your shop's agent profile: the document an AI assistant reads to learn what your shop can do. On a fresh install it lists no service to call; once connected, it names the hosted shop window and what an AI assistant may do there: search the catalogue and build a basket. From the moment the module is installed./.well-known/ucp/2026-04-08
The same agent profile in the protocol's 2026-04-08 version, for AI assistants that use that version. Your agent profile names it. Once your shop is connected, at your shop's own https address. Anywhere else it answers that there is no such profile./.well-known/acp.json
Tells an AI assistant that your shop takes checkout inside the AI assistant, and where to send it, in the Agentic Commerce Protocol's own format. Your Odoo copies it from your shop window and keeps each copy for up to fifteen minutes. Once your shop is connected and checkout inside AI assistants is switched on in the app's settings. Until then it answers that your shop does not take it./llms.txt/llms.txt/
A short description of your shop for AI assistants: what it is, how many products and variants it has, the departments they are filed under, and a link to the profile above. No individual product, and nothing about your customers. It also has a section on buying: once your shop is connected, it gives your shop window's address and says how a shopper is handed over to your shop; while your profile names no address to call, it names the basket page the module adds, where a shopper arriving from an AI assistant lands. From the moment the module is installed. It is written from your live catalogue every time it is asked for./agents.md/agents.md/
The same description, written as instructions for an agent that has just arrived and has to decide what to do next. From the moment the module is installed./zaltric/webmcp.js
The one small script, named at the end of every page of your shop, that offers your shop's search and basket to an AI assistant in the shopper's own browser, through WebMCP. In a browser without WebMCP it does nothing. It has no payment tool. From the moment the module is installed, on every website, with no connection needed. It answers "not found" when you switch WebMCP off for that website in the app's Settings, under WebMCP./zaltric/webmcp/product
A product's name, description, variants and prices, as your shop shows them to this shopper, for the script's product details tool. Whenever the script above answers, and only then./zaltric/webmcp/basket
The shopper's own basket, to read. Never anyone else's. Whenever the script above answers, and only then./zaltric/webmcp/basket/add
Adds a product to the shopper's own basket, as your own Add to cart does, behind Odoo's own form protection. Whenever the script above answers, and only then./zaltric/webmcp/basket/quantity
Changes the quantity of a line in the shopper's own basket, the same way. A quantity of zero removes the line. Whenever the script above answers, and only then./shopper/shopper/
A page for your customers: the line to paste into their own AI assistant, the skill to download, and the steps to add your shop to their AI assistant as a connector. Once your shop is connected and its shop window is live, on every plan and during a trial. It answers "not found" when you untick Offer the shopper skill in the app's Settings, under Shopper skill./shopper/SKILL.md
The shopper skill itself: a short file that turns your customer's AI assistant into a personal shopper for your shop. It searches your products with prices and stock as your shop has them, builds a basket, and sends your customer to your own checkout to pay. Whenever the page above answers, and only then./shopper/skill.zip
The same skill as a zip file, for AI assistants that take a skill as a zip. Whenever the page above answers, and only then./zaltric/cart
The basket page a shopper lands on when they arrive from an AI assistant. It prices every line again in your own Odoo and asks the shopper to confirm; it creates no order. A set whose items are picked on your own product page (a combo product in Odoo) is never added here: the page lists it with "This set is chosen on its own page in this shop: add it there." From the moment the module is installed. A link it cannot read is answered with a short refusal, and nothing is added; on a shop that requires a sign-in, the shopper is sent to your own login page first and comes back to the same basket./zaltric/cart
The same address, as the form the confirm button posts to: the lines are added to the shopper's own basket and they land on your checkout. From the moment the module is installed. Only the page above can press it, so a link from anywhere else cannot fill a basket./gmc.xml
Your product feed, in the format Google Merchant Center reads. The address carries a key of its own, so treat it like a password. On Odoo 18, once you switch the feed on in the AI Shopping Assistants app's Settings screen. On Odoo 19 and Odoo 20 the module does not add this address at all: Odoo serves it. Without the key it answers as though nothing were there./zaltric/gmc-supplemental.xml
A second, smaller feed that says, for each product, whether it may be bought, and nothing else. Once this shop has a key for it. Without the key it answers as though nothing were there./zaltric/openai-feed.tsv.gz
The product list an approved shop hands to OpenAI, as a file to download. The address carries a key of its own. Once you switch the list on in the AI Shopping Assistants app's Settings screen and it has been built. Without the key, or with the switch off, it answers as though nothing were there./.well-known/oauth-authorization-server
Tells an AI assistant where a customer of this shop signs in and what it may ask for. Once your shop has a secure web address and is connected to Zaltric. Until then it says that nobody can sign in yet./zaltric/oauth/authorize
The page where a signed-in customer agrees to let their AI assistant see their prices and their history with your shop. Once your shop is connected to Zaltric, and only to a customer signed in to your shop./zaltric/oauth/authorize
The same address, as the form the customer's yes or no is posted to. Once your shop is connected to Zaltric. Only the page above can send it./zaltric/oauth/token
Turns that agreement into a key the AI assistant uses. Once a customer has said yes on the page above./zaltric/oauth/revoke
Where the AI assistant gives the key back; you can also delete a customer's key yourself in Odoo. Whenever it is asked. A key this shop never issued is simply ignored./zaltric/agent/v1/prices
This customer's prices and stock for the products the AI assistant names. Only with a key a customer agreed to, and only for that customer./zaltric/agent/v1/orders
The twenty most recent confirmed orders of this customer's company, colleagues' orders included, or their own if they buy for no company. Only with a key a customer agreed to. The page they agreed on told them whose orders it shares./zaltric/agent/v1/orders/<order number>
One confirmed order of this customer's company, by its order number, whether or not it is among the twenty most recent. Only with a key a customer agreed to./zaltric/agent/v1/preferences
A signed-in customer's language and currency on your shop, and the products they have had from you before, counted, so that suggestions can start from them. Their earlier purchases are shared only when the customer has also agreed to share their orders. Only with a key a customer agreed to./zaltric/ucp/v1/checkouts
Opens a checkout session when a shopper's AI assistant asks for one: a draft quotation in your Sales app, made the way your website makes a basket, with the items she chose, her delivery address, one of your published delivery methods and any discount code she gives. A discount code brings the reward your shop's own basket would bring, and a code that offers a choice of rewards stays on the quotation for her to choose on your shop. It is a basket like any other to your abandoned-basket e-mail: if you have switched that e-mail on, your Odoo writes to the buyer once the delay you set has passed, as it does for any basket on your shop; if it is off, as it is on a new Odoo, nothing is sent. The session closes six hours on, and the quotation is never cancelled for it: by then it may be the shopper's own basket on your shop, so it stays a draft, as any abandoned basket does, and is confirmed as usual if she pays. The exception is a quotation from checkout inside AI assistants, if you switch it on: left unpaid, it is deleted a day or two after its checkout ends, unless the shopper opened it in their browser or a payment for it is still being settled. The guest contact made for it goes too, unless it has a login or other orders; one that something else in your Odoo still refers to has its personal details blanked instead. On Odoo 20, if her browser already holds a basket when she opens the link, your shop moves these items into that basket and cancels the quotation itself. A set whose items are picked on your own product page (a combo product in Odoo) is not added to the quotation: the answer says "This set is chosen on the shop: add it there.", and the rest of the basket is kept. Only for a request the Zaltric shop window has signed, and only once this shop is connected to Zaltric. Unless you switch on card payments for AI assistants or take sales through Stripe, the shopper pays on your own website: the link she is given opens your shop's own basket with these items in it, and your own checkout takes her from there. When you take sales through Stripe, Stripe asks here too, through the shop window, for your delivery prices and tax on a sale and for your shop's approval before it takes the payment; your Odoo checks each request with your signing secret for order checks, and the shopper pays Stripe, into your own Stripe account./zaltric/ucp/v1/checkouts/<session id>
Reads that checkout session back, and changes nothing: its lines, address, delivery choice, totals and state as the quotation stands now, and whether your shop can take payment for it as your shop answered when it was last changed or completed. On Odoo 20, once your shop has moved its items into the shopper's own basket, it answers with the lines, totals and delivery choice of its last change, never those of her basket. The totals are your quotation's own figures, in the shape your website shows its prices. With tax included, each line is at the price the shopper sees, and the total's label usually names the tax as your quotation does, such as "VAT 20%": it says just "tax" when more than one kind applies or the name is over 64 characters, and names none when the order carries no tax or a voucher leaves the total below the tax. Before tax, no line carries tax, and the tax is one entry for the whole order. Only for a request the Zaltric shop window has signed./zaltric/ucp/v1/checkouts/<session id>/update
Changes that checkout session in full: the items, the buyer, the address, the delivery method and the discount codes, written into the same quotation. Only for a request the Zaltric shop window has signed, and not once the quotation is confirmed or the checkout is closed (cancelled or expired). While a payment for it is being made on your shop, the checkout is answered unchanged. On Odoo 20 it is refused once your shop has moved the items into the shopper's own basket./zaltric/ucp/v1/checkouts/<session id>/cancel
Closes that checkout session and leaves the quotation a draft in your Sales app, as your shop leaves any basket a shopper abandons: by then it may be the shopper's own basket on your shop, and if she pays for it there it is confirmed as usual. On Odoo 20, once your shop has moved its items into the shopper's own basket, it likewise only closes the checkout session and leaves her basket alone. While a payment for it is being made on your shop, the checkout is answered unchanged. Only for a request the Zaltric shop window has signed, and not once the quotation is confirmed or the checkout is closed./zaltric/ucp/v1/checkouts/<session id>/complete
Answers that checkout session as it stands when the shopper's AI assistant asks to complete it, after asking your shop again whether its own checkout would take payment for it: a link that opens your shop's own basket with the order in it, from which your checkout runs every step it runs for any shopper, and, while your checkout would not yet take payment, what is still missing. Unless you switch on card payments for AI assistants, it takes no payment and leaves confirming to your shop, which confirms the quotation when the shopper pays at your own checkout, as it does for any sale. With them switched on, it can instead charge a single-use Stripe token on your own Stripe account through your Odoo Stripe provider, and your shop confirms the quotation once Stripe has taken the payment. Only for a request the Zaltric shop window has signed, and not once the quotation is confirmed or the checkout is closed (cancelled or expired)./zaltric/ucp/v1/orders/<order number>
One confirmed order, read back by the platform whose own signature proves it started the checkout that placed it. A signed-in customer's AI assistant can read it too, as your customer portal shows it. Only for a request the Zaltric shop window has signed, and only with that platform's own signature or a key a customer agreed to./zaltric/ucp/v1/orders/<order number>/messages
The newest twenty messages on one of a customer's orders, as the customer's own order page shows them. Your internal notes are never shown. Only for a request the Zaltric shop window has signed, and only with the signature of the platform that placed the order or a key a customer agreed to./zaltric/ucp/v1/orders/<order number>/messages
Writes a customer's message into the conversation on one of their orders in your Odoo, as that customer, exactly as their order page would, with a last line naming where it was sent from. A message marked as a return request also gets a dated receipt and a to-do for your salesperson. Zaltric keeps no copy of any message. Only for a request the Zaltric shop window has signed, and only with the signature of the platform that placed the order or a key a customer agreed to./zaltric/stripe/v1/events
Tells your Odoo that a shopper has paid for something through Stripe, or that a sale was refunded or disputed there. Your Odoo then reads the sale from your own Stripe account and makes it an order, or notes the refund or dispute on that order for you to deal with; it never issues a credit note or a refund itself. Your Odoo checks each notice with your signing secret for sales and refunds, keeps none of it, and acts only once on the same notice. Only for a request the Zaltric shop window has signed, and only once you have entered the signing secret for sales and refunds on the app's Settings screen. Until then it answers that nothing is there./zaltric/stripe/v1/hooks/probe
Answers a test your own Odoo runs before selling through Stripe starts, and again after every product update: your Odoo sends a test message to the Zaltric shop window, the shop window passes it back here, and the answer shows that Stripe's checks on a sale can reach your shop. A test you send from your Stripe Dashboard to the address for Stripe's order checks arrives here too, and your Odoo notes that it verified with your signing secret for order checks, which is one of the checks before selling starts. It acts on nothing else, and keeps only a note of each message it has answered. Only for a request the Zaltric shop window has signed, and only once you have entered the signing secret for order checks on the app's Settings screen. Until then it answers that nothing is there./zaltric/stripe/v1/hooks/price-availability
Answers Stripe when it asks for the price of one of your products and whether it is in stock, once you switch on Product price and availability in your Stripe Dashboard. Your Odoo works the price out as your own checkout would, and says a product is no longer offered when it is not among the products your shop last sent to Stripe. It checks each request with your signing secret for order checks, changes nothing and keeps nothing. Only for a request the Zaltric shop window has signed, and only while your shop takes sales through Stripe. Otherwise it answers that nothing is there./zaltric/v1/features/stop
Lets Zaltric pause your shop's sales through Stripe at once if something goes wrong. If your shop is selling through Stripe, your Odoo stops, as it does when you switch selling off yourself, and takes the products your shop sent off your Stripe catalogue. Your own choice to sell is kept, the app's Settings screen says that Zaltric has paused sales through Stripe, and sales already paid keep arriving. Selling can start again only after Zaltric lifts the pause, and then by itself once every check passes. Nothing else can be paused through it. Only for a request the Zaltric shop window has signed, and only once this shop is connected to Zaltric./zaltric/v1/features/lift
Lets Zaltric lift a pause of your shop's sales through Stripe at once, through the Zaltric shop window. Your Odoo then runs its checks again within minutes, and selling resumes only if every check passes and you still have Take sales through Stripe switched on. Nothing else can be lifted through it. Only for a request the Zaltric shop window has signed, and only once this shop is connected to Zaltric./zaltric/v1/live-prices
Tells your shop window the price and stock of a few products as your catalogue would state them now, when an AI assistant looks at a product. It never answers for a product this website does not offer the public, and it changes nothing and keeps nothing. Only for a request the Zaltric shop window has signed.
What else the module adds
Eleven scheduled actions and one thing that happens once at install. The scheduled actions are under Settings → Technical → Scheduled Actions, which appears only once developer mode is on. Turn it on at the bottom of Settings → General Settings, under Developer Tools.
- AI Shopping Assistants: push the catalog
Sends whatever has changed. Every minute, and it does nothing when nothing has changed. Sending is not the same as being seen: what a change waits for after that is your plan's time. - AI Shopping Assistants: nightly catalog sweep
Sends your catalogue once a night whether or not anything told us it changed, so an edit made outside Odoo's own screens cannot leave your shop window wrong indefinitely. 03:30 UTC. - AI Shopping Assistants: rebuild the Google product feed
Rebuilds the feed the address above serves. 03:00 UTC. On an Odoo 19 or 20 it does nothing, because Odoo builds its own. - AI Shopping Assistants: rebuild the product list for ChatGPT
Rebuilds the file you hand over, so the copy you download is never more than a day old. 03:10 UTC, on every series. - AI Shopping Assistants: order updates for platforms
Sends order updates (confirmed, cancelled, delivered) straight from your Odoo to the platform that placed the order, and tries again when it does not answer. Every minute, and only for a checkout whose platform proved itself with its own signature. Nothing passes through Zaltric. - AI Shopping Assistants: Check again (only when pressed)
Asks Zaltric's free check to grade your shop again, after you press Check again on the app's Grade screen. Only then: its daily run finds nothing to do and sends nothing. It runs here, rather than while you wait on the screen, because the check reads your website while it runs. - AI Shopping Assistants: order emails for checkouts in AI assistants
Sends your usual order confirmation email a moment after a card payment is taken, rather than while the payment is still being answered. Only once you switch on card payments for AI assistants. It is started by the payment itself, and its hourly run finds nothing to do otherwise. - AI Shopping Assistants: the product catalogue in Stripe
Sends your products to your own Stripe account, so that AI assistants you connect there can show them. Unless you take sales through Stripe, shoppers still buy on your own shop. It does nothing until you switch on Show your products in Stripe or Take sales through Stripe, which switches it on too, on the app's Settings screen. Then it runs every 15 minutes. The whole list goes once a day. A change that could stop a sale or make a wrong one goes at the next run: your delivery methods and prices, whether a product may be sold through Stripe, whether its price includes tax, whether its stock is counted, and a product you no longer offer. Other product details, such as a title or a photo, go at most once an hour. Stock and prices go on their own when they change. It uses the Stripe key already in your Odoo's Stripe payment provider. When selling through Stripe stops, it takes every product it sent off your Stripe catalogue. - AI Shopping Assistants: sales through Stripe
A shopper can pay for something from your shop inside an AI assistant connected through your own Stripe account. When they do, this turns the sale into an order in your Odoo. Stripe has already taken the payment, so nothing is charged here. Refunds and disputes are noted on the order, never posted for you: you issue the credit note or answer the dispute yourself. It does nothing until you switch on Take sales through Stripe on the app's Settings screen and selling starts, which it does by itself once every check on that screen passes. Then it runs every 15 minutes, and straight away whenever Stripe tells your Odoo about a sale, a refund or a dispute. Sales already paid keep arriving after selling stops. Each run also stops selling through Stripe if the checks that keep it on have not passed for a day. - AI Shopping Assistants: dated price rules
Sends an update when a price rule with a start or end date on your shop's pricelist begins or ends, so the new price reaches AI assistants within 15 minutes. It runs every 15 minutes, and also at the moment a dated rule starts or stops, and it sends nothing when no rule has. - AI Shopping Assistants: customer sign-in checks
Checks that your shop is still ready for customers to sign in from their AI assistants. Added in module 6.41.0. It does nothing until you switch on Let customers sign in from AI assistants on the app's Settings screen. Then it runs every 15 minutes, and sign-in stops by itself if the checks keep failing. - once, at install
The module writes three settings it cannot run without. Two are system parameters, under Settings → Technical → System Parameters: your shop's agent profile,agsync.ucp_profile_body, and the address your Odoo sends updates to,agsync.endpoint(Zaltric's, so the module knows where we are). The third is not a parameter at all: it is a Shop time zone on each website, the clock your Odoo uses when it tells you what time an update reaches AI assistants, and you change it on the app's Settings screen, under Updates. It writes each one only if it is missing, so an address you have changed is never overwritten.
Your Zaltric key, and copies of your Odoo
Where the key lives. When you connect your Odoo, it receives a Zaltric key. Your Odoo keeps it in its own settings, under Settings, Technical, System Parameters, as agsync.api_key. Zaltric keeps only a scrambled fingerprint of it, never the key itself.
Who can see it. Anyone who is an administrator of your Odoo, and anyone who has a copy or a backup of your Odoo, because the key travels with it.
What it can do. It works for your shop only: it can send updates about your catalogue from the Odoo it was made for, and nothing else. It cannot read your orders or your customers, and it cannot sign in to your Zaltric account. It renews by itself every 90 days, with nothing for you to do, and the old key stops working as soon as the new one is used.
Before you send a copy of your Odoo to anyone. Use Odoo's Neutralize option, which blanks your Zaltric key in the copy:
- On Odoo's Manage Databases page, choose Duplicate, tick Neutralize, and send a backup of the duplicate. A plain Backup is not neutralized and still holds the key.
- Or, if you run Odoo yourself, run
odoo-bin neutralize -d <the copy>before it leaves you.
Odoo.sh's own staging and development copies are neutralized for you.
If a copy or a backup has already gone out. Cancel and renew your key:
- Sign in to your Zaltric account as its owner and open Connect your Odoo.
- Press Cancel the key of the Odoo at your shop's address. The key stops at once, in your Odoo and in every copy. Your shop window stays up, but it is not updated until you finish the steps below.
- Press Get a fresh pairing code.
- In your Odoo, open Settings, Technical, System Parameters and delete
agsync.api_key. - Open the AI Shopping Assistants app, paste the code on its Overview and choose Connect.
- Back on Connect your Odoo, press the button that turns the new key on. Your shop window keeps its address and goes on serving your catalogue as it was, and your Odoo's next update on the new key carries on from there within fifteen minutes.
Where your shop's profile is kept
Your shop's profile is a setting inside your own Odoo, under Settings → Technical → System Parameters, which appears only once developer mode is on. You do not need to open it.
The module writes it under your website's own key: agsync.ucp_profile_body.<website id>, from that website's first accepted update, and every website gets its own, one shop or several. The shared setting, agsync.ucp_profile_body, is the one the module writes when it is installed, with no shopping service in it. The module never writes it again, and a website that has not sent an update serves it. If you have written a profile yourself under a website's own key, the module leaves it as it is.
How Odoo's sample terms are recognised
The untouched sample is refused, and so is the sample re-saved or with the company renamed since, and so is any page or delivery method description that keeps either of the sample's two opening sentences or three or more of its seven clause openings; its heading alone refuses nothing, and one or two of its clauses in terms of your own refuse nothing.
Contact
Use the contact form. A person reads it and replies. If it is about a connected shop, quote the connection reference from the app's Settings screen.