No subscription · No monthly minimum

Pay only for messages that actually arrive.

SMS, MMS and email, billed per segment at the carrier's own count. If a message doesn't arrive, the charge comes back. Every credit and every charge sits on a ledger you can read line by line.

Get started See pricing

$10 minimum to add credit. Credits never expire.

What one campaign actually cost

Estimate held2,400 recipients, reserved before sending −$36.00
Hold releasedat completion, in full +$36.00
Sent2,317 messages, priced at the segments the carrier reported −$34.76
Suppressed83 recipients had opted out. Never sent, never billed $0.00
Refunded11 messages the carrier could not deliver +$0.17
Charged −$34.59

That's the shape of a real bill. Most platforms charge the estimate and keep the difference. We charge what the carrier charged for, and give back what didn't land.

Pricing

One rate per channel. No tiers, no feature gates, no monthly floor. SMS is billed per segment, so a long message costs more than a short one, and the composer tells you before you send rather than after.

ChannelBilledRate
SMSper segment$0.0150
MMSper message$0.0450
Emailper message$0.0030

Sending more than 100,000 a month? Rates come down. Tell us your volume.

What it does today

Listed honestly, and everything here works today and isn't in your account yet.

SMS, MMS and email

One contact list, three channels. Send now or schedule it, with consent checked per channel at the moment of sending.

Contacts and lists

Import by CSV. Numbers are normalized and validated on the way in, so a malformed number is caught at import rather than at send.

Delivery receipts

Carrier-level delivery status per message, not just "we handed it off". Failures are recorded with the carrier's own reason code.

Auditable billing

An append-only ledger. Every credit, hold, charge and refund is a permanent line item, and your balance is the sum of them.

Branded short links

Links on our own domain, not a shared public shortener. Shorter links mean fewer segments, which means a cheaper send.

Quiet hours

Set a window per account. A campaign scheduled inside it waits until the window opens, in your recipients' local time.

Segments that keep themselves current

Target by tag, by list, by whether somebody has been messaged or clicked recently. A segment is a question, answered fresh every time you use it, so it stays right without anybody maintaining it.

Click tracking

Per-recipient attribution on shortened links, reported against messages actually delivered rather than messages sent.

Templates

Save the messages you send repeatedly, with merge fields where the names go. Editing a template never changes a campaign already sent.

Replies

Everything people text back, threaded, with the whole conversation in one place. Reply from the same screen.

Images for MMS

Upload a photo and it is resized to fit what carriers accept, which is smaller than most people expect.

Reports and a cost calculator

Delivery, spend and clicks by date range, exportable. And a calculator that tells you what a message costs before you build a campaign around it.

Scheduling calendar

A month view of what is going out and when, which warns you when two campaigns are aimed at the same people on the same day.

Automation flows

Send this, wait three days, then send that to whoever didn't reply. Starts itself when somebody joins a list, gets a tag, or texts a word. Anybody who opts out part way through simply stops receiving the rest.

Consent is enforced, not suggested

The expensive mistake in messaging is sending to someone who asked you to stop. Wally is built so that's hard to do by accident.

Opt-outs are exact

STOP, END, CANCEL and the rest are matched exactly against the message. Someone who writes "please don't stop sending these" stays subscribed.

One suppression list

An opt-out is recorded against the phone number or email address, and every send path checks the same list. There's no second place for it to be missed.

Bounces suppress automatically

A hard bounce or a spam complaint adds the address to the suppression list without anyone having to notice.

Consent keeps its evidence

Each record stores when consent was given, through what, and what the proof was. That's what you need when someone asks.

These are tools, not legal advice. Messaging rules vary by state and change often; review your program with your own counsel. Our messaging compliance page covers what we do and don't do.

Safe to hand to an AI agent

Connect Claude, or anything else that speaks MCP, and let it send messages for you. Why that isn't reckless is worth saying plainly.

The rules are not in the prompt

Consent, opt-outs, quiet hours and credit are enforced in our database, on every send, from every source. An agent told to message everyone about a sale gets refused for everyone who opted out. It can't be talked around them, because it isn't being asked.

It can check before it acts

One tool exists only to answer "would this send be allowed, and if not why". It's free and instant, so a well behaved agent asks first rather than finding out by failing.

Keys are scoped

Give it permission to send and nothing else, or to read your contacts and never write. Revoke it in one click. Every call it makes is logged against the key that made it.

Retries don't double send

Automated callers time out and try again. Send an idempotency key and the retry returns the original result instead of a second text your customer receives and you pay for.

Add Wally to an MCP client
{
  "mcpServers": {
    "wally": {
      "url": "https://api.wallysolutions.com/mcp",
      "headers": { "Authorization": "Bearer wly_live_..." }
    }
  }
}

Rather write the code yourself? The REST API is described at openapi.json, and a key takes about a minute to create.

Questions

Including the ones with awkward answers.

How does pay-as-you-go actually work?
You add credit, minimum $10. Sending draws it down. When a campaign starts, an estimate is held so it can't run out of money halfway through; when it finishes, the hold is released and you're charged for what was really sent. Credits don't expire and there's no monthly fee, so an account that sends nothing costs nothing.
Why is SMS billed per segment rather than per message?
Carriers bill that way. A plain message up to 160 characters is one segment. Go over, or include a character outside the GSM alphabet, such as a curly quote or an emoji, and the whole message re-encodes and can cost three times as much. Hiding that behind a flat per-message price would mean charging everyone for the worst case. The composer shows the segment count as you type.
What happens when a message fails?
A message the carrier accepts and then fails to deliver is refunded to your balance automatically when the failure notice arrives, usually within minutes. A message blocked before sending, because the recipient opted out, is never charged at all. You'll see both as line items.
Do I need a developer?
Not for sending. Import a CSV, write a message, send it. There's an API if you want to trigger messages from your own systems, which does need a developer.
Can I bring my own phone number?
Yes, and for regular sending you should. US carriers require business messaging traffic to be registered, and registration is tied to a number and a brand. We handle it with you. Expect days, not minutes. That's the carriers' timeline, not ours.
Is there a free tier?
No. Accounts are free to open and cost nothing while idle, but sending requires credit. Free anonymous SMS is how a sending reputation gets destroyed by people who aren't your customers, and the cost of that lands on everyone else sending through the same numbers.
What are you not good at yet?
Reporting depth. You get delivery, spend and clicks by date range with a CSV export, which covers most questions, but there's no cohort analysis and no per-link revenue attribution. If you need to prove which text drove which sale, we're not the tool for that yet, and we'd rather say so than let you find out in month three.

Start with $10.

Open an account, add credit when you're ready to send, and stop whenever you like. There's nothing to cancel.

Get started