Privacy Policy
Last updated: October 24, 2026
The short version
- Sojo is one account for many games. Your account is tied to your X user id.
- We keep your X user id, name, handle and picture, refreshed each time you sign in.
- If you connect your X, Sojo can read your profile and posts but can't post. We keep only your sign-in post's id, and X's tokens encrypted on our servers.
- We record how people play every game that uses Sojo, including where they played and which post brought them.
- While you're signed in, we record how long you play each game, to share revenue with the games you play. Games never see it unless you send them feedback.
- In the EU, EEA and UK, nothing for analytics is stored on your device before you sign in. We still record how you play, using an id that lives only in the page's memory and a daily visitor id that can't link you across days.
- Raw events are deleted after 2 years. We keep daily totals.
- We never store raw IP addresses.
- We don't sell your data. There are no ad networks, and id.sojo.gg loads no third-party trackers.
- Sojo Ads are contextual only: by game and plot, never by you. Nothing is stored on your device for ads, and advertisers see only totals.
- Other people's games get a different player id for each game, never your X user id. They see your name, handle and picture only after you agree.
- Stripe holds your card. We keep only its brand, last 4 digits and expiry.
- If you add an email, we use it only for receipts and account notices. Remove it in Account any time.
- Email support@sojo.gg to get a copy of your data, fix it or delete your account.
1. Who we are
Sojo is run by Jaivin's Shop, LLC ("Sojo", "we", "us"). Jaivin's Shop, LLC is a Delaware limited liability company. For players and advertisers in the EU, EEA and UK, Jaivin's Shop, LLC is the controller of the data described here.
This policy covers sojo.gg (the hub and Account), id.sojo.gg (sign-in), sojo.gg/ads (Sojo Ads) and the games we run: Tweetcraft (tweetcraft.jai.vin) and x/place (xplace.jai.vin). Other people's games that use Sojo have their own privacy policies (see section 5).
2. What we collect and why
Your account
- From X: your X user id, name, handle and profile picture. We refresh them each time you sign in.
- Your sign-in post: the id of the post you used to prove your X account.
- Connect your X: If you choose Connect your X while signing in to a game, X asks you to let Sojo read your profile and posts (users.read, tweet.read, offline.access). Sojo can't post, like or follow. We read your X user id, handle, name, picture and verified status once. Then we read your own recent posts since your sign-in code (up to 5 at a time) only to find your sign-in post. If X stops your tokens working and the game has a launch post, we look instead for your quotes of that post. We keep only the matching post's id, not the text of your posts or any other post we read. So we can check again when you come back without asking you to reconnect, we store X's access and refresh tokens, encrypted, on our servers only, with your X profile. They're never sent to games or written to logs. We delete them (and that copy of your profile) and revoke them at X after 90 days without use, when you choose Disconnect X in Account, or when you Sign out everywhere. If you revoke Sojo at x.com/settings/connected_apps, X stops the tokens working and we drop them. We also count X API calls per day, with no account details, for up to 400 days. While connected, when you open a game's paste sheet we also check your latest post first (the same read), so you often don't need to paste a link at all.
- Sign in with X on sojo.gg: We ask X only to read your profile. We read your X user id, handle, name, picture and verified status once, then hand the permission back to X at once. We don't keep X's tokens for this.
- X Premium: whether your X account is Premium, from X's public data. We use it as a signal against bots.
- Email (optional): if you add one in Account, we send a code to check it's yours, then use it only for receipts and account notices (such as Royal pausing). We keep the address and when you verified it, and a log of what we sent (kind, when, delivered or not), not the emails' contents. Games never get it. Remove it in Account any time and we stop. Advertisers must add and verify one before their ad can start, because we email each ad charge's receipt and notices about their ads (approved, held, paused, budget spent). Games we run can ask only whether you have a verified email (yes or no) and ask us to send a notice; they never get the address.
- Tweetcraft: if you played Tweetcraft before Sojo, we copied your Tweetcraft account and purchase history into Sojo.
We use this to run your account, sign you in to games and show who you are in games.
Sessions and devices
- One record per browser you sign in from: when it started, when it was last used, which game it started in and where you played.
- A random device id. Outside the EU, EEA and UK it's created on your first visit, before you sign in. In the EU, EEA and UK we create one only when you sign in. Either way, once you sign in it's tied to your session. We use it to list your sessions and devices in Account, spot stolen sessions and for analytics tied to your account.
- Changes in browser, device and network on each session, so we can spot account takeovers. You can see your sessions in Account and sign out everywhere.
Gameplay and usage events
Every game that uses Sojo sends us events. Examples: a game loaded, a play session started or ended, a first move, a round finished, a share opened, a sign-in, a payment, an error. Busy actions are counted per session, not one by one.
Each event records:
- the game and the time
- your session and account once you sign in
- your device id (in the EU, EEA and UK, only after you sign in)
- where the game was played: inside an X post, in the X app, or on the web
- your browser and device type
- your country and network, from Cloudflare
- which post or share brought you
Before you sign in, in the EU, EEA and UK: we still record your gameplay events, and we store nothing on your device for them.
- Each page load gets a random id that lives only in the page's memory. It's never saved. It links that load's events together.
- Our server adds a visitor id for the day: a salted hash of your IP address and browser. The salt is replaced every day and the old one deleted, so we can't link you across days. We never store raw IP addresses.
- Events also record your country, browser and device type, where the game was played and which post brought you.
- If you sign in, that page load's events are linked to your account.
Ad views are counted with a viewer key, not with events or your device id (see Sojo Ads: players below).
Playtime: only while you're Royal. While you're signed in and a game's page is on screen, Sojo's own frame tells us about once a minute, and we keep the minutes you played each game each day, tied to your account. We use them to share your Royal subscription with the games you play (part of each month is split across the games you played, by playtime), and to stop abuse. Games never see your playtime unless you send them feedback. Nothing is recorded while you're not Royal, signed out or the page is hidden.
Before you sign in, everywhere else: events carry your device id. When you sign in, earlier events from the same device count toward your account.
After you sign in: events are tied to your account and carry your device id, wherever you are.
We use events to understand how the games are played, see which posts bring players, build per-game numbers, find bugs and stop abuse. We also build summaries from them, such as when you last played, how often, which games and how many players your shares brought in.
IP addresses
We never store raw IP addresses. For abuse checks and rate limits we keep a hash of your IP address. The salt behind that hash changes every month, so hashes from different months can't be matched.
Payments
- Purchases: what you bought, in which game, the amount, any card fee, any tax, the status and Stripe's reference for it.
- Gems: every change to your gem balance and what it was spent on.
- Cards: Stripe holds your full card details. We keep only the brand, last 4 digits and expiry.
- Disputes and fraud: chargebacks, refunds and Stripe's fraud warnings, and flags on the account.
We use this to sell and deliver gems and items, show your purchase history, prevent fraud, answer disputes and keep business and tax records. If you dispute a payment, we send your purchase and spending history to Stripe as evidence.
Royal
If you subscribe to Royal, we keep your subscription status, renewal date, the card it's billed to and each monthly payment, and tell games only whether you have the Royal perk. Royal is billed by card each month. Royal members see ads like everyone else.
Sojo Ads: advertisers
If you buy ads on sojo.gg/ads, we keep:
- your verified email, the brand shown on your ads, country, postal code and time zone
- business details if you add them: legal name, address and VAT id
- your card, held by Stripe (we keep only the brand, last 4 digits and expiry)
- your ads: the image, the versions made from it for each game's format, headline, link and where it runs, with every version
- your budgets, maximum prices, spend, charges and invoices
- the results of every review and appeal, and reports about your ads
Every ad is checked automatically by Jev, our moderation provider: the image, each game's version of it and the text. We check links by following them to the landing page, checking its text and looking up public domain registration data (RDAP) and malware lists. To keep banned advertisers from coming back, we compare card fingerprints, device ids and domains between advertiser accounts.
A blocked ad is kept 30 days so you can appeal, then deleted. Invoices and charges are kept as long as tax law requires.
Sojo Ads: players
- Contextual only. Ads are picked by game and plot, never by you. We don't build an ad profile, use your history or interests, or retarget you. Games never send us one.
- Counting views. A view is counted at most once per viewer per plot per hour. We use a viewer key: a hash of your account id if you're signed in, or else your IP address and browser, with the plot and the hour, salted with a salt that's replaced every hour. The key and its salt are deleted after the hour. Nothing is stored on your device for ads, signed in or out, and ads never use your device id.
- Clicks. An ad's link goes through sojo.gg/go. The advertiser sees sojo.gg as the referrer, never the game or anything about you.
- Reports. If you report an ad, we keep the reason, any note and a reporter key: a keyed hash of your account or visitor key with a salt that changes every month. It makes one person count once per ad and identifies nobody. Jev checks reports against the ad.
- Why this ad. The report sheet says why an ad is shown, for example "Shown because you're playing x/place. Not based on you."
- What advertisers see. Totals only, per ad, day, game and plot. Rows under 50 views are grouped. Never who saw or clicked, any id, IP or location.
Game makers
If you register a game, we keep the game's name, origins and owner account, and numbers about how the game uses Sojo, such as tokens issued and events sent.
Messages
If you email us, we keep the email and our reply.
You can send a game feedback or ask it for a language from Sojo's menu. The game sees only your country, language and play stats in that game (days played, playtime, Royal, gems spent), never your name or X account; a language request reaches it only as a count. We keep your account with your feedback to deliver replies.
3. Legal basis (EU, EEA and UK)
| What we do | Legal basis |
|---|---|
| Run your account and sessions, sign you in (including Connect your X), sell and deliver gems, items and Royal, sell and bill ads | Contract |
| Share your name, handle and picture with a game we don't run | Consent, given on the consent screen. You can withdraw it by disconnecting the game in Account |
| Gameplay and usage events after you sign in, attribution and per-game numbers | Legitimate interests: understanding and improving the games |
| Playtime while you're Royal | Legitimate interests: sharing your Royal subscription fairly with the games you play |
| Gameplay events in the EU, EEA and UK before you sign in (a page-load id in memory and a daily visitor id; nothing stored on your device) | Legitimate interests: understanding and improving the games |
| Security, rate limits, fraud and abuse checks, account takeover signals | Legitimate interests: keeping players and the service safe |
| Royal checks | Contract, and legitimate interests in giving perks to the right people |
| Counting ad views and clicks, handling ad reports | Legitimate interests: billing advertisers fairly and keeping ads safe |
| Reviewing ads and checking advertisers | Legitimate interests: keeping the games safe |
| Business and tax records | Legal obligation |
Where we rely on legitimate interests you can object (see section 7).
In the EU, EEA and UK the only cookies we set are strictly necessary ones: the session cookie that keeps you signed in and the short-lived cookie used during sign-in. We don't set the device id cookie there before you sign in. We set it when you sign in (see section 4).
4. Cookies and storage
Sojo uses its own cookies and browser storage. We use no advertising cookies, and nothing is stored on your device for ads.
Strictly necessary (everyone)
| Name | Where | What it's for | How long |
|---|---|---|---|
__Host-sojo_s | id.sojo.gg, sojo.gg | Keeps you signed in. It's HttpOnly, and we store only its hash. It changes about daily | Until you sign out, or 400 days without playing |
__Host-sojo_p | id.sojo.gg | A partitioned copy of the session cookie, for browsers that block third-party cookies | Same as above |
__Host-sojo_v, __Host-sojo_vp | id.sojo.gg | Ties a sign-in in progress to your browser | 10 minutes |
| Local storage in the Sojo frame | id.sojo.gg | A fallback refresh token where cookies don't work, plus your cached name, handle and picture once you sign in | Until you sign out or clear it |
Device id (outside the EU, EEA and UK from your first visit; in the EU, EEA and UK once you sign in)
| Name | Where | What it's for | How long |
|---|---|---|---|
__Host-sojo_d, __Host-sojo_dp | id.sojo.gg | A random device id, and its partitioned copy. Once you sign in it's tied to your session and used to list your sessions and devices in Account, spot stolen sessions and for analytics tied to your account. Outside the EU, EEA and UK it's also used before sign-in for analytics and abuse checks | Long-lived |
| Device id in local storage | the Sojo frame (id.sojo.gg) and games | A copy of the device id where cookies don't work | Until you clear it |
In the EU, EEA and UK we don't set the device id cookie or store a device id in the Sojo frame's storage before you sign in. We create it when you sign in.
After you sign in, games that use Sojo may keep your name, handle and picture in their own local storage so they can show them quickly.
Stripe loads its payment form when you pay or save a card, and may set its own cookies to prevent fraud. See Stripe's privacy policy. Sojo's fonts are served from Sojo's own servers, so no font service sees your visit.
5. Sharing
With games
- Games we run (Tweetcraft, x/place) get your X user id, name, handle and picture, any perks that apply, and your Sojo account id.
- Other people's games get a different player id for each game and never your X user id. They get your name, handle and picture only after you agree on the consent screen ("<Game> wants your X name, handle and picture"). They also learn any perks that apply in that game.
- Games only get short-lived tokens for their own game. There are no bulk or lookup tools for games.
- You can see your connected games in Account and disconnect any of them. Disconnecting stops new data going to that game. What a game does with data it was already given falls under that game's own privacy policy.
- Game makers can see numbers about their own game only. They never see your playtime unless you send them feedback (Messages).
- Games that show ads get the same ads for every player and their own totals. Never who saw what.
With advertisers
Advertisers get totals only (see Sojo Ads: players). We never give them your name, handle, picture, any id, your IP address or where you are.
Public
Your sign-in post is a public post on X. Games may show your name, handle and picture to other players.
Service providers
We use these providers to run Sojo. They process data for us:
| Provider | What for |
|---|---|
| Cloudflare | Hosting, database, analytics and storage |
| Stripe | Payments, and working out tax (Stripe Tax). Stripe holds your card details |
| X | Reading your profile and posts to verify sign-ins, including Connect your X |
| Jev (typesafe.ai) | Automatic moderation of ads and ad reports |
| Resend | Sending receipts, account notices and email codes |
Other cases
We may share data if the law requires it, to protect players or the service, or as part of a merger or sale of the business. If that happens, this policy keeps applying to your data.
What we don't do
We don't sell your data. We don't share it with advertisers or ad networks. We don't use it for targeted ads, on Sojo or across other companies' sites.
6. How long we keep it
| Data | How long |
|---|---|
| Account | While your account exists |
| Sessions | Until you sign out, or 400 days without playing |
| Raw events | Deleted after 2 years. If you delete your account, your events are anonymized sooner |
| Daily totals | Kept. They don't identify you |
| Playtime per game and day | Deleted after 2 years. Revenue shares already worked out from it are kept with the business records |
| Live analytics | About 3 months |
| IP hashes | Can't be matched after the monthly salt change |
| X tokens from Connect your X | Deleted after 90 days without use, on Disconnect X or Sign out everywhere |
| X API call counts | Up to 400 days. They have no account details |
| Ad viewer keys and their salt | Deleted after one hour |
| Raw ad clicks | 120 days. Views are kept only as hourly totals, which have no viewer data |
| Ad reports | 1 year. Reporter keys can't be matched after the monthly salt change |
| Page-load ids (signed-out players in the EU, EEA and UK) | Never saved on your device. Kept in events like other event data |
| Daily visitor ids (signed-out players in the EU, EEA and UK) | The salt is deleted every day, so ids can't be linked across days. Kept in events like other event data |
| Email address | Until you remove it in Account, or delete your account |
| Email codes | Deleted when used or replaced, or a day after they expire |
| Log of emails sent | As long as the purchase it was about |
| Purchases, gem history and charges | As long as needed for tax, accounting, fraud and disputes |
| Advertiser details | While your advertiser account exists, and as tax law requires for invoices |
| Ads and their reviews | While the ad exists, and billing records as above |
| Blocked ads | 30 days for an appeal, then deleted. Malware and illegal content only as the law requires |
| Ad charges and invoices | As long as tax law requires |
7. Your rights
You can ask us to:
- Access the data we have about you
- Export it in a common format
- Correct it. Your name, handle and picture come from X, so changing them on X updates Sojo the next time you sign in
- Delete your account. We anonymize your events, end your sessions, revoke any X tokens and remove your saved cards. We keep purchase and payment records the law requires. Unspent gems are lost, and we warn you about this before you delete
For now, email support@sojo.gg from your account's email, or tell us your X handle. We may ask you to prove you control the X account. We'll answer within one month. Later these tools will be in Account.
If you're in the EU, EEA or UK you can also object to processing based on legitimate interests, ask us to restrict processing and withdraw consent at any time. You can complain to your local data protection authority.
If you're in a US state with a privacy law, you have the rights that law gives you, such as knowing, correcting and deleting your data. You can make the same requests by emailing support@sojo.gg. We don't sell or share personal data for targeted advertising. We won't treat you differently for making a request.
8. Children
- Sojo is for people 13 and older (X's minimum age). Under 13 isn't allowed. If we learn that someone under 13 has an account, we delete it.
- If you're under 18, a parent or guardian must agree to our terms and approve your purchases.
- In the EU, EEA and UK, if you're below your country's age of digital consent (between 13 and 16), a parent or guardian must agree to the parts that rely on consent, such as sharing your name, handle and picture with other people's games.
Parents can contact us at support@sojo.gg.
9. Security
The session cookie is HttpOnly and we store only its hash. Games get short-lived signed tokens and never see your session. X tokens from Connect your X are encrypted and stay on our servers. We never store raw IPs. Stripe holds card details. No system is perfectly secure, so if you think your account is at risk, use Sign out everywhere in Account and email us.
10. International transfers
We're based in the United States, and our providers process data in the US and other countries. If you're in the EU, EEA or UK, your data is transferred outside it. We rely on safeguards such as the European Commission's Standard Contractual Clauses (and the UK equivalent) or the EU-US Data Privacy Framework where a provider takes part in it.
11. Changes
We may update this policy. We'll change the date at the top. For changes that matter, we'll give notice on sojo.gg or in Account before they take effect.
12. Contact
Email support@sojo.gg for privacy questions, data requests and account deletion. Email is the only way to reach us.
Jaivin's Shop, LLC