You've got a Zap that should text someone the second something happens: a lead submits a form, an invoice goes unpaid, an appointment gets booked. You open the action panel, see "SMS by Zapier," and it looks like the obvious choice. Then you find out it won't send to T-Mobile numbers, or your industry can't get a Twilio campaign approved in the first place, and the automation stalls before it ever sends a message. Here's what's actually happening under that button, and how to wire SMS into a Zap without routing through Twilio at all.
Why SMS by Zapier Isn't a Neutral Option
SMS by Zapier isn't Zapier's own messaging network. It's a built-in wrapper around Twilio, and it inherits Twilio's rules. When T-Mobile introduced new A2P 10DLC non-compliance fines for SMS traffic in February 2024, Zapier's response was to drop T-Mobile support from the feature entirely: as of February 16, 2024, SMS by Zapier no longer sends to numbers on the T-Mobile network, regardless of what the message says.
That's the visible symptom. The underlying cause is the same one that blocks payday lenders, debt collectors, cannabis retailers, MLMs, and a long list of other legal businesses from Twilio outright. A2P 10DLC requires a registered Brand and an approved Campaign through The Campaign Registry before a message can even attempt delivery, and carriers filter or reject traffic from campaigns they judge to fall in a restricted category. SMS by Zapier just puts a friendlier interface on top of that same gate.
The Bridge Is a Generic Webhook, Not a Dedicated App
Android Texter doesn't have a listed app in Zapier's directory, and it doesn't need one. Every message it sends goes out through a REST API call to a real Android phone on a real consumer line, so the phone, not a Twilio campaign, is the sender. You connect that API to Zapier with the Webhooks by Zapier built-in action, the same generic tool people use to hit any HTTP endpoint that doesn't have a native integration.
Two things to have ready before you build the Zap:
- An Android Texter API key, prefixed
atx_, generated at /dashboard/settings/api-keys - A paired Android device, added at /dashboard/devices, since every outbound message needs a real phone to send from
Setting Up the Outbound Zap
Pick whatever trigger starts the sequence: a new Typeform response, a HubSpot deal-stage change, a Stripe failed charge, whatever event should fire the text. For the action step, choose Webhooks by Zapier and select POST, then configure it as:
- URL:
https://androidtexter.com/api/v1/messages/send - Payload Type: JSON
- Headers:
X-API-Keyset to youratx_key - Data: the recipient's phone number and message body, mapped from fields earlier in the Zap
That single call queues the send through your linked device. If you're running multiple phones (Android Texter supports pairing several to one account so outbound volume spreads across lines instead of tripping one number's velocity filter), add a device_id field to target a specific phone, or leave it out to auto-route to whichever device is online. The full request and response schema is documented at /api/openapi.json, with an interactive version at /api/swagger if you want to test a call before wiring it into the Zap.
Two fields worth knowing about while you're in there: scheduled_at takes an RFC 3339 timestamp if the Zap should queue a message for later instead of sending immediately, and the send endpoint accepts up to 500 recipients in one call for broadcasts. Outbound is rate-limited to 10 requests per second with a burst of 20, more headroom than a Zap triggered by individual events will ever use.
Example: A Payment-Due Reminder Zap
Say a loan servicing tool, a booking system, or a spreadsheet is the source of truth for who owes what and when. The trigger is whatever that tool offers: a new row, a status change, a scheduled digest. The action is the same POST to /api/v1/messages/send described above, with the phone number and a message body built from the trigger's fields, something like "Hi {{first_name}}, your payment of {{amount}} is due {{due_date}}. Reply STOP to opt out." Map scheduled_at to the due date minus a day if reminders should go out ahead of time instead of the moment the row updates. Because the message leaves from a real phone number instead of a shared short code, it lands in the same thread as any other text the recipient has ever gotten from that number, which is part of why P2P delivery rates hold up where A2P campaigns for the same content get throttled or rejected outright.
Getting Replies Back Into Zapier
Sending is half the automation. If a reply should trigger the next step (route it to a rep, update a CRM field, post to Slack) Zapier needs to hear about inbound texts too, and polling on a timer isn't the right tool for that.
Create a second Zap with its trigger set to Catch Hook under Webhooks by Zapier. Zapier hands you a unique URL in the form https://hooks.zapier.com/hooks/catch/xxxxx/yyyyy/. Take that URL and register it with Android Texter by calling POST /api/v1/webhooks, which returns a signing secret you can use to verify each delivery is genuinely from Android Texter, via HMAC, rather than trusting the payload blind. Subscribe to the message.received event and every inbound reply lands in that Zap the moment it hits the phone, with message.sent available too if you want send-side confirmation in the same automation.
What This Does, and Doesn't, Change
Routing a Zap through Android Texter instead of SMS by Zapier means you're not going through a Twilio A2P 10DLC campaign, so there's no Brand or Campaign to get rejected, no content category to be filtered against, and no T-Mobile non-compliance dispute sitting between your Zap and the recipient's phone. That's a real difference for anyone running SMS from an industry the aggregators won't approve.
It does not touch the Telephone Consumer Protection Act, which governs consent and applies to the message content and the recipient relationship, not the pipe it travels through. If your Zap fires marketing texts, you still need consent on file before the trigger event happens, and you still need to honor STOP, UNSUBSCRIBE, CANCEL, END, and QUIT the moment they arrive, automated Zap or not. Routing through a phone instead of a carrier campaign doesn't change who's responsible for that.
The One Real Catch: Zapier's Own Plan Limits
Be honest with yourself about this before you build it: Webhooks by Zapier is only available on Zapier's Professional, Team, and Enterprise plans, not the free tier. On a free Zapier account, the outbound POST step described above isn't an option until you upgrade, and that's a Zapier billing decision, not an Android Texter one. If that's a dealbreaker, tools like Make or n8n offer equivalent webhook actions on cheaper tiers, and the underlying API call to Android Texter is identical either way.
Frequently Asked Questions
Does Android Texter have a dedicated Zapier app?
No. There's no listed integration in Zapier's app directory. You connect through the generic Webhooks by Zapier action, sending a standard POST request to the Android Texter REST API. Setup takes about the same number of clicks as a native app would: one action step with a URL, a header, and a JSON body.
Will texts sent this way still reach T-Mobile recipients?
Yes. The T-Mobile restriction on SMS by Zapier is specific to that Twilio-backed feature, not to T-Mobile SMS in general. Android Texter routes through a real phone on a real carrier line, the same way any personal text does, so it isn't subject to the A2P non-compliance rule that got SMS by Zapier's T-Mobile support pulled.
Do I need to register a 10DLC campaign to use this?
No. Messages route as person-to-person SMS from the paired Android device, which sits outside The Campaign Registry's A2P system entirely. There's no Brand or Campaign to submit and no carrier content-category approval to wait on.
Can a Zap fire off an incoming text reply?
Yes, using a Catch Hook trigger Zap and registering its URL as an Android Texter webhook subscribed to message.received. Polling the API on a timer works too, but a webhook fires the moment the reply lands instead of on the next poll interval.
What if I'm on Zapier's free plan?
Webhooks by Zapier requires a paid Zapier plan. If upgrading isn't an option, Make and n8n both offer comparable webhook actions on their lower tiers, and the Android Texter API call itself doesn't change between tools.
If your Zap has stalled at the SMS step because Twilio won't approve your industry, or because a chunk of your list went untextable over a carrier dispute that has nothing to do with your message content, the fix isn't a better SMS app inside Zapier. It's routing that step through a phone number that was never inside the A2P system to begin with. Android Texter gives you the API key and webhook endpoints described above; the rest of your Zap doesn't change.
