Most small teams don't need a developer to start texting from their tools. They need one HTTP request, placed in the right spot. Someone fills out a Wix form, buys from a store or lands in a CRM stage, and a text goes out within seconds. Zapier, Wix and most no-code tools can fire that request. The hard part is rarely the plumbing. It's sending to people who never agreed to get texts, and paying for segments you didn't mean to send.

This post covers the request itself, three patterns that work without code, the cost math, and the consent mistakes we see most often in no-code setups. One clarification first, because the slug mentions WhatsApp: Ready sends SMS, MMS and iMessage (our iMessage line). It does not send WhatsApp. If WhatsApp is your main channel, you need a WhatsApp Business provider, and the patterns below will still help you think through triggers and consent.

The one request every no-code tool needs to make

Every pattern in this post ends in the same call to the Ready API:

POST https://api.tryready.com/v1/messages
X-API-Key: <your key>
Idempotency-Key: <any UUID>
Content-Type: application/json

{"to": "+12125550199", "body": "Thanks for booking with us. Reply STOP to opt out.", "consent_attested": true}

What each piece does:

  • to takes E.164 format. A 10-digit US number is treated as +1, which is useful when a form collects "(212) 555-0199" style input. Still, strip the punctuation in a formatter step before you send.
  • consent_attested is your promise that this person agreed to receive texts. Treat it as a legal statement, not a box you tick to make the request work. More on this below.
  • Idempotency-Key stops duplicates. No-code tools replay steps when a run errors, and people re-run zaps by hand. If the key is the same as the first attempt, the text only goes out once. Use something stable from the trigger, such as the form submission ID, not a fresh random value per attempt.
  • Optional fields: from picks one of your numbers and media_url attaches a picture (MMS). Leave from out and Ready picks the number: the one this contact already texts with, otherwise your number closest to their area code.

To send the same text to a list, use POST /v1/messages/bulk with an array in to. Each call takes at most 100 recipients, so a no-code loop has to batch. Full reference: messages, bulk messages and the quickstart.

Pattern 1: Zapier with Webhooks by Zapier

Zapier is the most common glue for small teams, and the setup takes about ten minutes:

  1. Trigger: your app's event, such as a new Typeform response, new Shopify order or new HubSpot contact.
  2. Filter: only continue if the SMS consent field is true. Skipping this step is the number one mistake.
  3. Formatter: normalize the phone number to digits or E.164.
  4. Action: Ready → Send SMS. Add the Ready app in Zapier, sign in, and map the phone number and message. Map the trigger item's ID into the Trigger Item ID (stops double texts) field so a replayed step can't text twice.

If you'd rather call the API directly, use Webhooks by Zapier → Custom Request: set the method to POST, the URL to https://api.tryready.com/v1/messages, and add the headers and JSON body shown above.

Map the trigger's record ID into Trigger Item ID (stops double texts). Keep the message body short, and put dynamic fields like first name or order number in deliberately. A long product name pulled from a store can push a 150-character text into two segments without you noticing.

Zapier charges per task on its own plans, so each send is a Zapier task plus the Ready segment cost. At low volume that's fine. If you're sending thousands of texts a day, a direct webhook (pattern 3) usually costs less. We cover the Airtable and Brevo variants of this setup in SMS automation with Airtable, Brevo and no-code tools. Form-builder specifics for Typeform, Jotform and Calendly are in connect SMS to Mailchimp, Typeform, Calendly and Jotform.

Pattern 2: Wix forms and bookings

You have two routes from Wix.

Route A: Wix to Zapier to Ready. Wix form submissions and bookings can feed Zapier through Wix's integration. From there you build the same zap as pattern 1. This is the easiest option if nobody on the team writes code.

Route B: Velo backend code. If you're comfortable pasting a short snippet, Wix's Velo backend can call fetch against /v1/messages when a form submits. This removes the middle step and the per-task cost. Store your API key in Wix's secrets manager, never in front-end page code, where any visitor could read it.

Whichever route you pick, the Wix form needs its own SMS consent checkbox. It should be unchecked by default and separate from the "I agree to the terms" box. Use wording that names texting, the business, roughly how often you'll text, "Msg & data rates may apply," and "Reply STOP to opt out." Our 10DLC opt-in examples show language that carriers approve.

Pattern 3: plain webhooks from stores and CRMs

Many tools can POST to a URL directly, including Shopify Flow, CRM workflow builders, n8n and Make. That's a direct webhook, and it's the cleanest setup:

SetupMoving partsBest forWatch out for
Zapier + Ready appTrigger, filter, requestTeams with no code, low to mid volumePer-task cost; leave Trigger Item ID blank and a replayed step can text twice
Wix → ZapierWix, Zapier, ReadyWix sites with forms or bookingsThe consent checkbox on the Wix form
Wix Velo fetchWix, ReadyWix sites with someone who can paste codeAPI key exposure in front-end code
Direct webhook (Flow, n8n, Make)Source tool, ReadyHigher volume, fewer toolsThe 100-recipient bulk limit; batch your loops

Inbound traffic goes the other way. Replies, opt-outs and delivery updates come back through Ready's webhooks, and you can read them with GET /v1/messages and GET /v1/opt-outs. For webhook event details, use the docs rather than guessing field names. For a deeper look at the two-way side, see SMS webhooks, Zapier-style automation and CRM workflows. If you run on GoHighLevel, skip all of this: Ready installs natively with two-way sync per sub-account.

What it costs: worked examples

Ready's Standard rate is $0.0075/segment plus a $0.0045 carrier fee per segment. That all-in figure excludes the compliance surcharge. Scrubbing and landline validation are each $0.003 extra per segment when switched on, and both are off by default.

Example 1, assuming a 140-character booking confirmation with no emoji and 600 bookings a month:

  • The message fits in 1 GSM-7 segment (the limit is 160 characters).
  • 600 × $0.0075 = $5, plus 600 × $0.0045 in carrier fees.

Example 2, the same text with one emoji added:

  • An emoji drops the per-segment limit to 70 characters (67 per part when split), so 140 characters becomes 3 segments.
  • 600 × 3 × $0.0075 = $14, plus 1,800 × $0.0045.

That emoji costs 3x the price of the plain version. Replies are billed like sent texts, so if 30% of those bookings reply once, add 180 more segments. Ready swaps curly quotes, long dashes and ellipses for plain characters before sending, so text pasted from Google Docs won't inflate your count. Emoji will.

On price, raw CPaaS APIs like Twilio (~$0.0083/segment) and GoHighLevel's LeadConnector (~$0.0083/message) cost less per message. What Ready includes is self-serve 10DLC registration, opt-out handling, quiet hours and an inbox. If you only need a pipe and have a developer to handle compliance, a raw API is a reasonable choice.

The consent pitfalls no-code makes easy

No-code makes sending fast, and that includes sending to people you shouldn't. The common failures:

  • Texting every form submitter. A phone number on a "request a quote" form is not consent to texts unless the form says so. Filter on the consent field before the send step.
  • Hardcoding consent_attested: true. It works technically. But it's your statement, and Ready records it per send (who sent, to how many and when) as an audit trail. Ready does not store each contact's opt-in time, wording or page URL. Your form tool or CRM has to keep that record. Make sure it does. (A contact who signs up on a Ready-hosted opt-in page is the exception: Ready stores that sign-up, with the time, IP address and exact wording, and support@tryready.com can send you a copy.)
  • Importing old lists into a bulk zap. Cold contact belongs on the phone and in the mail. SMS is for people who opted in or replied.
  • Ignoring STOP downstream. Ready refuses sends to opted-out and numbers on your Ban list up front and doesn't charge for them. Your CRM may still show those people as active, though, so sync GET /v1/opt-outs back to it. That list holds only this account's opted-out contacts, so check GET /v1/opt-outs/:phone before another tool texts a number.
  • Late-night triggers. A form submitted at 11 PM fires the zap right away. If the recipient's permitted hours start within about 6 hours, Ready holds the text and charges it when it sends; otherwise the API answers 409 QUIET_HOURS_BLOCK, so add a Zapier Delay Until step to business hours for late submissions. Campaigns, drip campaigns and automations wait up to 24 hours for the window.
  • Advocacy or fundraising zaps. If you text donation appeals, petitions or voter messages, email support@tryready.com before the first send and wait for our reply. Signing up and registering is not enough for these.

None of this makes you immune to TCPA claims. Compliance stays with the sender. These steps reduce your risk.

Registration, then turn the zap on

Carriers filter unregistered traffic, so register before you automate at scale. On Ready, the first 20 texts are free one-to-one sends, so use them to test your zap before you register. The free texts end once you pay for registration. An unregistered account can send up to 500 texts a month at its normal rate, and to send any text you need a card and a number ($2 a month, the first month charged when you get it).

Registration costs $25 at submit, which is the first month. After that it's $25/mo for registration + $2 per number. Most approvals take 2 to 7 days.

The short version

Pick the lightest setup that fits your volume: Zapier for simplicity, Velo or direct webhooks once task costs add up. Map a stable Trigger Item ID, keep messages to one GSM-7 segment, and never let a send step run without a consent filter in front of it. If you want to try it, create an account, point a test zap at /v1/messages, and send your free texts to your own phone first.