> ## Documentation Index
> Fetch the complete documentation index at: https://codebeans-cb-notifylyst.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Security & privacy

> What leaves your store, what is stored, how changes are confirmed, and every way to switch the connector off.

A connector that can read your customer list deserves a straight answer about what happens to
that data. Everything below is how the connector works, not policy language.

## The controls

| Control | How it works |
| - | - |
| **No database on the connector** | The connector stores nothing. Every answer is fetched live from your Notifylyst app and discarded when the request ends. |
| **One token, one store** | A token belongs to exactly one store, and the store always comes from the token. There is no way to widen a token to another store. |
| **Tokens are stored hashed** | Only a hash and the last four characters are kept. That is why the token is shown once and can never be re-displayed — and why **Regenerate** exists. |
| **Tool scope checked on every call** | The connector offers a client only the tools your token allows, and the app re-checks the token's tools on every call. A tool outside the scope is refused. |
| **Changes need your confirmation** | Every tool that changes something previews first and acts only after you confirm. See [below](#changes-need-your-confirmation). |
| **Independent off switches** | Disabling the token, its expiry passing, the store's **Connector** switch, the plan, and uninstalling the app. Each one alone stops every call. |
| **Secrets are never returned** | `get_settings` never returns your SMTP password. |
| **Every call is recorded** | Each call is logged in the app, so a question about what an agent did has an answer. |
| **Rate limited** | Each token has a per-minute request limit set by your plan, so a looping agent can't run away. |
| **No billing or destructive actions** | No tool can change your plan or billing, top up the wallet, delete data or edit templates. |

## Changes need your confirmation

All seven tools that change something work in two steps:

1. **Preview.** The AI's first call changes nothing. It returns a summary of exactly what would
   change, any warnings (for example, turning off a channel or adding new report recipients), and
   a one-time confirmation ticket — or a refusal with the reason.
2. **You confirm in the chat.** The AI shows you the summary. Only when you say yes does it call the
   tool again with the ticket, and the change is made.

The ticket lasts **5 minutes**, works **once**, and is tied to that tool, your store and the exact
same arguments. If anything about the request changes, the ticket no longer fits and the AI has to
preview again. A **Read only** token can never change anything at all.

## Change tools with extra limits

* **Test sends** go only to your store's own addresses — staff accounts, report recipients and
  sign-up alert recipients — and at most 20 an hour. They are real sends and use your allowance.
* **CSV export links** work for anyone who has the link, for 24 hours. Treat one like the file
  itself: don't paste it anywhere you wouldn't paste the CSV.
* **Unsubscribing** a customer can't be undone from the connector.

## What leaves your store

Only what a tool returns, only to the AI client you connected, only when it calls a tool.

Your AI provider's own data handling then applies to that conversation. If that matters for
your customers' data:

* Grant tools narrowly.
* Prefer aggregate reports (`get_analytics`) over per-person lookups (`get_entity_details`).
* Remember that a chat transcript is a copy of whatever was returned into it.

## How to switch it off, fastest first

| Action | Effect | Scope |
| - | - | - |
| **Connector → Turn off** | Every token for this store is refused immediately. | Whole store |
| **Token → Disable** | That one client is refused. Others keep working. **Enable** brings it back. | One client |
| **Token → Regenerate** | The leaked secret stops working; the same client works again once given the new one. | One client |
| **Token → Revoke** | Deletes the token. | One client |
| **Uninstall Notifylyst** | Every token is deactivated. | Everything |

## Good token hygiene

* One token per client, named after the client.
* **Read only** unless that client genuinely needs to change something.
* An expiry for anything temporary — agencies, contractors, experiments.
* Check **Last used** occasionally and revoke what has gone quiet.
* Never paste a token into a chat, a shared doc, a ticket or a screenshot.

> [!CAUTION]
>
> If a token leaks, press **Regenerate** rather than deleting and starting over. It stops the old
> secret at once and keeps the token's name, tools and expiry, so the legitimate client is back in
> one paste.

## Privacy policy

Notifylyst's full privacy policy and data-retention terms are published on the Shopify app
listing and inside the app. This page does not restate them, so there is only ever one
authoritative copy.

## Next

[Troubleshooting](https://codebeans-cb-notifylyst.mintlify.site/mcp/troubleshooting.md) — symptom, cause, fix.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.