News
The official Node.js library for Calisero is available
Fully typed, Promise-based and with no dependencies: send SMS, verify phone numbers with OTP codes and receive delivery reports from Node.js in a few lines.
Learn more about everything you can do with Calisero
News
Fully typed, Promise-based and with no dependencies: send SMS, verify phone numbers with OTP codes and receive delivery reports from Node.js in a few lines.
News
An autowired client, a Notifier transport, a delivery webhook with Symfony events and console commands — Calisero now fits into a Symfony application the Symfony way.
News
Artisan commands, publishable configuration, queue-ready delivery and broadcastable delivery events — integrating Calisero into a Laravel application now takes minutes.
Educational
From generating an API key to a delivered message: the minimum steps for a working integration, with code samples and the mistakes people make on day one.
Educational
One-time codes are the simplest barrier between a customer's account and whoever learned their password. Here is how to build them so they actually help.
Announcements
Final status, delivery timestamp, part count and failure reason — for each individual message, right in your account, without querying the API.
Educational
The same infrastructure, two entirely different legal regimes. Classifying a message wrong brings complaints, route blocks and fines.
Educational
The API confirms you sent. The delivery callback tells you what happened next. Here is how to build one so you never lose an event.
Educational
The right to stop receiving messages has no cooling-off period and no commercial exceptions. How to implement it technically without blocking necessary messages too.
Educational
The displayed name is the first thing a recipient sees and the main reason they open or ignore the message. The Romanian rules and the practices that work.
Educational
An undelivered message always has a reason. A guide to interpreting statuses and the right action for each — including when retrying is the mistake.