Privacy Policy for Bulk SMS Sender
Effective date: August 16, 2026
The short version
- Bulk SMS Sender sends through your own Twilio account. Your Twilio Account SID and Auth Token are encrypted at rest with AES-256-GCM under a key unique to your account, and are used only to call Twilio on your behalf. They are never shown back to you, logged, or shared.
- The text of your messages is not retained. Once a send completes the body is gone. The body of a scheduled message is stored only until that schedule runs or you cancel it, and is deleted at that point either way.
- We keep the metadata your spreadsheet needs to show results: the recipient number, the Twilio message SID and the delivery status.
- No analytics identifiers, no advertising trackers, no profiling, and we never sell or rent personal data.
- You are the sender of record for every message. Consent and opt-out obligations are yours; see section 9.
1. Introduction and scope
Innova Apps ("we," "our," or "us") publishes Bulk SMS Sender, an add-in for Microsoft Excel that sends and schedules SMS messages through your own Twilio account. This Privacy Policy explains what personal data we process when you use the add-in, the pages under innovaapps.ai/excel-sms/, and the account behind them.
This policy stands on its own. It is separate from our Terms of Service, which govern your use of the add-in.
For the purposes of the EU General Data Protection Regulation (GDPR), the data controller for the account data described below is:
Innova Apps Tove Maës vej 1, 1 TH 2500 ValbyDenmark
CVR: 45291154
support@innovaapps.ai
Innova Apps is not affiliated with, endorsed by, or sponsored by Twilio Inc. or Microsoft Corporation. "Twilio" is a trademark of Twilio Inc.; "Microsoft" and "Excel" are trademarks of the Microsoft group of companies.
2. Your Twilio credentials and your messages
This is the part of the add-in most people want to understand first, so we set it out in full.
The credentials you provide
To send anything, you give the add-in three values from your own Twilio account: the Account SID, the Auth Token, and a sender, which is either a phone number you own in that Twilio account or a Messaging Service SID (MG…). Nothing is sent to Twilio until the format of all three has been checked.
How they are stored
Your credentials are encrypted at rest with AES-256-GCM. Each stored record is sealed under its own randomly generated 256-bit data key, and that data key is itself wrapped with a master key held in Google Secret Manager. One compromised record therefore never yields another account's key material. The database rules make the location they are stored at unreadable and unwritable by every client: only the backend can unwrap them, and only in order to make the Twilio call you asked for. They are never displayed back to you, never written to logs, and never shared with anyone.
What we do with them
We use them exclusively to call the Twilio API on your behalf, for the sends, status lookups and setup checks that you request. We never relay, resell or mark up messages. Every message is created on your own Twilio account, and Twilio bills you directly at its own rates.
The text of your messages
The body of a message is passed to Twilio and then discarded. We do not retain it. The one exception is a scheduled send, where the body has to be kept until the schedule runs: it is stored for that purpose alone, and deleted the moment the schedule finishes. What remains of a completed schedule is the recipient numbers, the message SIDs and the per-row statuses, so that the results can still be written into your sheet.
The same is true of a cancelled schedule. A schedule you cancel before it fires never sends anything, and the cancellation drops its stored message text at that moment, exactly as a finished schedule does. Scheduled text is therefore kept only until the schedule runs or is cancelled, and is deleted at that point either way. What is left behind in both cases is the recipient numbers and the per-row outcome, never the words you wrote.
Duplicate suppression
Excel recalculates =SMS.SEND cells on workbook events, so the backend guards against texting the same person twice. To do that it keeps a one-way SHA-256 hash of the recipient number and the message text together, alongside the resulting message SID and a timestamp. A hash cannot be reversed into the message text. These records are tied to your account, are used only to recognise an identical send inside a 60-second window, and are removed when your account is deleted.
3. What we collect
You need a free Innova Apps add-in account (email and password) to sign in and to carry your plan status. The table below is everything we hold on our own systems.
| What we store | Why we store it | Where it is stored |
|---|---|---|
| Your account email address | To identify your account, sign you in, and reach you about your account. | Firebase Authentication |
| A hashed password | To sign you in. We do not hold your password in readable form. | Firebase Authentication |
| An account document: a copy of your email, your plan (Free or Pro) and the date the account was created | To carry your plan into the add-in when you sign in, and to tie your usage counters and any billing details to your account. | Cloud Firestore |
| Your Twilio Account SID, Auth Token and sender, encrypted | To call the Twilio API on your behalf for the sends, status lookups and setup checks you request. See section 2. | Cloud Firestore, encrypted; master key in Google Secret Manager |
| Send metadata, per message: the recipient phone number, the Twilio message SID, the delivery status and the time | So your spreadsheet can show per-row results and so =SMS.STATUS can look a message up again. The message text is not part of this record. |
Cloud Firestore |
| Scheduled sends: the recipient numbers, the send time, the target sheet and cell, and the message text until the schedule runs or is cancelled | So a schedule can run from the cloud with Excel closed. The message text is deleted when the schedule finishes, and cancelling a schedule deletes it in the same way; the numbers, SIDs and statuses remain so the results can be written into your sheet. See section 2. | Cloud Firestore |
| A monthly usage counter | To enforce the free tier of 25 messages per calendar month. | Cloud Firestore |
| A duplicate-suppression record: a one-way hash of recipient plus message text, the message SID and a timestamp | To stop an Excel recalculation from texting the same person twice inside 60 seconds. The hash cannot be reversed into the message text. | Cloud Firestore |
| For Pro subscribers: a Stripe customer id and the subscription status | To know whether your Pro subscription is active and to let you manage billing. Held in the account document above. | Cloud Firestore |
4. What we never collect
- The text of your messages after they are sent. See section 2.
- The contents of your spreadsheets beyond the cells you explicitly send. The add-in reads the range you have selected, at the moment you click send, and writes the per-row statuses back next to it. It does not read or transmit the rest of your workbook.
- Inbound SMS and replies. The add-in is send-only by design. Replies, STOP messages and any other inbound traffic arrive on your own Twilio number and stay in your Twilio account; we never see them.
- Your card details. If you subscribe to Pro, payment details are entered with Stripe and never reach Innova Apps servers.
- Analytics identifiers and advertising trackers. There are none in the add-in or on these pages. We do not build advertising profiles, we do not sell or rent your data, and we do not use your data to train AI models.
5. How we use your information
- To sign you in to the add-in and keep you signed in.
- To send, schedule and look up the status of the messages you ask for, using your own Twilio credentials.
- To write per-row results back into your sheet, which is what the send metadata exists for.
- To enforce the free tier of 25 messages per calendar month, and to stop an identical send repeating inside 60 seconds.
- To manage a Pro subscription: to know whether it is active and to open the billing portal from "Manage billing" in the task pane.
- To answer you when you write to support@innovaapps.ai.
Under the GDPR, we process your account email, hashed password, encrypted Twilio credentials, send metadata and usage counters to perform the agreement between you and us (Article 6(1)(b)), and we process Pro billing identifiers to perform that agreement and to meet our accounting obligations (Articles 6(1)(b) and 6(1)(c)). We do not use your data for advertising or profiling.
6. Where data is stored
Everything described in section 3 is hosted on Google Cloud, using Firebase Authentication, Cloud Firestore, Cloud Functions and Google Secret Manager, in the United States. If you are in the EU or EEA, this means your account email, hashed password, encrypted Twilio credentials, send metadata, usage counters and any Pro billing identifiers are transferred to and stored in the United States.
The messages themselves are processed by Twilio, on your own Twilio account, under your own agreement with Twilio and in whatever regions that account uses. That relationship is between you and Twilio.
7. Sub-processors
Two service providers process data on our behalf so the add-in can work:
- Google (Firebase and Google Cloud): hosting for the add-in, Firebase Authentication for your account, Cloud Firestore for credentials, send metadata, schedules and usage counters, Cloud Functions for the backend, and Secret Manager for the encryption master key. These pages also load their typeface from Google Fonts, so your browser makes a request to Google when you open them; that request carries your IP address and nothing else, and it sets no cookie and no analytics identifier. Firebase privacy information
- Stripe: subscription billing for the Pro plan, on Innova Apps' own Stripe account. Stripe collects your payment details directly; card details never reach Innova Apps servers. Stripe privacy policy
Twilio is not our sub-processor. The Twilio account is yours. We act on it with the credentials you give us, at your instruction, and Twilio's handling of your messages and your recipients' numbers is governed by your own agreement with Twilio. Twilio privacy notice
We do not share, sell or rent your data to advertisers, ad networks, data brokers, information resellers, or any other third party for their own purposes.
8. Retention and deletion
- Message text. Not retained after a send completes. Scheduled message text is deleted when the schedule finishes running, and cancelling a schedule deletes it the moment you cancel.
- Send metadata, schedules, usage counters and duplicate-suppression records. Retained while your account is active, so that your sheets can still resolve statuses.
- Your encrypted Twilio credentials. Retained until you replace them or your account is deleted.
- Deleting your account. Email support@innovaapps.ai from the address the account is registered to. We delete the account, the encrypted Twilio credentials and all associated metadata within 30 days.
- Revoking access yourself, immediately. You do not have to wait for us: roll the Auth Token in the Twilio Console and the copy we hold stops working the moment you do.
9. Your responsibilities as the sender
Every message is created on your own Twilio account, which makes you the sender of record. Obtaining recipient consent, honouring opt-outs, and complying with the law in your jurisdiction and in your recipients' jurisdictions (the TCPA and CTIA guidelines in the United States, the GDPR and ePrivacy rules in the EU and EEA, and the equivalent rules elsewhere) are your obligations, not ours. In data-protection terms, you are the controller of the recipient numbers and message content you choose to send.
Bulk SMS Sender is send-only. It does not handle replies, STOP keywords, opt-out lists or contact management. Where carriers require opt-out handling, it is performed by Twilio on your own number. Registering United States long-code traffic for A2P 10DLC is likewise done in your Twilio account.
10. Your rights
If you are in the EU or EEA, the GDPR gives you the following rights over the personal data we hold about you:
- Access: ask what we hold about you and receive a copy.
- Correction: have inaccurate data corrected.
- Erasure: have your data deleted; see section 8.
- Portability: receive your data in a structured, commonly used, machine-readable format.
- Objection and restriction: object to, or ask us to restrict, our processing of your data.
Write to support@innovaapps.ai to exercise any of these rights. You also have the right to complain to a supervisory authority. In Denmark, where Innova Apps is established, that authority is the Danish Data Protection Agency (Datatilsynet).
Requests from the people you message about the numbers or content you send should be directed to you, as the sender of record. Where we hold send metadata on your behalf we will help you respond to such a request.
11. Children
Bulk SMS Sender is a business tool for people sending messages from their own Twilio account. It is not directed at children under 16, and we do not knowingly collect personal data from anyone under 16. If you believe a child has created an account, write to support@innovaapps.ai and we will delete it.
12. Changes to this policy
If we change this policy, we publish the updated version at innovaapps.ai/excel-sms/privacy with a new effective date at the top. Material changes to how we handle your data will also be communicated to the email address on your account.
13. Contact
For any question about this Privacy Policy, about the data we hold, or to request deletion:
Innova Apps Tove Maës vej 1, 1 TH 2500 ValbyDenmark
CVR: 45291154
Email: support@innovaapps.ai
Support: innovaapps.ai/excel-sms/support