Documentación

Documentación de Smessa

Todo lo necesario para usar Smessa: desde su primera importación de contactos hasta una integración completa con la API.

Primeros pasos

Regístrese con su cuenta de Google o su correo: su cuenta y su primer espacio de trabajo se crean en el primer inicio de sesión. Un espacio de trabajo contiene sus propios contactos, números, conversaciones y ajustes, por lo que una organización puede gestionar varios espacios aislados.

Antes de enviar nada necesita un número de teléfono y créditos. La prueba incluye mensajes gratuitos para empezar; los planes de pago añaden un cupo mensual de créditos.

  • Compre un número en Números de teléfono: busque por país y dígitos y compre. El primer número se convierte en su remitente predeterminado.
  • Consulte su saldo de créditos en Facturación. Cada segmento de SMS saliente consume un crédito.
  • Para WhatsApp también necesita un remitente de WhatsApp registrado y al menos una plantilla aprobada; vea la sección WhatsApp más abajo.
  • Invite a sus colegas en Equipo; vea Equipo y espacios de trabajo para saber cómo funcionan las invitaciones.

Contactos y consentimiento

Los contactos son la base de todo envío. Añádalos uno a uno o importe un CSV con el asistente de importación, que mapea sus columnas, valida los números y omite duplicados.

Los números deben ir en formato internacional (por ejemplo +34612345678). Se aceptan y normalizan espacios, guiones y el 00 inicial; todo lo demás se rechaza en lugar de deformarse en silencio.

  • Cada contacto tiene un estado de consentimiento: aceptado, rechazado o desconocido. Las campañas solo llegan a contactos con consentimiento.
  • Respuestas como STOP dan de baja al contacto automáticamente; configure las palabras clave y los textos de confirmación en Ajustes → Palabras clave.
  • Las etiquetas agrupan contactos para segmentar campañas y difundir turnos. Créelas sobre la marcha al añadir o importar.
  • Cada cambio de consentimiento queda registrado en un historial de auditoría que puede presentar cuando se lo pidan; vea Cumplimiento.

Bandeja de entrada

La bandeja muestra todas las conversaciones bidireccionales en un solo lugar: SMS y WhatsApp lado a lado, cada hilo etiquetado con su canal.

Abra una conversación para ver el historial completo y responder directamente. Responder consume créditos como cualquier mensaje saliente.

  • Filtre por estado: abierta, pendiente o resuelta.
  • Los contadores de no leídos se actualizan en tiempo real al llegar respuestas.
  • Responder por WhatsApp fuera de la ventana de sesión de 24 horas requiere una plantilla aprobada; el compositor se lo indicará cuando sea el caso.

Campañas

Las campañas envían un mensaje a muchos contactos: una promoción, un aviso, una felicitación. Diríjase a todos, a etiquetas concretas o a reglas de segmento.

Antes de enviar, el compositor muestra una estimación del coste: cuántos destinatarios, cuántos segmentos y si su saldo alcanza. No se envía nada hasta que confirme.

  • Envíe de inmediato o programe; una campaña programada puede reprogramarse o cancelarse hasta que empiece.
  • Personalice con variables como el nombre del contacto.
  • Siga las estadísticas en vivo durante el envío: enviados, entregados, fallidos y respuestas.
  • Las campañas omiten contactos dados de baja o con consentimiento desconocido; no es configurable, por diseño.

WhatsApp

Smessa envía WhatsApp a través de su remitente de WhatsApp Business registrado. Con el remitente conectado, WhatsApp aparece junto al SMS en la bandeja, las campañas y los recordatorios.

WhatsApp distingue entre mensajes de sesión y mensajes de plantilla. Cuando un cliente le escribe, se abre una ventana de sesión de 24 horas en la que puede responder libremente. Fuera de esa ventana, los mensajes iniciados por la empresa deben usar una plantilla aprobada por WhatsApp.

  • Gestione las plantillas en Plantillas de WhatsApp: créelas por categoría (marketing, utilidad, autenticación) y envíelas a revisión.
  • El estado de una plantilla es Pendiente, Aprobada o Rechazada; use Sincronizar para obtener el estado más reciente.
  • Las plantillas usan variables numeradas ({{1}}, {{2}}) que se rellenan al enviar.
  • Una plantilla rechazada muestra el motivo para revisarla y volver a enviarla.

Recordatorios de citas

Complemento

El complemento de citas envía recordatorios automáticos que reducen notablemente las ausencias. Cree las citas a mano o sincronícelas desde un calendario externo.

Cada cita tiene un calendario de recordatorios, por ejemplo 24 horas y 1 hora antes del inicio. Los recordatorios salen por SMS, o por WhatsApp con la plantilla elegida.

  • Los clientes confirman respondiendo; la confirmación queda registrada en la cita.
  • Marque ausencias y citas completadas para un historial fiable.
  • También puede lanzar un recordatorio manualmente desde la página de la cita.

Turnos

Complemento

El complemento de turnos cubre turnos vacantes por SMS o WhatsApp. Cree un turno con horario, lugar y retribución, y difúndalo al personal por etiqueta o individualmente; las difusiones por WhatsApp usan una plantilla aprobada.

La primera persona que responde SÍ se lleva el turno: las respuestas se bloquean por orden de llegada, sin dobles asignaciones. Al resto se le avisa automáticamente de que el turno está cubierto.

  • Fije un plazo de respuesta tras el cual la difusión caduca.
  • Siga cada respuesta - aceptada, rechazada, caducada - en la página del turno.
  • Cancele o cierre turnos para mantener el calendario en orden.

Automatizaciones

Complemento

El complemento de automatizaciones reacciona a los eventos por usted: un mensaje entrante con cierta palabra clave, un contacto nuevo y más. Cada regla une un disparador con una o varias acciones.

Las acciones incluyen enviar una respuesta, etiquetar al contacto y llamar a su propio webhook. Cada regla muestra su historial de ejecución con aciertos y fallos.

  • Las reglas se activan y desactivan sin borrarlas.
  • La acción webhook hace un POST JSON a su URL con cabeceras personalizadas opcionales y 10 segundos de tiempo límite. De momento no hay reintentos ni firma: trate ese endpoint como una notificación best-effort, no como fuente de verdad.
  • El registro de ejecución guarda el detalle de cada ejecución para depurar.

Códigos de un solo uso (OTP)

Complemento

El complemento OTP permite que su propia aplicación envíe códigos de verificación por SMS o WhatsApp con dos llamadas API sencillas: una para enviar el código y otra para verificar lo que escribió el usuario. La entrega por WhatsApp usa una plantilla de autenticación aprobada.

Los códigos caducan tras un número configurable de minutos y son de un solo uso. Vea la referencia de la API para el formato de las peticiones.

  • Personalice la plantilla del mensaje y la longitud del código en cada petición.
  • La verificación devuelve un verified verdadero/falso claro; no necesita almacenar códigos.

Equipo y espacios de trabajo

Invite a colegas a su espacio de trabajo en Equipo. Hay tres roles: propietario (control total), administrador (todo salvo la propiedad) y miembro.

Las invitaciones funcionan sin correo: cree una invitación para la dirección de un colega y, en cuanto inicie sesión en Smessa con esa dirección, se unirá al espacio automáticamente. Las invitaciones caducan a los 7 días y pueden renovarse.

  • Administradores y propietarios gestionan roles, retiran miembros y gestionan invitaciones.
  • El propietario no puede ser degradado ni eliminado.
  • Cambie entre espacios desde el selector de espacio de trabajo.

Facturación y créditos

Los planes incluyen un cupo mensual de créditos; un crédito cubre un segmento de SMS. Al agotarse, el envío se detiene salvo que permita excedentes o compre un paquete de recarga.

El pago se realiza a través de nuestro socio de pagos; facturas y métodos de pago se gestionan en el portal del cliente, a un clic desde Facturación.

  • Los paquetes de créditos son compras únicas que se suman a su cupo mensual.
  • Los complementos (citas, turnos, automatizaciones, OTP) son suscripciones aparte que se activan por organización.
  • El consumo y el historial de transacciones están siempre visibles en Facturación.

Cumplimiento y RGPD

Smessa está construido para enviar con consentimiento. Las bajas se aplican automáticamente, cada cambio de consentimiento se registra con fecha y motivo, y las campañas nunca ignoran el consentimiento.

Para solicitudes RGPD, las herramientas de cumplimiento exportan o borran todo lo almacenado sobre un número: ficha de contacto, mensajes e historial de consentimiento.

  • La exportación produce un archivo legible por máquina, apto para solicitudes de acceso.
  • El borrado es irreversible y queda registrado; elimina el contacto, sus mensajes y su rastro de consentimiento.
  • Configure palabras clave de baja, alta e información con confirmaciones automáticas en Ajustes → Palabras clave.

Referencia de la API

Todo lo que hace el panel está disponible mediante una API REST JSON. Autentíquese con una clave API del espacio de trabajo e integre envíos, contactos, campañas y más en sus propios sistemas.

La URL base es su host de API; todos los endpoints siguientes son relativos a ella.

Autenticación

Cree una clave API en Ajustes → Claves API. La clave completa (con prefijo sf_) se muestra una sola vez al crearla: guárdela en un gestor de secretos.

Envíe la clave como token bearer en cada petición. La clave está ligada al espacio de trabajo donde se creó, así que no hace falta cabecera de espacio; si envía X-Workspace-Id, debe coincidir con el espacio de la clave.

Las claves dan acceso completo a su espacio y siguen funcionando aunque su creador deje el espacio: revoque las claves en Ajustes al dar de baja a alguien o al rotar credenciales.

curl https://api.smessa.com/api/v1/contacts \
  -H "Authorization: Bearer sf_your_api_key"

Convenciones

  • Los cuerpos de petición y respuesta son JSON con nombres de campo en snake_case.
  • Las marcas de tiempo son ISO 8601 en UTC.
  • Los números de teléfono usan el formato internacional E.164 (+34612345678).
  • Los listados se paginan con los parámetros page y limit y devuelven el sobre que se muestra abajo.
{
  "data": [ ... ],
  "pagination": { "page": 1, "limit": 50, "total": 132, "pages": 3 }
}

Errores

  • Los errores devuelven un cuerpo JSON con un campo detail; los errores de validación (422) devuelven un array detail con mensajes por campo.
  • 401 - clave API ausente, inválida o revocada.
  • 402 - créditos insuficientes o suscripción inactiva, con cuerpo objeto: {"error": "insufficient_credits", "message": "..."}.
  • 403 - X-Workspace-Id no coincide, o {"error": "feature_not_available"} cuando el endpoint requiere un complemento no contratado.
  • 404 - recurso no encontrado en este espacio de trabajo.

Endpoints

Mensajes

POST/api/v1/messagesEnviar un mensaje SMS o WhatsApp
GET/api/v1/messages/{id}Obtener un mensaje y su estado de entrega

OTP

POST/api/v1/otp/sendEnviar un código de verificación
POST/api/v1/otp/verifyVerificar un código introducido por el usuario

Contactos

GET/api/v1/contactsListar contactos (búsqueda, filtros de consentimiento y etiqueta)
POST/api/v1/contactsCrear un contacto
POST/api/v1/contacts/importImportar contactos en bloque
GET/api/v1/contacts/tagsListar las etiquetas del espacio
GET/api/v1/contacts/{id}Obtener un contacto
PUT/api/v1/contacts/{id}Actualizar un contacto
DELETE/api/v1/contacts/{id}Eliminar un contacto
PUT/api/v1/contacts/{id}/consentActualizar el consentimiento
GET/api/v1/contacts/{id}/messagesHistorial de mensajes con este contacto

Conversaciones

GET/api/v1/conversationsListar conversaciones (vista de bandeja)
GET/api/v1/conversations/{id}Obtener una conversación con sus mensajes
PUT/api/v1/conversations/{id}Actualizar estado o asignación
POST/api/v1/conversations/{id}/messagesResponder en una conversación

Campañas

GET/api/v1/campaignsListar campañas
POST/api/v1/campaignsCrear una campaña
GET/api/v1/campaigns/{id}Obtener una campaña con estadísticas en vivo
GET/api/v1/campaigns/{id}/estimateEstimar destinatarios y coste
POST/api/v1/campaigns/{id}/scheduleProgramar una campaña
POST/api/v1/campaigns/{id}/sendEnviar una campaña ahora
POST/api/v1/campaigns/{id}/cancelCancelar una campaña

Números de teléfono

GET/api/v1/phone-numbersListar sus números
GET/api/v1/phone-numbers/availableBuscar números disponibles para comprar
POST/api/v1/phone-numbersComprar un número
PUT/api/v1/phone-numbers/{id}Renombrar o marcar como predeterminado
GET/api/v1/phone-numbers/{id}/statsEstadísticas de uso de un número
DELETE/api/v1/phone-numbers/{id}Liberar un número

WhatsApp

GET/api/v1/whatsapp/sendersListar remitentes registrados
GET/api/v1/whatsapp/templatesListar plantillas de mensaje
POST/api/v1/whatsapp/templatesCrear una plantilla para revisión
POST/api/v1/whatsapp/templates/syncSincronizar el estado de revisión de las plantillas

Citas (complemento)

GET/api/v1/appointmentsListar citas
POST/api/v1/appointmentsCrear una cita con calendario de recordatorios
PUT/api/v1/appointments/{id}Actualizar una cita
POST/api/v1/appointments/{id}/cancelCancelar una cita
POST/api/v1/appointments/{id}/remindEnviar un recordatorio ahora

Turnos (complemento)

GET/api/v1/shiftsListar turnos
POST/api/v1/shiftsCrear un turno
POST/api/v1/shifts/{id}/broadcastDifundir un turno al personal
GET/api/v1/shifts/{id}/responsesListar respuestas
POST/api/v1/shifts/{id}/cancelCancelar un turno

Automatizaciones (complemento)

GET/api/v1/automationListar reglas
POST/api/v1/automationCrear una regla
PUT/api/v1/automation/{id}Actualizar una regla
POST/api/v1/automation/{id}/toggleActivar o desactivar una regla
GET/api/v1/automation/{id}/logsRegistro de ejecución de una regla

Analítica

GET/api/v1/analytics/overviewEstadísticas del panel
GET/api/v1/analytics/messagingAnalítica de mensajería por período

Ejemplos

Enviar 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."
  }'

Listar contactos

curl "https://api.smessa.com/api/v1/contacts?page=1&limit=50" \
  -H "Authorization: Bearer sf_your_api_key"

Enviar un código de un solo uso

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"}'

Limitaciones actuales

  • Las claves API no tienen scopes: cada clave tiene acceso completo a su espacio de trabajo. Cree espacios separados si necesita aislamiento.
  • Aún no hay límite de peticiones: sea prudente con el polling y use la paginación.
  • Aún no hay webhooks de eventos salientes; consulte el estado de los mensajes o use la acción webhook de las automatizaciones.