Perply

Privacy Policy

// Draft · Last updated 8 October 2026

This policy explains what personal data Perply collects when you use perply.pro, why we collect it, how long we keep it and what you can do about it. Perply is operated by [Operator legal name], [Operator address] (“Perply”, “we”, “us”). We are responsible for your data as described here.

The short version: we collect only what we need to sign you in, run the service and keep it secure. If you allow it, Google Analytics also shows us how Perply is used. We don’t use advertising cookies, and we don’t sell your data.

What we collect

These are all the kinds of personal data our own systems keep. Most of it exists only after you try to sign in.

Where we mention an “IP address prefix”, we mean only the first part of your IP address: the first three of its four numbers for IPv4 (for example 203.0.113.x), or the first 48 bits for IPv6. It points to a network, not to your device.

  • Your email address. You give it to us when you sign in with an email code, or Google or GitHub gives it to us when you sign in with one of them (from GitHub, only the primary address that GitHub has verified). You can change it in Settings → Profile (see “Emails we send”).
  • Account details: when your account was created, when you last signed in, which sign-in methods you use, whether the account is active and, if you set them in Settings → Profile, your nickname and the pixel avatar you draw. Nicknames are unique: someone who tries to take yours sees that it’s taken, but not whose it is.
  • Your time zone, if you pick one in Settings → Appearance: the name of the zone (for example “Europe/Moscow”). We use it only to show times in the app in that zone; until you pick one, the app uses your device’s time zone and we store nothing.
  • If you sign in with Google or link a Google account: your Google account ID (the permanent number Google uses for your account), the email address of that Google account, whether Google has verified it and, if your Google account is managed by an organisation, that organisation’s domain. When you sign in with Google, we also keep your name and the web address of your profile picture. See “Google sign-in” below.
  • If you sign in with GitHub or link a GitHub account: your GitHub account ID (the permanent number GitHub uses for your account), your GitHub username and your primary email address that GitHub has verified. If your Perply account is created through GitHub, we also keep the name on your GitHub profile as your account name. See “GitHub, Telegram and X” below.
  • If you link a Telegram account: the permanent identifier Telegram gives Perply for your account and your Telegram username, if you have one.
  • If you link an X account: your X account ID and your X username.
  • If you link Telegram to our notifications bot in Settings → Alerts: the ID of your chat with the bot, your Telegram username if you have one, when you linked it and, if you block the bot, when that happened. The link we give you for this carries a one-time code; we keep only a hash of it, and it stops working after 10 minutes. See “Notifications on Telegram and Pushover” below.
  • If you add your own Telegram bot or a chat in Settings → Alerts: the bot’s token, which we store encrypted, and the bot’s Telegram ID and username; for each chat you add, its ID or @username, the topic number if you give one and, once a test finds it on Telegram, its type and title; and which bot and chat our messages go to. We check the token with Telegram when you add it, and the bot and the chat when you send a test; for a group or channel with our notifications bot we also check that your linked Telegram account can post in it.
  • If you set up Pushover in Settings → Alerts: your Pushover user key and the priority you choose for our messages.
  • If you connect an exchange in Settings → API keys, we store the exchange name, your label, the last four characters of the API key, its reported permissions, its status and the times it was added and checked. The API key, secret and any passphrase are stored encrypted. We use read-only keys to retrieve your open futures positions, balances, margin and conditional orders for the POSITIONS widget. We also retrieve realized profit and loss for current positions and available closed-position history from the past 30 days, including trading profit and loss, fees, funding, settlement currency and position opening and closing times.
  • Notification records: for each message our notifications bot or Pushover sends you, including the test messages you ask for, when we sent it, what kind of message it was and whether it was delivered, but never its text.
  • For each sign-in account connected to your Perply account (Google, GitHub, Telegram or X): when it was connected and when it was last used to sign in.
  • Access to connected services: some data in the app comes from connected services that we open only to selected people. If we give your account access to one, we record which service, which of us gave the access and when.
  • Sign-in code records: your email address, a keyed hash of the code (never the code itself), when the code was created and when it expires, how many wrong attempts were made, whether the email was sent, and your IP address prefix.
  • Email change records: while you change your email address, the new address, a keyed hash of the code we sent to it, when it was sent and when it expires, and how many wrong attempts were made; for daily limits, also a keyed hash of each new address we send a code to.
  • Sessions: when you sign in, we create a session so that you stay signed in. We store a hash of the session token (not the token itself), how you signed in, when the session started, was last used and expires, your IP address prefix, your approximate country as reported by Cloudflare, and your browser’s user agent (the short text your browser sends that names its type and version).
  • Security event log: a record of sign-in events such as “code sent”, “wrong code”, “signed in”, “account created”, “sign-in method linked” or “unlinked”, “signed out”, “email changed”, “account deleted” and “too many attempts”. Each entry has the time, the sign-in method, your account number if known, your IP address prefix, your approximate country and a shortened keyed hash of your email address. The hash lets us connect events for the same address without storing the address itself. A failed attempt to sign in with a Telegram or X account that isn’t linked is recorded without any details of that account. The log also records the changes we make to invitations, the waitlist, accounts and access to connected services; an entry about a change to your account or to your access also contains your account’s public ID (a random code, never your email address). An “email changed” entry also has a shortened keyed hash of the new address.
  • Invitations: Perply is invite-only, so we keep a list of invitations. If we invite you by your email address, we store that address, a short internal note (for example, how we know you) and the date of the invitation. We may add an invitation before you ever visit perply.pro. When we invite everyone with an address at an organisation, we store only its domain (for example @example.com).
  • Waitlist: if you prove your email address (with a code, through Google or through GitHub) but don’t have an invitation yet, we save your email address, when you first and last tried to join, how many times you tried and which method you used last.
  • Web server logs: our web server records every request to perply.pro, including your full IP address, the date and time, the address requested, our response, your browser’s user agent, the page you came from and other standard information your browser sends. Cookie values are not written to these logs, and the one-time values that Google, GitHub, Telegram and X add to the sign-in address are removed.
  • Short-lived counters: to stop abuse, our services count recent requests in memory: our sign-in service per IP address and, for some actions of signed-in users, per account; our market data service per account, including how many live connections each account has open. These counters are never written to disk. Most are cleared within about 10 minutes of your last request, and the count of live connections as soon as they close; the counter of sign-in code requests is kept for 24 hours after your last code request, because it enforces a daily limit.
  • Messages you send us: if you write to support@perply.pro, we receive your message, your email address and anything you include.
  • If you use Perply AI: your chat messages and its replies; the part of the app you selected, including the current board’s widget IDs, types and settings or the current arbitrage filters; the view changes you ask it to make and their results; and token and estimated cost records. We do not put live prices, exchange API keys or wallet addresses from the current view into this automatic context. If you type personal data into a chat yourself, it becomes part of that chat.

What we don’t collect

We don’t use advertising networks, social media pixels or advertising cookies. Our pages don’t load scripts, fonts or images from other companies, with two exceptions: Google Analytics, only after you allow it (see “Google Analytics”), and on the sign-in page, Cloudflare’s security check, which loads once you select the email field or a sign-in code is requested (see “Cloudflare” under “Who we share data with”).

We also don’t ask for or store:

  • passwords (Perply doesn’t use them);
  • payment details;
  • wallet addresses on our servers, unless you add a public wallet connection in Settings → API keys or type one into a Perply AI chat yourself;
  • access tokens from Google, GitHub, Telegram or X (we use them only while you sign in or link an account, and then discard them);
  • your contacts, precise location, or anything from your Google, GitHub, Telegram or X accounts beyond what is listed above: for example, we don’t read your posts, messages, repositories or phone number.

Why we use it

We use your data only for the purposes below. We don’t use it for advertising or marketing, we don’t build profiles of you, and we don’t sell it.

  • To sign you in and keep you signed in, including with the accounts you choose to link.
  • To check whether you have an invitation and which connected services you can see, and to keep the waitlist so that we can let people in later.
  • To send you sign-in codes by email, an email when we give you access, and a short notice when you link or unlink a sign-in method in Settings.
  • To send you the messages you set up in Settings → Alerts, on Telegram or through Pushover.
  • To show the exchange positions and account totals you choose to connect.
  • To answer the questions you send to Perply AI, show it the selected app context, and make a view change only when you ask for one.
  • To protect Perply and its users: limit repeated attempts, and detect and investigate abuse and attacks.
  • To keep the service working and fix problems.
  • If you allow Google Analytics: to see which pages are used and how, so that we can improve Perply.
  • To answer your messages and handle your requests about your data.
  • To comply with the law.

Our legal reasons

Some privacy laws, such as the GDPR in the EU and the UK, require us to name the legal basis for each use of your data. In plain terms:

  • To give you the account, sign-in and messages you asked for, including linking the Google, GitHub, Telegram or X accounts you choose and our notifications bot, your own Telegram bots or Pushover, we rely on our contract with you (our Terms of Service).
  • For security, abuse prevention, logs, invitations, the waitlist and access to connected services, we rely on our legitimate interests in keeping Perply safe and working and in deciding who gets access. You can object to this; see “Your rights”.
  • Where a law requires us to keep or disclose data, we rely on that legal obligation.
  • For Google Analytics, we rely on your consent. You can withdraw it at any time with the “Analytics cookies” switch under “Cookies and browser storage”; this doesn’t affect what was collected before.

Google sign-in

If you choose Google, you sign in on Google’s own page, and Google asks whether to share your basic profile with Perply. We ask only for the “openid”, “email” and “profile” permissions, and we receive only the details listed above under “If you sign in with Google or link a Google account”.

We use this Google user data only to sign you in, to recognise your account on later visits, to connect your Google sign-in to an existing Perply account with the same email address, to link the Google account you choose in Settings to your Perply account (even if its email address is different), to remove that Google account’s email address, if Google has verified it, from our waitlist when you link the Google account in Settings or sign in with it after it is linked, and to show you your account details. We store it in our database with the rest of your account. We share it only with the service providers listed below that host and run Perply, and we don’t use it for advertising or to develop or train AI models.

When you sign in with Google and Google can’t vouch for your email address (for example, for a Google account registered with a non-Gmail address), we send a code to that address and ask you to enter it before we create an account or connect Google to one. When you link Google in Settings, we don’t send a code to the Google account’s address; if we ask for a code first, it goes to your account’s email address (see “GitHub, Telegram and X”).

We never see your Google password. We don’t store Google access or refresh tokens, so we can’t act in your Google account or read your email, contacts, files or calendar.

Perply’s use of information received from Google APIs adheres to the Google API Services User Data Policy, including the Limited Use requirements.

You can remove Perply’s access at any time in your Google Account, under “Your connections to third-party apps & services”. This stops future Google sign-ins. You can also unlink Google from your Perply account in Settings → Profile, which deletes the link at once; to delete the other data we already hold, contact us (see “How to make a request”).

GitHub, Telegram and X

If you choose GitHub, you sign in on GitHub’s own page. We ask only for the “user:email” permission, which lets us read the email addresses on your GitHub account; GitHub also shares your public profile. We keep only your GitHub account ID, your username and the primary email address that GitHub has verified, plus your GitHub name if your Perply account is created through GitHub. We don’t keep your other email addresses and we don’t access your repositories.

GitHub checked your email address when you added it, possibly long ago, so we don’t rely on that alone. When you sign in with GitHub and a Perply account with that address already exists but your GitHub account isn’t linked to it yet, we send a code to that address and ask you to enter it before we connect GitHub. If there is no account yet, the usual invitation rules apply: if you’re invited, we create your account; if not, we add the address to the waitlist.

Telegram and X can only be linked to a Perply account you already have. While signed in, you choose Connect in Settings → Profile and confirm on Telegram’s or X’s own page. We link an account only when you ask us to. After that, you can use it to sign in. If you try to sign in with a Telegram or X account that isn’t linked, we don’t create an account, don’t add you to the waitlist and keep nothing about that account; we only record the failed attempt in our security log.

From Telegram we ask for the “openid” and “profile” permissions, never for your phone number. Telegram shares your basic profile (such as your name, username and profile photo); we keep only a permanent identifier for your account and your username.

From X we ask for the “users.read” and “tweet.read” permissions. X requires both before it will tell an app who you are, so X’s permission screen says that the app can read posts. We use this access once, to look up your X account ID and username, and we never read, store or publish your posts or messages.

We don’t store access tokens or ID tokens from GitHub, Telegram or X: we use them once, while you sign in or link an account, and then discard them. We don’t show pictures from these services on our pages.

You can unlink Google, GitHub, Telegram or X at any time in Settings → Profile. The link is deleted at once, and every session that was signed in with that account ends. While you are signed in with Telegram or X, you can unlink only that account. Signing in with a code sent to your email address always stays available, so you can’t lock yourself out.

To link an account in Settings, you must have signed in within the last 2 hours with Google, GitHub or a code sent to your email address. Otherwise we first send a code to your account’s email address and ask you to enter it. We email you when you link or unlink an account in Settings (see “Emails we send”).

You can also remove Perply’s access on the service itself: on GitHub under Settings → Applications → Authorized OAuth Apps; on X on the Connected apps page (x.com/settings/connected_apps). This stops future sign-ins with that account; to delete the link we hold, unlink it in Settings or contact us.

Notifications on Telegram and Pushover

Our notifications bot on Telegram is separate from signing in with Telegram. You link it in Settings → Alerts: we open the bot in Telegram with a one-time code, and you press Start. Telegram then tells us the ID of your chat with the bot and your username, and we keep them with your account. We write to you there only about what you asked for: a confirmation when you link or unlink, the test messages you request, and answers to the commands you send the bot.

You can unlink in Settings → Alerts or send /stop to the bot. If you block the bot, we can no longer write to you and mark the link as blocked. After you unlink in Settings, you have 10 minutes to undo it; then we delete the link.

You can also add your own Telegram bot by the token @BotFather gives you, and the groups, topics or channels it should write to. Only our notifications service decrypts the token, in memory, to check the bot and its chats and to send the messages you set up; we never use it to read messages. We don’t keep notification records for messages sent through your own bot. You can remove a bot or a chat in Settings → Alerts; you have 10 minutes to undo that, then we delete it.

Pushover is an app that shows notifications on your phone or computer. To get our messages there, you enter your Pushover user key in Settings → Alerts. We check the key with Pushover when you save it and keep it with your account. You can remove it at any time; you have 10 minutes to undo that, then we delete it.

Telegram and Pushover deliver these messages, so they receive their text. We don’t read your other Telegram chats, your contacts or your phone number, and from Pushover we learn only whether your key is valid and whether a message was accepted.

Emails we send

Our emails come from login@mail.perply.pro. A sign-in email contains only a 6-digit code and a short note, never a link, and we send one only when someone asks for a code for your address on perply.pro. We don’t send newsletters or marketing.

When we invite you by your email address, we may send you one email saying that your access is open, with a single link: to our sign-in page, https://perply.pro/signin.

When you link Google, GitHub, Telegram or X in Settings, or unlink one there, we also send a short notice to your account’s email address. It names the service, contains no links and doesn’t include your username on that service. If we have already sent you 5 such notices in the past 24 hours, or our daily limit for these emails has been reached, we skip the notice; the change still shows in Settings.

When you change your email address in Settings → Profile, we send a code to the new address. Once you enter it, we sign you out on your other devices and send a short notice to the old address; it doesn’t include the new address. If our daily limit for these emails has been reached, we skip the notice; the change still happens.

If you get a code you didn’t ask for, someone may have typed your address by mistake. You can ignore the email: without the code, nobody can sign in with it.

Cookies and browser storage

Analytics cookies

Our own cookies are those strictly necessary for signing in, and one that remembers your choice about Google Analytics. The sign-in cookies are set by perply.pro itself, are sent only over HTTPS and can’t be read by scripts on the page. Cloudflare’s own security cookies are listed at the end of this section. Google Analytics cookies are set only if you allow them; see “Google Analytics”.

  • __Host-perply_session: keeps you signed in. It holds a random token; our database keeps only a hash of it. It lasts up to 90 days, and stops working sooner if you log out or don’t use Perply for 30 days.
  • __Host-perply_oauth: set when you start signing in with Google, GitHub, Telegram or X, or start linking one of them to your account. It holds encrypted one-time values that protect the sign-in against forgery, remember where to send you afterwards and, when you are linking an account, which Perply account and session started it. It lasts 10 minutes and is deleted when you come back from that service.
  • __Host-perply_link: set only when we need to confirm the email address of a Google or GitHub account with a code. It holds encrypted details of that pending sign-in: the account ID and email address, depending on the service your name, username and (for Google) profile picture address and organisation’s domain, and the page to open afterwards. It lasts 10 minutes and is deleted once you enter the code.
  • __Host-perply_wl: set when you prove your email address (with a code, through Google or through GitHub) but don’t have an invitation yet. It holds, encrypted, your email address and how and when you proved it; if you used Google or GitHub, also that account’s ID and, depending on the service, your name, username, profile picture address or (for Google) organisation’s domain. It lets this browser show your place on the waitlist and, once you’re invited, open your account without a new code. It lasts 30 days from when you proved the address (proving it again starts a new 30 days), stops working if that account is signed out or disabled, or if we remove your waitlist entry before you have an account, and is deleted when you choose “Use a different email” (or “Change”), log out or sign in.
  • perply_consent: remembers your choice about Google Analytics — “granted” after Accept, “denied” after Decline, on the notice at the bottom of the screen in the app (after you sign in) or with the “Analytics cookies” switch above — so that we don’t ask on every visit. It is sent only over HTTPS and lasts 393 days (no more than 13 months); then we ask again. Closing the page without choosing stores nothing.
  • Browser session storage: while you sign in with an email code, the page keeps your email address, the code timers, the page to open after sign-in and whether you are confirming a Google or GitHub sign-in in your browser’s session storage (“perply.auth.pending.v1”), so that reloading the page doesn’t lose your place. It stays in your browser and is cleared once you’re signed in, when you log out and when you close the tab.
  • Browser local storage: after you join the waitlist, the sign-in page keeps one date in your browser’s local storage (“perply.auth.wl.v1”, the day the waitlist cookie above would run out, never your email address), so that it can open straight on your waitlist place. It stays in your browser and is removed when you sign in, when you choose “Use a different email”, when the page finds the waitlist cookie gone, or on that day.
  • Browser local storage: the time you last allowed Google Analytics (“perply.consent.at”), so that its cookies end when your choice does. It is removed when you decline or when your choice runs out.
  • Browser local storage in the app: once you’re signed in, the app keeps in your browser’s local storage your account’s public ID (“perply.lastUser”, a random code, never your email address), so that the app opens at once on your next visit, and, once you have drawn an avatar, its drawing with that ID (“perply.lastAvatar”), so that it shows at once too; your boards with their names, widgets and each widget’s settings (“perply.dashboards.v4@” followed by that ID); your candle style, the theme you pick and your favourite timeframes (“perply-candle-style@”, “perply-theme@” and “perply-tf-favs@” followed by that ID); your favourite price-chart markets — token, venue, market type and trading pair (“perply-chart-favs@” followed by that ID); a copy of your time zone, so that times are right before the app hears from our server (“perply-tz@” followed by that ID); the filters, columns and watchlist of the arbitrage table (“perply-arb-lab@” followed by that ID); your triggers — each chain’s sources, conditions and actions with the values you gave them, where they sit in the builder and whether the chain is on (“perply.alerts.v1@” followed by that ID); the tokens and wallets you hide in the Hyperliquid section, and the time window and list layout you pick there (“perply-hl@” followed by that ID); the parts of the Terminal you show and their sizes, the pane you pick under its chart with its height and divider, each order book’s price step, and the leverage, margin mode and execution settings you pick in its ticket (“perply-term@” followed by that ID); the lines you draw on price charts — levels, trend lines and rays, kept for each market (“perply-draw.” followed by the token, the venue, the market type and that ID); short Perply AI action receipts (“perply.agent.action-receipts@” followed by that ID), including the action identifiers, short-lived grant and exact result, kept until the grant expires so that a lost response can be retried without applying the same view change twice; and the version of our market data the app last saw (“perply.dataRev”). We do not normally receive your boards, triggers or settings, except the time zone you pick and the selected board or filter context you send with a Perply AI message; market-data requests also carry the filters or items needed to answer them. The ID and the avatar’s drawing are removed when you log out or the app finds that your session has ended; your boards, triggers and settings stay in this browser until you clear its data for perply.pro.
  • Browser session storage in the app: when a different account signs in in this browser, the app keeps that account’s public ID in the tab’s session storage (“perply.app.switched”), so that it reloads the page only once. It is cleared when you close the tab.
  • Cloudflare, which protects our site, may set its own strictly necessary security cookie (for example “cf_clearance”) if it needs to check that a visitor isn’t a bot. Cloudflare’s security check on the sign-in page may also set its own strictly necessary security cookie on challenges.cloudflare.com.

Google Analytics

If you choose Accept on the notice at the bottom of the screen in the app (after you sign in), or turn on the “Analytics cookies” switch under “Cookies and browser storage”, we use Google Analytics to see how Perply is used, for example which pages people open. Until then, our pages don’t load Google Analytics and send nothing to Google for it.

Google Analytics then receives: the address of each page you open, without the part after “?” or “#” (where Perply keeps things like wallet addresses and trading pairs), which also serves as the page’s title; the page you came from, shortened the same way; when and for how long you use the site; your device type, operating system, browser, screen size and language; and your IP address. Google uses the IP address to estimate your approximate location (country, region and city) and doesn’t store it in Google Analytics. We don’t send your email address, your account ID or anything you type.

It sets two cookies on perply.pro: “_ga”, a random ID that recognises this browser on later visits, and “_ga_SB84ZR8LG2”, which keeps track of your current visit. They expire when your choice does, at most 393 days after you allow it.

Google Analytics keeps this data for 2 months; after that, only totals remain in its reports (for example, how many visits a page had). We have turned off Google signals and advertising features.

Google LLC (United States) runs Google Analytics for us and may process this data in the United States and other countries. See Google’s Privacy Policy (policies.google.com/privacy) and how Google uses information from sites that use its services (policies.google.com/technologies/partner-sites).

We rely on your consent. You can withdraw it at any time with the “Analytics cookies” switch: Google Analytics stops at once and its cookies are deleted from this browser.

Who we share data with

We don’t sell your personal data or share it for advertising.

We may disclose data if the law requires it, to protect the safety and rights of Perply, our users or others, or as part of a merger or sale of Perply, in which case this policy keeps applying to your data.

Otherwise, we share data only with these service providers, which run parts of Perply for us. Each has its own privacy policy on its website.

  • Cloudflare: domain name system (DNS), content delivery, protection against attacks, and the encrypted connection between the internet and our server. Every request to perply.pro passes through Cloudflare’s global network, including your IP address and anything you submit. Cloudflare also forwards emails sent to support@perply.pro to our mailbox. Once you select the email field on the sign-in page or a sign-in code is requested, the page also runs Cloudflare Turnstile, a security check that tells people from automated programs. It loads from challenges.cloudflare.com only on the sign-in page. It sends Cloudflare your IP address, your browser’s user agent, technical signals from your browser and device, and the site you are on (perply.pro). Usually you won’t notice it; if Cloudflare can’t tell, it shows a box asking you to confirm you’re human. Our server then sends Cloudflare the check’s result and your IP address to verify it, and doesn’t keep the result. Cloudflare also uses these signals, as a controller, to improve its bot detection (see Cloudflare’s Turnstile Privacy Addendum).
  • Resend (United States): sends our sign-in code emails, the emails that tell you your access is open, the notices about linked sign-in methods and the emails about changing your email address. It receives your email address and the email itself, and keeps a record of each message, including its content, for up to 30 days.
  • Google: if you choose Google sign-in, as described above, and Google Analytics, only if you allow it (see “Google Analytics”). Separately, the mailbox that receives messages sent to support@perply.pro is hosted by Google (Gmail).
  • GitHub (United States): only if you choose GitHub sign-in, as described above. You sign in on GitHub’s own page, so GitHub learns that you are signing in to Perply.
  • Telegram: only if you link a Telegram account to sign in, link our notifications bot or add your own bot, as described above. You confirm on Telegram’s own page, so Telegram learns that you are linking your account to Perply or signing in to it; the messages of our notifications bot and of your own bot reach you through Telegram.
  • Pushover (United States): only if you set up Pushover, as described above. It receives your Pushover user key and the messages we send you.
  • X (United States): only if you link an X account, as described above. You confirm on X’s own page, so X learns that you are linking your account to Perply or signing in to it.
  • OpenAI (United States): only when you send a message to Perply AI. It receives that message, the selected app context described above, data returned by the Perply tools needed for the answer, and the result of a view change you asked for. We ask OpenAI not to store the response through its API setting, but that setting does not promise zero retention of separate abuse-monitoring logs under OpenAI’s policies.
  • Vultr: provides our servers and backup storage in Tokyo, Japan, where our database and logs are kept.

Exchange API keys

Only read-only keys are accepted. Your browser sends a key to Perply when you check or save it; it is never sent back to the browser. Our collection service decrypts saved keys in memory to contact the exchange. Encryption reduces the risk from a database leak, but a compromise of the collection server could expose the keys and the account information they can read. Depending on the exchange, this may include information beyond positions, such as deposit addresses. Use an exchange IP restriction when available.

Public wallet connections

If you add a Hyperliquid wallet address in Settings → API keys, we store that public address encrypted on our servers, together with its label and connection status, and send the address to Hyperliquid to read supported perpetual positions and account balances. We do not ask for a wallet private key or seed phrase. Positions and balances are held in memory and delivered to your signed-in sessions; they are not saved as a position history. Removing the connection stops delivery to your account once our collection services process the removal. The encrypted connection is removed by scheduled cleanup after the existing 10-second recovery window; an audit entry without the address remains for up to 90 days. A shared public subscription can remain for up to 30 seconds after its last consumer stops. Hyperliquid sees the requested public address and our server’s connection information, and its privacy policy applies. We do not send your email address or label to Hyperliquid.

Order books from exchanges

The Terminal shows live order books straight from the exchanges. While it is open, your browser connects to the public market data service of each of the two exchanges whose order books it shows (Aster, Binance, BingX, Bitget, Bybit, Gate, Hyperliquid, Kraken, Lighter, MEXC or OKX) and receives the order book from it. That exchange sees your IP address and the information your browser sends with any connection, as when you visit its website, and its own privacy policy applies. We don’t send it anything about you.

Wallet activity from exchanges

Wallets Tracker keeps the addresses, labels and filters you add in this browser, as part of your boards. Activity and current positions are held in memory while the widget is open; there is no saved activity archive. Hyperliquid receives the wallet address you choose through a direct public connection from your browser and can see your IP address and ordinary connection information. Public Aster reads pass through Perply, which forwards the requested address to Aster. Your labels are never sent to an exchange. These connections use the exchange’s own privacy policy. Tracking stops when the widget is no longer visible or you pause the wallet.

Where your data is stored

Our servers, database and backups are in Tokyo, Japan. Cloudflare handles your requests in the data centre nearest to you, which may be in another country. Resend processes and stores data in the United States. Google, GitHub, Telegram, X and Pushover process data in their own data centres, which may be in other countries, including the United States.

So your data may be transferred outside your country, including to Japan and the United States. The European Commission recognises Japan as providing adequate protection for personal data. For other transfers, we rely on the safeguards in our providers’ data processing terms, such as the European Commission’s Standard Contractual Clauses.

How long we keep it

We delete data automatically on the schedule below. We may keep specific data longer only if the law requires it, or while we deal with a security incident or a legal claim.

  • Account details and the sign-in accounts connected to it (Google, GitHub, Telegram, X): for as long as your account exists. A connected account is deleted as soon as you unlink it.
  • Sign-in code records: 8 days. The code itself stops working after 10 minutes; we keep the record for 8 days to enforce weekly limits on wrong attempts.
  • Email change records: the change itself until it is done, or for a day after its code expires; the records of the emails we sent, 24 hours.
  • Sessions: a session lasts at most 90 days and ends sooner if you log out or don’t use Perply for 30 days. We delete the session record within 30 days after it ends.
  • Security event log: 90 days.
  • Web server logs, including full IP addresses: 30 days.
  • Operational logs of our sign-in service: up to 90 days. They never contain email addresses, codes or full IP addresses; at most an account number, an IP address prefix and a shortened keyed hash of an email address.
  • In-memory abuse counters: up to 24 hours after your last request (see “Short-lived counters” above).
  • Invitations: until we withdraw the invitation or you ask us to delete your data.
  • Access to connected services: until we remove it or your account is deleted. Our log of these changes keeps your account number until your account is deleted.
  • Your Telegram link to our notifications bot, your own Telegram bots and chats, and your Pushover key: until you unlink or remove them, or your account is deleted. After you unlink or remove one in Settings, we keep it for 10 minutes so that you can undo, then delete it. One-time link codes: 24 hours.
  • Notification records: 30 days.
  • Perply AI chat text, selected context, tool payloads and provider replay data: 30 days from when the chat was created, or earlier if you delete the chat. Activity does not extend the deadline. Non-text run, action, idempotency and cost records and the audit record of an operator opening a transcript: up to 90 days. The people who operate Perply can open full AI transcripts in Admin; every such open is recorded.
  • Waitlist: until you ask us to remove you, or until we close the waitlist. We also remove an address from the waitlist when a Google or GitHub account with that address, verified by Google or GitHub, is linked in Settings or used to sign in after it is linked.
  • Google Analytics, if you allow it: Google keeps the data for 2 months; its cookies expire when your choice does, at most 393 days after you allow it. Your choice is kept for 393 days (no more than 13 months); then we ask again.
  • Support emails: as long as we need them to deal with your request and keep a record of it. We delete them when you ask, unless the law requires us to keep them.
  • Backups: our database is backed up every day. Backups are encrypted and replaced automatically, so deleted data disappears from them within 14 days.
  • We retain a connected exchange key until you replace or remove it, or delete your Perply account. Removing a key stops collection at once, and the encrypted key is deleted about 10 seconds later. We keep a record of key additions, replacements, removals and rejected checks for up to 90 days, without key values. Position and closed-position history data is held in memory to serve the widget. History is not stored in our database or persistent browser storage. Removing or replacing a key clears its history cache. Closing the History view or ending the session clears its browser history data. You can choose to copy or download a PNL image to your own device.

How we protect your data

We keep the amount of data we hold small and protect what we keep. No system is perfectly secure, but these are our main measures:

  • Every connection to perply.pro is encrypted (HTTPS). Our server accepts no direct web traffic from the internet: requests reach it only through an encrypted Cloudflare tunnel.
  • There are no passwords to steal. Sign-in codes have 6 digits, expire after 10 minutes, allow only 5 tries and are stored only as a keyed hash.
  • Session tokens are stored only as hashes, so a copy of our database can’t be used to sign in as you. Our sign-in cookies are marked Secure and HttpOnly.
  • We don’t store access tokens from Google, GitHub, Telegram or X. You can link another sign-in account only within 2 hours of signing in with Google, GitHub or an email code (otherwise we first ask for a code sent to your email address), and we email you when you link or unlink one in Settings (unless we have already sent you 5 such notices in the past 24 hours or our daily limit for these emails has been reached).
  • Our database can’t be reached from the internet. Connections to it are encrypted, and the sign-in service can only read and change the data it needs.
  • Backups are encrypted (AES-256).
  • We limit how often anyone can request codes or try to sign in, and our sign-in service never writes email addresses, codes or full IP addresses to its logs.
  • Only the people who run Perply can access our servers, using cryptographic keys; password logins are turned off.
  • If a security breach affects your data, we will tell you and the relevant authorities as the law requires.

Your rights

Depending on where you live, you have the right to:

  • find out what data we hold about you and get a copy of it;
  • have wrong data corrected, for example your email address;
  • have your account and data deleted;
  • object to, or ask us to limit, uses of your data based on our legitimate interests;
  • withdraw your consent to Google Analytics at any time, with the “Analytics cookies” switch under “Cookies and browser storage”;
  • complain to your local data protection authority if you think we have handled your data wrongly.

How to make a request

Email support@perply.pro from the email address linked to your account, invitation or waitlist entry. We may ask you to confirm the request from that address, or by signing in, so that we don’t give your data to someone else. Requests are free, and we answer within 30 days.

You can delete your account yourself in Settings → Profile → Delete account. If you haven’t signed in within the last 2 hours with Google, GitHub or a code sent to your email address, we first send a code to your email address and ask you to enter it. Deleting can’t be undone. You can also ask us to delete your data; the people who run Perply then do it by hand once the request is confirmed. Either way, we remove at once your account, your Google, GitHub, Telegram and X sign-in details, your Telegram link to our notifications bot, your own Telegram bots and chats, your Pushover key, your encrypted exchange keys, your Perply AI chats, your sessions, any access we gave you to connected services, your waitlist entry and any invitation made for your email address. If you have an account, we also erase your email address and IP address prefix from your sign-in code records straight away. The rest disappears on the schedule above: security log entries lose your account number (they keep the shortened hash of your email address and, in entries about changes we made to your account or to your access, your account’s public ID) and are deleted within 90 days, notification records lose your account number and are deleted within 30 days, sign-in code records within 8 days, web server logs within 30 days, Resend’s copies of our emails within 30 days and backups within 14 days.

Children

Perply is for adults. You must be at least 18 to use it, because it deals with cryptocurrency markets. We don’t knowingly collect data from anyone under 18. If you believe someone under 18 has given us their data, contact us and we will delete it.

Changes to this policy

We will update this policy when Perply changes, for example when we add features or service providers. The date at the top shows the latest version. If a change significantly affects how we use your data, we will tell signed-in users on the site or by email before it takes effect.

Contact

Questions or requests about privacy: support@perply.pro.

[Operator legal name], [Operator address], [Country of registration].