Privacy Policy
Last updated: September 5, 2026
This Privacy Policy explains what information LW Alliance Helper (the "Bot") collects, how it is used, and how it is stored. By adding LW Alliance Helper to your Discord server, or by being a member of a server where it is installed, you agree to this policy.
Who We Are
LW Alliance Helper is operated as a Discord bot for Last War alliance leadership teams. If you have questions about this policy, open an issue on our issue tracker or email us at lwalliancehelper@gmail.com. Issues are public, so anything involving your own information is better sent by email.
Where Your Data Lives
Alliance Helper keeps a clean separation: your alliance's data lives in your Google Sheet, on a Google account you own and control. The bot's own database stores the configuration that tells the bot what to do, some operational bookkeeping, and the game records described below.
| What | Where it lives | Who owns it |
|---|---|---|
| Power scores, growth snapshots, train history, participation logs, member roster (when synced), survey responses, birthdays, storm sign-ups, weekly storm rosters, post-event attendance, recruiting/transfer applicant tracking | Your Google Sheet | You. The bot writes; your Sheet is where it lives. |
| Wizard answers, channel/role IDs, schedule settings, draft state, event sign-ups, premium assignment, persistent view registry | Bot's SQLite database (private, hosted on Railway) | The bot. This is config and bookkeeping, not alliance data. |
| Champion Duel tournament records (the registration list, group standings, results and line-ups) | Bot's SQLite database (private, hosted on Railway) | The bot. This is tournament information the game publishes, not alliance data. |
| Alliance Duel (VS) league records (day scores, week results and the league table) | Bot's SQLite database (private, hosted on Railway) | The bot. This is league information the game shows every alliance in the bracket, not alliance data. |
What this means for you:
- You own the data. Every piece of data that's about your alliance (its members, history, results, tracking over time) is stored in your Sheet, not ours. The bot reads and writes; we don't keep duplicates of your alliance's Sheet data.
- Leaving doesn't trap your data. If you stop using the bot, revoke the service-account share on your Sheet (Share → remove the bot's service-account email). You keep everything that matters. There's no export step or migration request, because we never had a separate copy of your Sheet.
- Premium adds features, it does not take away any data or lock you in to a plan. Subscribing unlocks features that build on the same setup (DMs, scheduled reminders, Member Sync). Nothing about your alliance data moves to a different system; storage works the same as on the free tier.
This is a deliberate choice. If you ever want to move to another tool (or build your own), your alliance's data is already in your own Google Sheet, on a Google account you control.
What We Collect from Discord, and Why
When you use LW Alliance Helper, we collect your Discord user ID, display name and the ID of the server you are using it in. We use this to run the features your alliance has set up: matching you to your row in your alliance's sheet, sending the DMs your leadership has enabled, and recording sign-ups and contributions so they stay accurate, attributable and reliable.
We do not sell your data and we do not use it for advertising.
If you would like your information removed, open a data removal request. Removing the data we have does not stop the bot from collecting it again; to do that you must leave any server with the bot installed.
What Information We Collect
LW Alliance Helper collects only the information necessary to provide its features. This includes:
Server install metadata (for support triage): when the bot is added to a server, it stores a small record so that errors logged against a guild ID can be matched to an alliance for support purposes. This record contains the guild ID, the current guild name, the server owner's Discord ID, and the Discord ID of the user who invited the bot when this can be read from the audit log. Two timestamps are kept: the first time the bot saw the server and the most recent time it reconnected. The record is updated whenever the bot starts up so the guild name stays current, and it is deleted automatically 30 days after the bot is removed from a server.
When Member Sync is configured (a Premium feature), the bot also writes each member's server-join date and assigned role names to a tab in your Google Sheet, alongside their Discord ID and display name. This is opt-in and only happens after leadership opens /setup and configures it via the 👥 Member Sync button.
From your Google Sheet (submitted by your members):
- Any data your members submit through the survey feature (e.g. squad powers, profession, game statistics). The specific fields depend on the questions you configure.
- Birthday data, if you configure birthday tracking and have that information in your sheet
Configuration data:
- Your Google Sheet ID
- Your server's configured timezone, channels, roles, and feature settings
Champion Duel records: we keep a record of the in-game grouping information supplied by our users (including the registration list, group standings, results and line-ups) in Champion Duel's own database rather than in your Google Sheet. All of it comes from what the game shows players within that grouping.
Alliance Duel (VS) records: we keep a record of the league information supplied by our users (including day scores, week results and the league table) in the bot's own database rather than only in your Google Sheet. All of it comes from what the game shows the alliances in that league.
What We Do Not Collect
- We do not collect passwords, payment information, or personal contact details
- We do not read any Discord messages beyond what is typed in response to an active bot prompt
- We do not access any Google Sheet data beyond the tabs and columns you configure the bot to use
- We do not track your members' activity, online status, or behavior
How Information Is Used
Information collected by LW Alliance Helper is used solely to provide the bot's features:
- Server configuration data is used to route commands, post announcements, and personalize the bot's behavior to your server
- Discord user IDs and display names are used to match survey submissions to the correct row in your sheet and to @mention members in birthday announcements where a Discord ID is available
- Google Sheet data is read and written only in response to commands run by your leadership team or automated tasks you have configured
We do not use your data for advertising, analytics, or any purpose beyond operating the bot.
Our legal basis. Where UK or EU data protection law applies, we rely on legitimate interests: operating the bot and providing the features an alliance has chosen to set up. For Premium subscriptions we also rely on performance of a contract. You can object to our use of your information at any time by contacting us.
Direct Messages from the Bot
The bot may send Discord direct messages in these cases:
- Welcome DM: when the bot is added to a new server, it DMs the user who invited it (or the server owner if the inviter cannot be determined) with setup instructions and links to the documentation.
- Premium DM features: when leadership has enabled DM-based features (birthday wishes, train assignment notifications, storm participation reminders, or scheduled survey reminders), the bot sends those DMs to members on the configured roster. Members can disable DMs from the bot in their Discord privacy settings ("Allow direct messages from server members").
- Premium storm sign-up nudge: when a member signs up for a storm and their power score on file is more than a few days old, the bot may DM them a one-off "remember to refresh your squad power before the event" nudge. This is a Premium-only feature, only fires when your alliance has the Premium storm sign-up workflow turned on, and respects the same DM privacy settings as everything else.
- Config export delivery: when leadership runs
/config export, the bot DMs them the resulting JSON file as a one-off delivery. The bot does not retain a copy of the exported file.
The bot does not initiate DMs outside of these features.
How Information Is Stored
Server configuration is stored in a private SQLite database hosted on Railway (our hosting provider). This database is accessible only to the bot and is not shared with any third parties.
Your alliance's member data (survey responses, birthday information, squad powers, and everything else your members submit through your sheet) is stored in your own Google Sheet. We write to your sheet on your behalf when commands are run, but we do not retain copies of that data.
Google Sheet access is granted by you when you share your sheet with the bot's service account during setup. You can revoke this access at any time by removing the service account from your sheet's sharing settings.
Data Sharing
We do not sell, trade, or share your data with any third parties, with the following exceptions:
- Railway: our hosting provider stores server configuration data as described above. Railway's privacy policy applies to their infrastructure.
- Google: survey responses and other data written to your sheet are subject to Google's terms of service for Google Sheets.
- Discord: the bot operates within Discord's platform and is subject to Discord's terms of service and privacy policy.
- Sentry: when the bot encounters an unexpected error, it sends a crash report to Sentry (a third-party error tracking service) so the bug can be investigated and fixed. These reports include the Python traceback and a release version number. They do not include Discord user IDs, member names, or the contents of your Google Sheet; Sentry is configured with
send_default_pii=False. Sentry's privacy policy applies to the reports it stores.
Third-Party Data Sources
Some features in the bot are powered by publicly available Last War reference information sourced from third-party community sites. These sources provide server and task information only. No alliance data, no member data, and nothing about your server is sent to them. The bot reads from these sources on a periodic schedule and caches the results.
Payments and Subscriptions
Premium subscriptions are processed through Discord's App Subscriptions system. We do not receive, collect, or store your payment information; Discord handles all billing. Refunds and billing questions are handled through Discord per their refund policy.
Data Retention
Server configuration data and the install-metadata record described above are retained for as long as your server uses the bot. Both are deleted automatically 30 days after the bot is removed from your server, and can be deleted sooner on request.
Member data in your Google Sheet is entirely under your control. We do not retain copies of it.
We keep the information described above for as long as it is needed to provide the features it supports.
Your Rights
You have the right to:
- Request a copy of the configuration data and install-metadata record we hold for your server
- Request a copy of the information we hold about you personally
- Request deletion of your server's configuration data and install-metadata record
- Revoke the bot's access to your Google Sheet at any time
To make any of these requests, open a data removal request on the issue tracker, or email us at lwalliancehelper@gmail.com if you would rather not post publicly. Issues are public; please don't include any other personal information in the issue itself.
Children's Privacy
LW Alliance Helper is not intended for children. Discord requires everyone using it to be at least 13, or older where local law sets a higher minimum, and we do not knowingly collect information from anyone below that age. If you believe a child has given us their information, contact us and we will remove it.
Changes to This Policy
We may update this policy from time to time. The date at the top of this page reflects when it was last updated. Continued use of LW Alliance Helper after changes are made constitutes acceptance of the updated policy.