What an AI Support Tool Should Not Ask For
We submitted the Sensbot Email Assistant to the Upgates marketplace and it was rejected on the first review. Not for what it did. For what it asked to see.
We had declared 26 API permissions: orders, order history, order statuses, invoices, invoice PDFs, customers, stocks, availabilities, manufacturers, parameters, vouchers, shipments, payments. That list was not the product of a threat model. It was the product of not wanting to file a second request later.
The reviewer asked three questions we could not answer well.
Why poll categories once a day when the platform offers a webhook for them. Why read order history the assistant never opens. Why subscribe to a language-change event and then do nothing when it fires.
That last one was the uncomfortable find. Our install code had been registering for that event for months, and the controller that receives it drops it on the floor. It was traffic on the merchant’s shop, generated by us, delivered nowhere.
The list we ended up with
Ten entries, and the survivors got narrower rather than wider:
| What we read | When |
|---|---|
| Orders | at install, then on webhook, always inside a 45-day window |
| Products | at install, then on webhook, by product id |
| Categories | three times a week, only what changed |
| Articles (your help pages) | once a week, only what changed |
| Languages, shop config, shop owner | once, at install |
| Webhooks (list, create, delete) | at install and at uninstall |
Sixteen entries were deleted outright. Invoices and invoice PDFs, the customer database, vouchers, payments, shipments, stock levels, manufacturers. An assistant that drafts a reply about an order needs the order and the product. It does not need your accounting.
The delete permission is worth a note, because it is the only destructive one on the list and it exists to clean up after ourselves. When you uninstall, we remove the webhooks we created, matched by our own URL so a different add-on’s subscriptions are never touched.
What to ask when you install anything
The permission screen is the one honest moment in an app install. After that you are trusting a settings page. Three questions worth asking before you click:
Does the tool read customer records it never shows you? Drafting a reply needs the order attached to that email address. It does not need a browsable customer table.
Does it read money? Invoices, payments and payouts are a separate class. A support tool has no business in them.
Does it poll, or does it subscribe? Polling on a schedule means it is reading your shop whether anything changed or not. Webhooks mean it reads when something happens. The second one is both cheaper for your server and narrower in what it sees.
We would not have cut any of this if the review had waved us through. The list was written by us, in good faith, and it was still too wide. That is the argument for the review existing, and it is the reason the answer to “why do you need this” should never be “in case we need it later”.
See it in action