Premiers pas
Inscrivez-vous avec votre compte Google ou votre e-mail - votre compte et votre premier espace de travail sont créés à la première connexion. Un espace de travail contient ses propres contacts, numéros, conversations et réglages ; une organisation peut donc gérer plusieurs espaces isolés.
Avant d'envoyer quoi que ce soit, il vous faut un numéro de téléphone et des crédits. L'essai inclut des messages gratuits pour démarrer ; les offres payantes ajoutent un quota mensuel de crédits.
- Achetez un numéro dans Numéros de téléphone : recherchez par pays et par chiffres, puis achetez. Le premier numéro devient votre expéditeur par défaut.
- Consultez votre solde de crédits dans Facturation. Chaque segment de SMS sortant consomme un crédit.
- Pour WhatsApp, il faut aussi un expéditeur WhatsApp enregistré et au moins un modèle approuvé - voir la section WhatsApp ci-dessous.
- Invitez vos collègues dans Équipe - voir Équipe et espaces de travail pour le fonctionnement des invitations.
Contacts et consentement
Les contacts sont la base de tout envoi. Ajoutez-les un par un ou importez un CSV avec l'assistant d'import, qui mappe vos colonnes, valide les numéros et ignore les doublons.
Les numéros doivent être au format international (par exemple +33612345678). Espaces, tirets et 00 initial sont acceptés et normalisés automatiquement ; tout le reste est rejeté plutôt que déformé en silence.
- Chaque contact a un statut de consentement : opt-in, opt-out ou inconnu. Les campagnes n'atteignent que les contacts opt-in.
- Les réponses comme STOP désinscrivent automatiquement le contact - configurez les mots-clés et les textes de confirmation dans Réglages → Mots-clés.
- Les tags regroupent les contacts pour le ciblage des campagnes et les diffusions de vacations. Créez-les à la volée lors de l'ajout ou de l'import.
- Chaque changement de consentement est consigné dans un journal d'audit que vous pouvez produire sur demande - voir Conformité.
Boîte de réception
La boîte de réception rassemble toutes les conversations bidirectionnelles - SMS et WhatsApp côte à côte, chaque fil étiqueté avec son canal.
Ouvrez une conversation pour voir tout l'historique et répondre directement. Une réponse consomme des crédits comme tout message sortant.
- Filtrez par statut : ouvert, en attente ou résolu.
- Les compteurs de non-lus se mettent à jour en temps réel à l'arrivée des réponses.
- Les réponses WhatsApp hors de la fenêtre de session de 24 heures nécessitent un modèle approuvé - le composeur vous l'indique le cas échéant.
Campagnes
Les campagnes envoient un message à de nombreux contacts - promotion, rappel, vœux de saison. Ciblez tout le monde, des tags précis ou des règles de segment.
Avant l'envoi, le composeur affiche une estimation du coût : nombre de destinataires, nombre de segments, et si votre solde de crédits suffit. Rien ne part avant votre confirmation.
- Envoyez immédiatement ou planifiez ; une campagne planifiée peut être reprogrammée ou annulée tant qu'elle n'a pas démarré.
- Personnalisez avec des variables comme le prénom du contact.
- Suivez les statistiques en direct pendant l'envoi : envoyés, délivrés, échoués et réponses.
- Les campagnes ignorent les contacts opt-out ou au consentement inconnu - ce n'est pas configurable, par conception.
Smessa envoie sur WhatsApp via votre expéditeur WhatsApp Business enregistré. Une fois l'expéditeur connecté, WhatsApp apparaît aux côtés du SMS dans la boîte de réception, les campagnes et les rappels.
WhatsApp distingue messages de session et messages modèles. Après un message entrant d'un client, une fenêtre de session de 24 heures s'ouvre pendant laquelle vous répondez librement. Au-delà, les messages à l'initiative de l'entreprise doivent utiliser un modèle approuvé par WhatsApp.
- Gérez les modèles dans Modèles WhatsApp : créez-les par catégorie (marketing, utilitaire, authentification) et soumettez-les à validation.
- Le statut d'un modèle est En attente, Approuvé ou Rejeté - utilisez Synchroniser pour récupérer le dernier statut.
- Les modèles utilisent des variables numérotées ({{1}}, {{2}}) remplies à l'envoi.
- Un modèle rejeté affiche le motif du rejet pour réviser et resoumettre.
Rappels de rendez-vous
Add-onL'add-on rendez-vous envoie des rappels automatiques qui réduisent nettement les absences. Créez les rendez-vous manuellement ou synchronisez-les depuis un calendrier externe.
Chaque rendez-vous a un calendrier de rappels - par exemple 24 heures et 1 heure avant le début. Les rappels partent en SMS, ou en WhatsApp avec un modèle choisi.
- Les clients confirment en répondant ; la confirmation est enregistrée sur le rendez-vous.
- Marquez absences et rendez-vous honorés pour un historique fiable.
- Un rappel peut aussi être déclenché manuellement depuis la page du rendez-vous.
Planification de vacations
Add-onL'add-on vacations pourvoit les créneaux ouverts par SMS ou WhatsApp. Créez une vacation avec horaire, lieu et rémunération, puis diffusez-la au personnel concerné par tag ou individuellement - les diffusions WhatsApp utilisent un modèle approuvé.
La première personne qui répond OUI obtient la vacation - les réponses sont verrouillées dans l'ordre d'arrivée, donc pas de double attribution. Les autres sont automatiquement prévenus que le créneau est pris.
- Fixez une date limite de réponse après laquelle la diffusion expire.
- Suivez chaque réponse - acceptée, refusée, expirée - sur la page de la vacation.
- Annulez ou clôturez les vacations pour garder un planning propre.
Automatisations
Add-onL'add-on automatisations réagit aux événements à votre place : message entrant contenant un mot-clé, nouveau contact, etc. Chaque règle associe un déclencheur à une ou plusieurs actions.
Les actions incluent l'envoi d'une réponse, l'ajout d'un tag et l'appel de votre propre webhook. Chaque règle affiche son historique d'exécution avec succès et échecs.
- Les règles s'activent et se désactivent sans être supprimées.
- L'action webhook envoie un POST JSON vers votre URL avec en-têtes personnalisés optionnels et un délai de 10 secondes. Pas de nouvelle tentative ni de signature pour l'instant - traitez ce point de terminaison comme une notification best-effort, pas comme une source de vérité.
- Le journal d'exécution conserve le détail de chaque exécution pour le débogage.
Codes à usage unique (OTP)
Add-onL'add-on OTP permet à votre application d'envoyer des codes de vérification par SMS ou WhatsApp via deux appels API simples - un pour envoyer le code, un pour vérifier la saisie de l'utilisateur. La livraison WhatsApp utilise un modèle d'authentification approuvé.
Les codes expirent après un délai configurable et sont à usage unique. Voir la référence API ci-dessous pour le format des requêtes.
- Personnalisez le modèle de message et la longueur du code à chaque requête.
- La vérification renvoie un verified vrai/faux clair - inutile de stocker les codes vous-même.
Équipe et espaces de travail
Invitez vos collègues dans votre espace de travail via Équipe. Trois rôles existent : propriétaire (contrôle total), admin (tout sauf la propriété) et membre.
Les invitations fonctionnent sans e-mail : créez une invitation pour l'adresse d'un collègue, et dès qu'il se connecte à Smessa avec cette adresse, il rejoint l'espace automatiquement. Les invitations expirent après 7 jours et peuvent être renouvelées.
- Admins et propriétaires gèrent les rôles, retirent des membres et gèrent les invitations.
- Le propriétaire ne peut être ni rétrogradé ni retiré.
- Passez d'un espace à l'autre via le sélecteur d'espace de travail.
Facturation et crédits
Les offres incluent un quota mensuel de crédits ; un crédit couvre un segment de SMS. À épuisement, l'envoi s'arrête sauf si vous autorisez le dépassement ou achetez un pack de recharge.
Le paiement passe par notre partenaire de paiement ; factures et moyens de paiement se gèrent dans le portail client, accessible en un clic depuis Facturation.
- Les packs de crédits sont des achats ponctuels qui s'ajoutent à votre quota mensuel.
- Les add-ons (rendez-vous, vacations, automatisations, OTP) sont des abonnements distincts activés par organisation.
- Consommation et historique des transactions sont visibles à tout moment dans Facturation.
Conformité et RGPD
Smessa est conçu pour un envoi fondé sur le consentement. Les désinscriptions sont appliquées automatiquement, chaque changement de consentement est journalisé avec horodatage et motif, et l'envoi de campagne ne contourne jamais le consentement.
Pour les demandes RGPD, les outils de conformité exportent ou effacent tout ce qui est stocké sur un numéro - fiche contact, messages et historique de consentement.
- L'export produit un fichier lisible par machine, adapté aux demandes d'accès.
- La suppression est irréversible et journalisée ; elle retire le contact, ses messages et sa trace de consentement.
- Configurez les mots-clés d'opt-out, d'opt-in et d'information avec confirmations automatiques dans Réglages → Mots-clés.
Référence API
Tout ce que fait le tableau de bord est disponible via une API REST JSON. Authentifiez-vous avec une clé API d'espace de travail et intégrez envois, contacts, campagnes et plus dans vos propres systèmes.
L'URL de base est votre hôte API ; tous les points de terminaison ci-dessous y sont relatifs.
Authentification
Créez une clé API dans Réglages → Clés API. La clé complète (préfixe sf_) n'est affichée qu'une seule fois à la création - stockez-la dans un gestionnaire de secrets.
Passez la clé en jeton bearer sur chaque requête. La clé est liée à l'espace de travail où elle a été créée, donc aucun en-tête d'espace n'est nécessaire ; si vous envoyez X-Workspace-Id, il doit correspondre à l'espace de la clé.
Les clés donnent un accès complet à leur espace et continuent de fonctionner même si leur créateur quitte l'espace - révoquez les clés dans Réglages lors des départs ou des rotations de secrets.
curl https://api.smessa.com/api/v1/contacts \
-H "Authorization: Bearer sf_your_api_key"Conventions
- Les corps de requête et de réponse sont en JSON avec des noms de champs en snake_case.
- Les horodatages sont en ISO 8601, UTC.
- Les numéros de téléphone utilisent le format international E.164 (+33612345678).
- Les listes sont paginées via les paramètres page et limit et renvoient l'enveloppe ci-dessous.
{
"data": [ ... ],
"pagination": { "page": 1, "limit": 50, "total": 132, "pages": 3 }
}Erreurs
- Les erreurs renvoient un corps JSON avec un champ detail ; les erreurs de validation (422) renvoient un tableau detail avec les messages par champ.
- 401 - clé API absente, invalide ou révoquée.
- 402 - crédits insuffisants ou abonnement inactif, avec un corps objet : {"error": "insufficient_credits", "message": "..."}.
- 403 - X-Workspace-Id non concordant, ou {"error": "feature_not_available"} quand le point de terminaison requiert un add-on non souscrit.
- 404 - ressource introuvable dans cet espace de travail.
Points de terminaison
Messages
| POST | /api/v1/messages | Envoyer un message SMS ou WhatsApp |
| GET | /api/v1/messages/{id} | Récupérer un message et son statut de livraison |
OTP
| POST | /api/v1/otp/send | Envoyer un code de vérification |
| POST | /api/v1/otp/verify | Vérifier un code saisi par l'utilisateur |
Contacts
| GET | /api/v1/contacts | Lister les contacts (recherche, filtres consentement et tag) |
| POST | /api/v1/contacts | Créer un contact |
| POST | /api/v1/contacts/import | Importer des contacts en masse |
| GET | /api/v1/contacts/tags | Lister les tags de l'espace |
| GET | /api/v1/contacts/{id} | Récupérer un contact |
| PUT | /api/v1/contacts/{id} | Mettre à jour un contact |
| DELETE | /api/v1/contacts/{id} | Supprimer un contact |
| PUT | /api/v1/contacts/{id}/consent | Mettre à jour le consentement |
| GET | /api/v1/contacts/{id}/messages | Historique des messages avec ce contact |
Conversations
| GET | /api/v1/conversations | Lister les conversations (vue boîte de réception) |
| GET | /api/v1/conversations/{id} | Récupérer une conversation avec ses messages |
| PUT | /api/v1/conversations/{id} | Mettre à jour statut ou attribution |
| POST | /api/v1/conversations/{id}/messages | Répondre dans une conversation |
Campagnes
| GET | /api/v1/campaigns | Lister les campagnes |
| POST | /api/v1/campaigns | Créer une campagne |
| GET | /api/v1/campaigns/{id} | Récupérer une campagne et ses statistiques |
| GET | /api/v1/campaigns/{id}/estimate | Estimer destinataires et coût |
| POST | /api/v1/campaigns/{id}/schedule | Planifier une campagne |
| POST | /api/v1/campaigns/{id}/send | Envoyer une campagne maintenant |
| POST | /api/v1/campaigns/{id}/cancel | Annuler une campagne |
Numéros de téléphone
| GET | /api/v1/phone-numbers | Lister vos numéros |
| GET | /api/v1/phone-numbers/available | Rechercher des numéros disponibles à l'achat |
| POST | /api/v1/phone-numbers | Acheter un numéro |
| PUT | /api/v1/phone-numbers/{id} | Renommer ou définir par défaut |
| GET | /api/v1/phone-numbers/{id}/stats | Statistiques d'utilisation d'un numéro |
| DELETE | /api/v1/phone-numbers/{id} | Libérer un numéro |
| GET | /api/v1/whatsapp/senders | Lister les expéditeurs enregistrés |
| GET | /api/v1/whatsapp/templates | Lister les modèles de message |
| POST | /api/v1/whatsapp/templates | Créer un modèle à valider |
| POST | /api/v1/whatsapp/templates/sync | Synchroniser le statut de validation des modèles |
Rendez-vous (add-on)
| GET | /api/v1/appointments | Lister les rendez-vous |
| POST | /api/v1/appointments | Créer un rendez-vous avec calendrier de rappels |
| PUT | /api/v1/appointments/{id} | Mettre à jour un rendez-vous |
| POST | /api/v1/appointments/{id}/cancel | Annuler un rendez-vous |
| POST | /api/v1/appointments/{id}/remind | Envoyer un rappel maintenant |
Vacations (add-on)
| GET | /api/v1/shifts | Lister les vacations |
| POST | /api/v1/shifts | Créer une vacation |
| POST | /api/v1/shifts/{id}/broadcast | Diffuser une vacation au personnel |
| GET | /api/v1/shifts/{id}/responses | Lister les réponses |
| POST | /api/v1/shifts/{id}/cancel | Annuler une vacation |
Automatisations (add-on)
| GET | /api/v1/automation | Lister les règles |
| POST | /api/v1/automation | Créer une règle |
| PUT | /api/v1/automation/{id} | Mettre à jour une règle |
| POST | /api/v1/automation/{id}/toggle | Activer ou désactiver une règle |
| GET | /api/v1/automation/{id}/logs | Journal d'exécution d'une règle |
Analytique
| GET | /api/v1/analytics/overview | Statistiques du tableau de bord |
| GET | /api/v1/analytics/messaging | Analytique de messagerie sur une période |
Exemples
Envoyer un SMS
curl -X POST https://api.smessa.com/api/v1/messages \
-H "Authorization: Bearer sf_your_api_key" \
-H "Content-Type: application/json" \
-d '{
"to": "+46701234567",
"body": "Your appointment is tomorrow at 14:00."
}'Lister les contacts
curl "https://api.smessa.com/api/v1/contacts?page=1&limit=50" \
-H "Authorization: Bearer sf_your_api_key"Envoyer un code à usage unique
curl -X POST https://api.smessa.com/api/v1/otp/send \
-H "Authorization: Bearer sf_your_api_key" \
-H "Content-Type: application/json" \
-d '{"phone_number": "+46701234567"}'Limitations actuelles
- Les clés API n'ont pas de scopes : chaque clé a un accès complet à son espace de travail. Créez des espaces distincts si vous avez besoin d'isolation.
- Pas encore de limitation de débit - soyez raisonnable avec le polling et utilisez la pagination.
- Pas encore de webhooks d'événements sortants ; interrogez le statut des messages ou utilisez l'action webhook des automatisations.