Quickstart
Overview Setup test Connect Twilio Common issues Limits Billing Data and deletion Docs Quickstart

Help for Bulk SMS Sender

Everything you need to unblock yourself with the add-in that sends and schedules SMS from Microsoft Excel through your own Twilio account: how to reach us, the one button that diagnoses most problems, the exact messages the add-in shows and what each one means, plus limits, billing, data and deletion.

How to get help

Support is by email. Write to us and we answer, normally within one business day.

Email support

Questions, bug reports and account requests, answered normally within one business day.

Email support@innovaapps.ai

Read first

The quickstart walks through the whole setup; the documentation covers every function, column and limit.

Open the quickstart

What to include in a report

Four details let us answer in one reply instead of three:

Never email us your Twilio Auth Token

We never need it to help you, and no support request requires it. The add-in already holds your credentials encrypted; if you think a token has been exposed, roll it in the Twilio Console and paste the new one into the task pane.

Try this first: "Test my Twilio setup"

Most problems are Twilio configuration, and the task pane can name the exact one in a few seconds. Open the task pane, enter your own mobile number in E.164 format (for example +4520304050) so the test message reaches you, and choose "Test my Twilio setup." Four checks run in order and stop at the first failure, so you get one thing to fix rather than a wall of red:

  1. Credentials. Asks Twilio whether it recognises your Account SID and Auth Token, and reports your Twilio account's friendly name when it does.
  2. Account status. Confirms the Twilio account is active. A suspended or closed account cannot send, whatever else is configured.
  3. Sender number. Confirms the From number is a number that Twilio account actually owns, and lists numbers it does own when it is not. This check passes automatically when your sender is a Messaging Service SID (MG…), because Twilio picks the number for you.
  4. Test send. Sends a real SMS to the number you entered and reports the message SID. If Twilio refuses, you get its exact error code and message.

Test sends are onboarding, not campaign traffic: they are not metered and do not count against the free tier.

Whatever the first failure says, the matching fix is in Common issues below.

Connecting your Twilio account

Bulk SMS Sender sends through your own Twilio account. You paste three values once. We never relay, resell or mark up messages: every message is created on your Twilio account, and Twilio bills you directly at its own rates.

  1. Sign in to the Twilio Console. Your Account SID and Auth Token are on the dashboard, in the Account Info panel. The Auth Token is hidden behind a "show" toggle.
  2. Copy the Account SID. It starts with AC followed by 32 hexadecimal characters.
  3. Copy the Auth Token, all 32 characters of it.
  4. Choose your sender: a phone number in E.164 form that you own in that same Twilio account (Phone Numbers → Manage → Active numbers), or a Messaging Service SID starting with MG.
  5. Paste all three into the task pane and save. The format is checked before anything is sent to Twilio; on success the pane says "Credentials saved (encrypted)" and clears the token field.
  6. Run "Test my Twilio setup."

Your 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 the Twilio API on your behalf. They are never displayed back to you, never written to logs, and never shared. The full detail is in the privacy policy.

Common issues

The messages the add-in actually shows, and what to do about each one.

Credentials and account

"Account SID must start with "AC" followed by 32 hex characters"

The format is checked when you save, before Twilio is contacted at all.

Fix: copy the Account SID from the Twilio Console dashboard (Account Info panel). An API Key SID (SK…) or a Messaging Service SID (MG…) does not belong in this field: the Messaging Service SID goes in the From field instead.

"Auth token looks too short"

Only part of the token was copied, or the field still holds a placeholder.

Fix: reveal the token behind the "show" toggle in the Twilio Console and copy all 32 characters.

"From must be an E.164 phone number … or a Messaging Service SID (MG…)"

The sender field takes one of exactly two things.

Fix: either a number in E.164 form (a +, the country code, then the national number, digits only, as in +15005550006) or a Messaging Service SID beginning MG.

Twilio error 20003: "Twilio rejected the Account SID or Auth Token (HTTP 401)"

Twilio does not accept the pair. Usually the token was truncated, or it was rolled in Twilio after you saved it.

Fix: copy both values again from the Twilio Console dashboard, Account Info panel, and save. Rolling the Auth Token in Twilio invalidates the old one immediately, so the stored copy has to be replaced. If it happens later, during a send, the batch stops and the remaining rows read skipped: Twilio credentials rejected instead of firing off calls that would all fail.

"Your Twilio account status is "suspended", but it must be "active" to send"

Credentials are fine; the Twilio account itself cannot send. This is normally billing.

Fix: open the Twilio Console and clear the billing or suspension notice there, then run the setup test again.

"Connect your Twilio account first"

No credentials are stored on the account yet, so there is nothing to send with. A bulk send stops immediately and the rows read skipped: Twilio not connected.

Fix: open the task pane and enter your Account SID, Auth Token and From number, as in Connecting your Twilio account.

Sender number

"This Twilio account does not own +1555…"

The From number is not on the account the credentials belong to. The check lists up to three numbers the account does own, which usually makes the mistake obvious.

Fix: use a number you bought or verified in that same Twilio account (Phone Numbers → Manage → Active numbers), buy the number you want, or switch to a Messaging Service SID starting with MG.

Twilio test credentials do not complete the setup test

Twilio's test credentials and magic numbers such as +15005550006 exercise the request path without sending anything, so the sender-ownership check and the live test send both fail with them.

Fix: finish setup with your live Account SID and Auth Token. That is the only combination the four checks can pass end to end.

Delivery

Twilio error 21608: "The number is unverified. Trial accounts may only send to verified numbers."

Twilio trial accounts can only text numbers you have verified in the Twilio Console. This is Twilio's restriction, not ours.

Fix: verify the recipient in the Twilio Console, or upgrade the Twilio account so the restriction is lifted.

Twilio error 21610: "The recipient has unsubscribed."

That number replied STOP to your Twilio number, so Twilio blocks further messages to it from you. Bulk SMS Sender is send-only and does not manage opt-outs; the suppression lives on your Twilio number, where carriers require it.

Fix: remove the number from your list. Do not attempt to message it again unless the recipient opts back in through Twilio.

Twilio error 30003: unreachable destination handset

Twilio accepted the message and the carrier could not deliver it: the handset is off, out of coverage, or the number is not reachable. =SMS.STATUS reports it as undelivered (Twilio error 30003).

Fix: retry later, or check the number. Nothing on our side changes the outcome.

Messages stay on "queued"

This is usually not a stuck message. The status written next to each row is the status Twilio gave the message at the moment it was created, which is normally queued or accepted. Nothing polls afterwards, so the cell does not change on its own.

Fix: to see where a message ended up, put =SMS.STATUS(sid) next to it and recalculate. That performs a live lookup against your Twilio account and returns the current status: sent, delivered, undelivered, failed. The "Write statuses to sheet" button on a finished schedule writes the statuses recorded when that schedule ran; it does not re-query Twilio.

If messages genuinely stall in Twilio, the usual cause on US long-code traffic is missing A2P 10DLC registration, since carriers filter unregistered traffic. Register your brand and campaign in the Twilio Console.

Your selection and your rows

"Select at least two columns: phone numbers in the first, message text in the second."

The single most common mistake. The add-in reads column 1 of your selection as the phone number and column 2 as the message text. One row is one recipient, and any further columns are ignored.

Fix: select both columns before sending, for example A2:B50.

""20304050" is missing its country code. Use E.164 like +4520304050."

The add-in trims the cell, strips spaces, hyphens, brackets and dots, and turns a leading 00 into +, but it never guesses a country code, on purpose. A number stored as an Excel number loses its leading + and lands here too.

Fix: write numbers in E.164: +45 20 30 40 50, 0045-2030-4050 and +1 (500) 555-0006 are all accepted. Format the phone column as Text so Excel keeps the +.

""+45203" is not a valid phone number."

The value starts with + but does not match E.164: a plus, a non-zero first digit, and 7 to 15 digits in total.

Fix: check the number against that shape. Bad rows are flagged, never silently dropped. Each one gets its reason written into the sheet as skipped: <reason>.

"First row looks like a header and was skipped."

Informational, not an error. Row 1 is skipped only when the selection has more than one row and the first cell contains a letter and is not a phone number ("Phone", "Number", and so on). A malformed number such as 20304050 still counts as data and surfaces as a row error rather than vanishing.

Fix: nothing, unless the first row really was a recipient. In that case start the selection one row higher, or remove the letters from the cell.

"Could not read the selection. Click a range in the sheet first."

The add-in has no range to work with, usually because focus is in the task pane rather than the grid.

Fix: click into the sheet, select your two columns, then go back to the task pane.

"Nothing sendable in this selection."

Every row in the range is empty or flagged. Whole-column selections often land here: rows with both cells blank are treated as empty and are excluded from the list and from the status write-back.

Fix: select the rows that actually hold data, and check the problem rows the preview lists.

A row says duplicate of SM…

Deliberate. The same recipient with the same message text inside a 60-second window returns the original message SID instead of texting that person twice. Twilio is not called, no second message goes out, and your quota is not charged. It exists because Excel recalculates cells on workbook events.

Fix: nothing, if the row really was a repeat. If you meant to send twice, wait out the 60 seconds or change the text.

Every remaining row says skipped: free limit reached

The free tier is 25 messages per calendar month. When a row trips the limit, the batch stops there rather than firing off calls that would all fail, and the rest of the rows are marked skipped. The same abort applies to skipped: Twilio not connected and skipped: Twilio credentials rejected.

Fix: upgrade from the Account section of the task pane, or wait for the next month. Nothing was sent for the skipped rows, so you can re-run them once the cap is lifted.

The statuses are not in the column I expected

Statuses are written into the column immediately to the right of the whole selection, on the same rows and the same sheet. Select A2:C50 and the statuses land in D, not C. Blank rows and a skipped header row get no status cell at all.

Fix: keep the column to the right of your selection free, and select only the two columns you need.

"Done: N sent, but writing statuses to the sheet failed."

The messages went out; only the write-back failed. A protected sheet or a locked workbook is the usual reason.

Fix: unprotect the sheet, then send again only if you still need the statuses. Re-sending really does send a second message to every row outside the 60-second duplicate window. The add-in keeps no send log you can re-read, so the safer route is to unprotect the sheet first and look the messages up in your Twilio Console, where every SID and status is listed.

Custom functions

=SMS.SEND sends a real message every time the cell calculates

This is the behaviour of the function, not a bug. Excel recalculates on workbook events, and each calculation is a real, billable SMS. The 60-second duplicate window is a safeguard against recalculation storms, not a guarantee.

Fix: for anything bigger than a one-off, use the task pane bulk send or a scheduled send. If you do use the formula, paste the returned SIDs over the formulas as values once you have them.

"Sign in first: open the Bulk SMS Sender task pane (Home ribbon) and log in."

The custom functions and the task pane share one runtime and one session. Without a signed-in session the functions cannot call anything.

Fix: open the task pane from the Home ribbon, sign in, then recalculate.

""abc123" is not a Twilio message SID (SM… / MM…)." or "No message with SID SM… was found in your Twilio account."

=SMS.STATUS takes the SID that =SMS.SEND returned: SM or MM followed by 32 hexadecimal characters. The second message means the SID is well-formed but belongs to a different Twilio account, usually because the credentials were changed after the message was sent.

Fix: point the formula at the cell holding the SID, and check that the connected Twilio account is the one the message was sent from.

The cell shows #VALUE! with no explanation

The add-in writes a full error message into failed cells, but that needs a newer custom-functions runtime. Where Excel does not support it, the cell can only show #VALUE!. Long messages are also trimmed at 190 characters.

Fix: run the same send from the task pane, which always shows the message in full.

Scheduled sends

"Scheduled sends are a paid feature. Upgrade to schedule messages."

Scheduling is on the Pro plan. Immediate sends and both custom functions work on the free tier.

Fix: upgrade from the Account section of the task pane. See Billing and plans.

"Send time must be in the future." / "Send time must be within one year." / "A schedule can hold at most 500 messages." / "Nothing to schedule: the selected range has no rows."

The four rules a schedule has to satisfy before it is accepted.

Fix: pick a future time inside the next twelve months, and split anything over 500 rows into more than one schedule.

"Schedule is already processing and can no longer be canceled."

A schedule can be cancelled only while it is pending. Once the worker has claimed it, it runs.

Fix: none from the add-in. If a batch must be stopped mid-flight, the lever is on your side: suspend the sending number or the Messaging Service in the Twilio Console.

"Not sent: the sending window closed before this row was reached. Re-send these rows from the sheet."

The worker gives each run a bounded window so one very large schedule cannot block others. Rows it did not reach are marked with this text rather than being silently dropped.

Fix: re-send exactly those rows from the sheet. They were never sent, so there is no risk of duplicating them.

Signing in and the task pane

The task pane is blank or stuck loading

Restoring your session has an 8-second ceiling: if it cannot complete, the pane falls back to the sign-in form instead of hanging.

Fix: close and reopen the task pane. In Excel on the web, reload the browser tab. If it persists, tell us which browser and Excel build you are on.

Sign-in messages

"Wrong email or password." · "An account with that email already exists. Sign in instead." · "Password must be at least 6 characters." · "Too many attempts. Wait a minute and try again." · "Network error. Check your connection."

Fix: the wording matches the cause in each case. If you have forgotten your password, use "Forgot password?" in the task pane; a reset email goes to your account address.

Still stuck? Email support@innovaapps.ai with your Excel platform, where it happened, the exact message and any Twilio error code.

Limits and rules

The numbers behind the messages above, in one place.

How the add-in behaves at its edges.
Selection shape Column 1 is the phone number in E.164, column 2 is the message text, one row per recipient. Further columns are ignored.
Status column The column immediately to the right of the whole selection, same rows, same sheet.
Phone format E.164 only: a +, a non-zero first digit, 7 to 15 digits. Spaces, hyphens, brackets and dots are stripped; a leading 00 becomes +; the country code is never guessed.
Message length 1 to 1,600 characters, which is Twilio's concatenated-SMS ceiling.
Free tier 25 messages per calendar month, no card. Setup test sends are not counted.
Duplicate suppression The same recipient and the same text within 60 seconds returns the original message SID; no second message, no quota used.
Messages per schedule Up to 500. Split larger campaigns across several schedules.
Schedule horizon Any time in the future, up to one year out. Schedules fire from the cloud with Excel closed.
Direction Send only. No inbound SMS, no reply handling, no STOP or opt-out management, no contact list. Replies and opt-outs stay on your Twilio number.
Platforms Excel on Windows (Microsoft 365), Excel on Mac, and Excel on the web. Not Excel on mobile.

Billing and plans

The add-in is free to install, and there are two plans. Twilio's per-message charges are separate from either of them.

What each plan includes.
  Free Pro: $19 / month
Messages 25 per calendar month Unlimited, subject to fair use
Bulk send from a range Included Included
Scheduled sends Not included Included, up to 500 messages per schedule
Custom functions =SMS.SEND and =SMS.STATUS =SMS.SEND and =SMS.STATUS
Twilio setup test Included, not metered Included, not metered
Twilio message fees Billed by Twilio to you Billed by Twilio to you
Card required No Yes

What Twilio charges

Nothing in your subscription pays for message traffic. Every message is created on your own Twilio account, and Twilio bills you directly at its own per-message rates, which vary by destination country. We never relay, resell or mark up messages, so there is no gateway margin on top of what Twilio charges you.

How Pro is billed

Pro is billed through Stripe, on Innova Apps' own Stripe account, and not through Microsoft. Card details never reach Innova Apps servers.

Paid upgrades are still being switched on, so there is no instant checkout yet; the task pane says so if you try. When they are live, an upgrade starts from the Upgrade button in the task pane. If you need Pro before then, email support@innovaapps.ai.

Changing or cancelling

Open the task pane and choose "Manage billing" to update your payment details or cancel. You can cancel at any time; access to Pro continues to the end of the period you have already paid for, and the account then returns to Free. If you cannot reach the billing page, email support@innovaapps.ai from your account address and we will sort it out.

Your data and deletion

The short version: your Twilio credentials are encrypted, the text of your messages is not kept, and what remains is the metadata your sheet needs to show results.

What we hold

What we do not keep

Message text is not retained after a send completes. The text of a scheduled message is stored only until that schedule runs or is cancelled, and is deleted at that point either way. We never receive your inbound SMS or replies (those stay on your Twilio account), and we do not read your spreadsheet beyond the cells you explicitly select and send.

Where it lives

On Google Cloud (Firebase Authentication, Cloud Firestore, Cloud Functions) in the United States. Twilio processes the messages themselves under your own agreement with Twilio. The sub-processors are Google and Stripe; the full detail is in the privacy policy.

Deleting your account

Email support@innovaapps.ai from the address the account is registered to and ask for deletion. We delete the account, the encrypted Twilio credentials and all associated metadata within 30 days.

You can also cut access off immediately from your own side, without waiting for us: roll the Auth Token in the Twilio Console and the copy we hold stops working the moment you do.

Documentation and legal

The rest of the product's own pages, in one place.

Company information

Innova Apps
Tove Maës vej 1, 1 TH 2500 Valby
Denmark
CVR: 45291154
Email: support@innovaapps.ai

Bulk SMS Sender is coming soon to Microsoft AppSource and is not on the store yet. To ask about early access, email support@innovaapps.ai.