Texting and consent
SignSealer sends texts on your behalf, from your business's own toll-free or local number, registered with the carriers under your name, and every text names your business. Texting from your own number is coming soon. The carriers hold you to what the person agreed to, and they ask for the exact wording. This page is what to collect and how to hand it over.
Watch it done: Text the link instead (2:43)
Why a text goes nowhere without this
The engine will not text a number it has no consent for. That is not a
policy on a page — it is a check in the database, and a send to a number with
no consent is recorded suppressed, not queued.
If you collect phone numbers on your own booking form, order page or at a counter, SignSealer never saw the person tick the box. Until you tell it, it assumes nothing, and every text you expect to go will not go. Send the consent once, when you take the number.
The seven things the wording has to say
Send the exact words that were in front of the person — not a summary, not a
description. It is kept verbatim, because it is what a carrier asks for when
they audit your traffic. It must carry all seven of these, and a disclosure
missing any is refused with 422 naming which:
| What | Why |
|---|---|
| STOP opts out | The one instruction every recipient must have. |
| HELP gets help | Required alongside it, and as often forgotten. |
| Message and data rates may apply | The cost is theirs, and they have to know. |
| Message frequency | "Frequency varies", or a number — "up to 4 msgs/month". |
| Consent is not a condition of purchase | Nobody may be made to agree to texts to buy something. |
| Their number is not shared or sold for marketing | Said as a promise: "we will not share or sell", "never sold". |
| Where the terms and the privacy policy are | Both, because a disclosure that links one is the half a reviewer asks about. |
Wording that passes. It is not short, and that is the trade: every
sentence in it is one a carrier checks for, and a disclosure missing any of
them is refused when you try to record it (00327).
I agree to receive text messages from [Your business name] via Sign Sealer
about documents I need to read and sign: the signing link, at most one
reminder if I have not signed, and a confirmation when everyone has signed.
Message frequency may vary. Message and data rates may apply. Consent is not
a condition of purchase. We will not share or sell your mobile information
with third parties for promotional or marketing purposes. Reply HELP for
help. Reply STOP to opt out. Terms: https://signsealer.com/legal/terms
Privacy: https://signsealer.com/legal/privacy-policy
Name your own business where the placeholder is. The recipient has to be able to tell who is texting them, and "a platform they have never heard of" is not an answer a carrier accepts.
The tick box must be the person's own act. A pre-ticked box, a checkbox bundled with your terms of service, or consent as a condition of booking are all things a carrier will take your numbers away for.
Recording it
POST /v1/sms-consents
{
"phone": "(615) 555-0142",
"obtained_via": "booking form, checkbox beside the phone field",
"wording": "I agree to receive text messages from Harbour Rentals via Sign Sealer about documents I need to read and sign: the signing link, at most one reminder if I have not signed, and a confirmation when everyone has signed. Message frequency may vary. Message and data rates may apply. Consent is not a condition of purchase. We will not share or sell your mobile information with third parties for promotional or marketing purposes. Reply HELP for help. Reply STOP to opt out. Terms: https://signsealer.com/legal/terms Privacy: https://signsealer.com/legal/privacy-policy"
}
One call covers all three things we would text about — the signing link, a reminder, and the confirmation — because somebody who agreed to those agreed to all three. It answers with the number in E.164 and the purposes recorded:
{ "phone": "+16155550142",
"purposes": ["signing.link", "signing.reminder", "signing.completed"] }
obtained_via is for you, later. "Booking form" is enough; "the
checkbox beside the phone field on /book" is what you will want when somebody
asks in eighteen months.
Then send the link to it
A consent on its own sends nothing. Put the number on the signer, beside the address or instead of it:
POST /v1/documents/{id}/send
{ "signers": [
{ "full_name": "Dana Reyes", "email": "dana@example.signsealer.com", "phone": "+16155550142" },
{ "full_name": "Sam Ortiz", "phone": "+16155550188" }
] }
Dana gets the same link twice, by mail and by text, because a person who
does not check one inbox checks the other. Sam gets it once, by text, and
their email comes back null in the answer.
The text goes only where may_text is true for
signing.link. Where it is not, the send is not refused: the email
still goes, and the reason the text did not is on the document's evidence
trail as signing.link.not_texted. A signer with no email and no
textable number is a different matter and is refused by name, before anything
is minted — there is nowhere for their link to go.
From then on the number carries: the reminder and the completion note follow
the road the link took, each under its own consent. The wording promises at
most one reminder, and the engine keeps it: a signer is texted one reminder
over the life of their link, whoever asks for it and however often, and every
reminder after that goes by email alone — or, for a signer with no email
address, is refused with 422 saying why
(Limits and paging).
Asking before you ask again
GET /v1/sms-consents?phone=%2B16155550142
{ "phone": "+16155550142", "may_text": true, "why_not": null,
"obtained_via": "booking form, checkbox beside the phone field",
"obtained_at": "2026-10-03T14:22:09Z" }
Use it to decide whether to put the tick box in front of a returning customer again. It answers for one number at a time and deliberately will not list every number you hold.
may_text is what the engine will actually do, not what one of
its checks says. Consent has to be live and the number must not be
suppressed — a disconnected phone keeps its consent and still cannot be
reached. When it is false, why_not tells you which:
why_not | What happened | What to do |
|---|---|---|
no_consent | Nobody ever recorded one. | Ask, and record it. |
revoked | They replied STOP. | Nothing. It is theirs to undo. |
suppressed | The number could not be reached — disconnected, or a landline. | Check the number with them; email in the meantime. |
STOP is theirs, not yours
When somebody replies STOP, the consent is revoked, not merely suppressed — and you cannot re-consent them by calling this endpoint again. They have to opt in themselves. A door that let a business overwrite a withdrawal would make the whole record worthless, since the business is not who withdrew it.
A number is one person however it is written. (615) 555-0142,
615-555-0142 and +1 615 555 0142 are the same
consent and the same STOP, so you can send numbers in whatever shape your
database holds them.
What we never do
SignSealer does not send marketing texts. The only purposes that exist are the signing link, one reminder, and the confirmation; a request for anything else is refused by the engine rather than by a policy. That is worth saying to your own customers, because it is the reason this consent is narrow enough to be easy to collect.
Numbers you already hold, with no consent recorded, are visible under Texting in the portal — including every text that did not go and why.
Ready to build? An API key takes a minute in the portal, and the free plan covers the first 10 agreements a month.
Get an API key