Privacy policy and documentation
Last updated: 2026-09-23
By default this extension sends nothing anywhere. It has no analytics and no account, and with the default settings it makes no network requests of any kind. Everything it notices about a page is processed on your device and stays on your device.
The one exception is a setting you have to switch on yourself: sharing which shops use which techniques, and whether you added the item to your cart after seeing them, described in full below. It is off unless you turn it on. Pensa asks you about it once, on the card that opens when you install it, and again on your first in-page card only if you never answered there.
With sharing off, nothing reaches any server. That is what the “zero outbound requests” test
asserts against the compiled extension. With sharing on, reports go to exactly one address, a
counting service run by this project whose source is in the public repository’s server/
directory, so what it accepts and stores can be read rather than trusted.
You can verify this rather than take our word for it: open DevTools, go to the Network tab, and browse with the extension enabled and sharing off. There will be no requests from it.
On the https sites where it runs, it reads the page to notice persuasion techniques: countdown timers, limited-stock messages, crossed-out reference prices, preselected checkboxes, and similar. When you add something to a cart or begin checkout, it may show a small card with a question about what it noticed.
On any page with nothing to notice, it notices nothing and shows nothing. Shopping pages are not a list it holds; they are simply the pages where these techniques appear.
Everything below is stored only on your device, in your browser’s extension storage, and only for pages Pensa has decided are shops. A page that is not a shop is never recorded.
Detections (kept 30 days by default, adjustable in Settings):
https://www.example.com) and a redacted path shape (for
example /products/:slug).These are recorded as you browse shops. When Pensa notices something it writes down what the page displayed, and it does so again when you add something to your cart or head to checkout, which is when it may also show you a card. Each distinct piece of copy is recorded once per page, not once per second, and a page it finds nothing on produces nothing.
Product history (kept up to 90 days, at most 5,000 products):
This browsing session (cleared when you close the browser):
Open page views (only while sharing is on, at most 30 minutes each):
Settings you choose, until you change them.
You can export or delete everything from the Settings page (“Export my data”, “Delete all my data”).
Pensa asks for access to all https websites at install time, and Chrome will tell you so in those words. You should read that warning as accurate: the permission is broad, and it is granted the moment you install rather than site by site.
This is a deliberate change from how Pensa previously worked, and it is worth being plain about the trade. The earlier design asked for one site at a time, which made the permission narrow and the tool nearly useless: a shopper had to already suspect a page before they could ask Pensa to look at it, which is precisely backwards for a tool whose whole purpose is to notice what you did not. Persuasion techniques are not confined to a list of large retailers; they turn up on small independent shops, regional sites, and storefronts that did not exist when any list was written. A fixed list is always wrong, and it is wrong in the direction that leaves people unprotected.
So the permission is broad. What constrains it is not the permission; it is what the code does with it, and that is public and testable:
src/shared/urlScore.ts and the
build fails if it is empty.https sites. Plain http pages are outside the requested permission entirely.Pensa itself has no per-site off switch. You can turn detection off entirely, or switch off any
individual technique, from its Settings page. To keep Pensa off particular sites, use Chrome’s
own control: open chrome://extensions, choose Pensa’s Details, and set Site access to “On
specific sites”. Chrome then enforces that regardless of anything Pensa does. Uninstalling
removes the permission entirely.
There is a setting to share which shops use which techniques. It is off by default and there is no pre-checked box.
How you are asked. On the card that opens when you install Pensa, and, if you never answered there, once more at the bottom of the first in-page card it shows you. Either way the question says who builds Pensa, what the data is for, what is shared and what is never shared, in the question itself, or one click away under “More details”, rather than behind a link to somewhere else. The two answers are the same size and style, and neither is selected for you. Closing the install card answers nothing; closing the card without answering is recorded as no. Once answered, you are not asked again, and you can change your answer at any time in Settings.
While it is off, nothing is transmitted and nothing is even recorded for transmission. The queue is not filled and then withheld, because a queue that accumulates while you have said no is one that would empty the moment you said yes.
If you switch it on, it names the shop. That is its purpose: to build a picture, shop by shop, of how often these techniques are used. A report says “someone saw a countdown on shein.com today.” It is sent to a server run by this project and stored there.
There are two kinds of report.
1. What a shop showed. Each carries exactly eight fields and no others:
| pattern type | e.g. scarcity.stock |
| detector id | which rule matched |
| confidence quartile | 1–4, never the score |
| funnel stage | browse / product / cart / checkout / payment |
| shop | the main domain only, e.g. shein.com, never us.shein.com/products/123 |
| shop category | e.g. fast_fashion, or other |
| rule pack version | |
| day | the date, never a time |
2. Whether an item was added to the cart. On product and listing pages only. When you leave such a page, or click Add to Cart on it, Pensa sends one report saying whether you clicked Add to Cart, plus one more for each technique that was on screen before you decided. Each carries exactly seven fields and no others:
| pattern type | e.g. urgency.countdown, or _page for the page itself |
| funnel stage | listing or product page only |
| shop | the main domain only, e.g. shein.com |
| shop category | e.g. fast_fashion, or other |
| rule pack version | |
| day | the date, never a time |
| added to cart | yes or no |
“Added to cart” means you clicked an Add to Cart button, not that the item was actually added. Pensa does not check. A page’s reports are sent as separate counts, never as a list of what one page showed together, because that combination could identify the page. Nothing about the item is included: not its name, price, or address.
This measures association, not effect. It can say that product pages showing a countdown on a given shop were followed by an add some share of the time, compared with that shop’s pages overall. It cannot say the countdown caused the difference, and nothing published from it will claim that.
Never included in either kind: the page, the product, the search, the path or the full web
address; any page text or prices; your account, name, email, or any identifier for you or your browser; and any
time more precise than the day. The record type is declared .strict() in the extension and
the server independently rejects any report with a field outside that list, so an accidentally
added field is refused at both ends rather than stored.
The limits, each enforced in code rather than promised here:
You can see the exact reports that would be sent, verbatim, in Settings → Help measure these techniques → Show me exactly what would be sent. Asking you to consent to a sentence about your data is not the same as showing you the data.
What the collected data is used for. Research into persuasion techniques in online shopping: how common they are, which shops use them, where in the checkout they appear, how often page views that show each one are followed by an add to cart, and how all of that changes over time. Findings may be published. Anything published is aggregated so that no single browsing session can be picked out: a shop and technique are only included once enough independent batches have reported them. The data is not sold, licensed, or used for advertising.
No analytics providers, no error reporting services, no advertising networks, no data brokers. Nothing is sold, shared, or licensed.
If you switch sharing on, reports are received and stored on Cloudflare (Workers and D1), which hosts the counting service. Cloudflare processes that traffic as a hosting provider; it is not given the data for any purpose of its own.
The extension is not directed at children and collects no personal information from anyone.
Material changes will be reflected here with an updated date, and in the extension’s listing.
The authoritative copy is served at https://viditchhajed.github.io/pensa-docs/privacy.html.
Pensa was previously published as Vero. The policy formerly served at
viditchhajed.github.io/vero-docs/ redirects here.
Open an issue on the project repository.