HomeAbout

About the system

Built around one idea:
your number, your rules.

Birsend sends WhatsApp messages from a line your customers already have saved. There is no business verification queue to join and no provider taking a fee per message — which changes what the software has to be careful about, and most of this page is about that.

Not the Business API

The usual way to message customers at scale is the WhatsApp Business API: an application, a separate sender identity, a template approval queue, and a fee for every message. It suits a company sending a million receipts.

Birsend drives the number you already own. Your customers see the line they have messaged before, replies land in the same thread as the campaign that started them, and nothing has to be approved before you can write it. What you give up is the volume ceiling of an industrial pipe — which is why the pacing, the sending hours and the daily caps in here are not decoration. They are what keeps a real number healthy.

Placeholder. Replace with the Overview screen.

Three pieces

Worth knowing because the middle one surprises people: the software that actually talks to WhatsApp is a separate service on a separate machine.

The panel

app.birsend.com

What your team works in. A single-page application that holds no credential a script could read — the session is an httpOnly cookie, so even an injected script cannot lift it.

The API

api.birsend.com

Where every decision is made. Campaigns, contacts, permissions, the sending rules and the record of what happened. Your own software talks to the same endpoints the panel does, under the same rules.

The WhatsApp service

a separate machine

The piece that holds your number’s session and puts messages on the wire. It runs on its own host, accepts requests only from us, and reports back over a signed webhook.

That separation is not decoration either. Because the sender runs on its own schedule against its own service, deploying the panel cannot interrupt a campaign that is mid-flight — and a campaign that is paused stays exactly where it stopped, with a record of everyone it had already reached.

The decisions that shaped it

Not features — forks in the road, each with a cheaper option on the other side. These are the ones you can see from the outside.

One gate, not one per screen

Sending hours, daily caps, the opt-in requirement, blocked contacts and your word filter are checked in a single place that every outbound path goes through — a campaign, somebody typing in the inbox, your own software, an AI agent. The alternative was a check on each screen, and the screen somebody forgot would be the one that sent at three in the morning.

Records outlive what they describe

The activity log copies the name of the person and the name of the thing onto each entry as they read at the time. A log that only stores references becomes a list of “somebody deleted #418” the moment the row is gone — and that entry is the one people come looking for.

Nothing destructive on the API

There is no DELETE on any public endpoint, and no way to create a campaign. Removing a contact takes their consent record out of sight; arming thousands of messages needs somebody who can see the audience count. Both are decisions rather than gaps, and both are stated on the API page.

An agent may narrow, never widen

The MCP tools let an AI agent pause a campaign that is going out. They do not let it resume one. Stopping something is safe to hand to a sentence; putting thousands of messages back in motion is not.

Consent is evidence, not a checkbox

Every consent change is filed with where it came from and when. “They never told us” and “they told us to stop” are stored as different facts, so somebody ticking a box again later cannot quietly undo a request to be left alone.

A missed hour is cancelled, not sent late

A campaign left too long past its time is cancelled automatically rather than delivered. Last Tuesday’s promotion arriving on Friday cannot be recalled, and it tells every recipient that nobody is watching.

Where the work happens

Six screens carry almost all of it. Everything else in the panel supports one of these.

Virtual Phone — what your customers see on their side, from the number they already have saved.
A campaign mid-send — stoppable, resumable, and nobody messaged twice.
Reports over any period, compared against the one before.
The activity log — who did what, and what it used to say.
Permissions — sixteen areas, each with “see it” and “change it”.
Safety — the rules, and every message they stopped.

What guards what

Everything on this list is something you can hold us to. There is nothing here about encryption at rest, no certification badge and no uptime figure — not because those do not matter, but because they have not been established, and an About page is exactly where an unearned claim gets checked.

  • The panel’s session is an httpOnly cookie rather than a token in browser storage, so a script cannot read it.
  • Machine keys cannot open the panel’s own endpoints. Three separate abilities — service, API, agent — mean one leaked key is one door.
  • An API or agent key can never exceed the permissions of the person who created it, and narrows automatically if they are demoted.
  • Only a hash of a key is stored. A key is shown once, and a lost one is replaced rather than recovered.
  • The WhatsApp service authenticates its reports with a signature over the raw body, keyed per number — a valid signature for one of your numbers cannot speak for another.
  • Your customers’ files are never on a public URL. Every download is checked against your workspace, and the address given to the WhatsApp service is signed, expiring and restricted to its own IP.
  • The activity log has no delete route anywhere, for anybody, including the workspace owner.

What it does not do yet

The list we would want if we were choosing a tool. Several of these were found while writing this website, which turns out to be a good way to audit a product.

Campaign messages are not personalised yet

A campaign body is sent exactly as written. The {first_name} style placeholders fill on automatic replies only. The groundwork is in place and the sending half is not written.

Sending hours are judged in UTC

A workspace has no timezone of its own yet, so a 09:00–20:00 window means those hours in UTC. Set it in UTC until that column exists.

There is no outbound email

No invitations, no password-reset links, no scheduled reports. It is why colleague accounts are created outright with a password you hand over, rather than invited.

No outgoing webhooks

Your systems poll for a specific send or for the aggregate figures. The only thing that posts to us is the WhatsApp service.

No alerts

Nothing notifies you when a failure rate climbs. The figures are on the reports screen to be looked at, not pushed at you.

Clicks are not attributed to a contact

Totals, unique visitors, country and device are recorded per link. Which individual clicked is not.

Judge it on your own number.

Fourteen days free, no credit card. Connect a number, send one campaign, and read the reports for yourself.

Cookies

The site runs what it needs to work, including the Crisp chat bubble. Google Analytics is the one thing we will not load unless you agree to it.