> ## Documentation Index
> Fetch the complete documentation index at: https://docs.so-me.studio/llms.txt
> Use this file to discover all available pages before exploring further.

# Webhooks de redes sociales para eventos de publicaciones y bandeja de entrada

> Suscríbete a eventos firmados en tiempo real de Social media studio, como publicaciones publicadas o fallidas y mensajes nuevos, para impulsar tus propias automatizaciones.

Los webhooks te permiten crear o configurar integraciones que se suscriben a eventos en tiempo real de Social media studio. Cuando se dispara un evento, enviamos una carga HTTP POST a la URL que configuraste, de modo que tu aplicación reaccione al instante sin necesidad de sondeo.

## Fundamentos de configuración

Puedes configurar los webhooks directamente desde el panel en **Ajustes > Webhooks** o mediante nuestra API.

Cada webhook requiere:

* Una **URL de endpoint** válida (se recomienda encarecidamente HTTPS).
* Una o más **categorías de eventos** a las que quieras suscribirte.

| Propiedad | Valor |
| - | - |
| **Transporte** | HTTP POST |
| **Content-Type** | `application/json` |
| **Tiempo de espera** | 10 segundos |
| **Tamaño máximo de la carga** | 64 KB |

> [!NOTE]
>
> Tu plan determina cuántas suscripciones de webhook activas puedes mantener a la vez.

## Ejemplos de plantillas de carga

Usa `payloadTemplate` para personalizar el cuerpo JSON que se envía a tu endpoint. Las variables de plantilla disponibles son:

* `{{event}}`
* `{{category}}`
* `{{timestamp}}`
* `{{data}}`
* `{{data.any_field}}` (para campos anidados específicos del evento)

### 1) Envoltorio JSON genérico

```json theme={null}
{
  "event": "{{event}}",
  "category": "{{category}}",
  "occurredAt": "{{timestamp}}",
  "payload": {{data}}
}
```

### 2) Carga compatible con Discord

```json theme={null}
{
  "content": "🚀 {{event}}",
  "username": "Social media studio Webhooks",
  "embeds": [
    {
      "title": "Webhook Event",
      "description": "Post {{data.postId}} on {{data.platform}}",
      "fields": [
        { "name": "Category", "value": "{{category}}" },
        { "name": "Time", "value": "{{timestamp}}" }
      ]
    }
  ]
}
```

### 3) Carga al estilo Slack Block Kit

```json theme={null}
{
  "text": "Social media studio event: {{event}}",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": "*Event:* `{{event}}`\n*Category:* `{{category}}`\n*Post:* `{{data.postId}}`\n*Platform:* `{{data.platform}}`\n*At:* `{{timestamp}}`"
      }
    }
  ]
}
```

> [!NOTE]
>
> Si falta una variable en los datos del evento, el marcador permanece sin cambios (por ejemplo, `{{data.postId}}`).

## Límites y retención de webhooks

Según tu plan de suscripción, varían la retención de los registros de entrega de tus webhooks y el número de endpoints de webhook que puedes crear:

**Límites por plan**

| Plan | Suscripciones máx. | Retención de registros |
| - | - | - |
| **Lite** | 3 endpoints | 30 días |
| **Standard** | 10 endpoints | 60 días |
| **Advanced** | 25 endpoints | 90 días |

**Política de reintentos**

Si tu endpoint devuelve un error (estado HTTP `>= 400`) o agota el tiempo de espera (tras 10 segundos), Social media studio reintentará enviar el evento automáticamente.

El sistema hace **hasta 4 reintentos** con estos retrasos crecientes:

* **1.er reintento:** 30 segundos
* **2.º reintento:** 2 minutos
* **3.er reintento:** 10 minutos
* **4.º reintento:** 1 hora

> [!WARNING]
>
> Si un webhook falla **10 veces** consecutivas, se deshabilitará automáticamente para evitar sobrecargar el sistema.

## Eventos disponibles

Admitimos **162 eventos en 26 categorías**. Al suscribirte a una categoría, recibes todos sus eventos relacionados. También puedes suscribirte a eventos individuales para un control más preciso.

> **Publicación (22 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `post.created` | Se creó una publicación nueva |
> | `post.updated` | Se cambió el contenido o la programación de una publicación |
> | `post.deleted` | Se eliminó una publicación |
> | `post.bulk_deleted` | Se eliminaron varias publicaciones en una sola operación |
> | `post.published` | Una publicación se publicó correctamente en su plataforma |
> | `post.failed` | Una publicación programada no se pudo publicar |
> | `post.retried` | Una publicación fallida volvió a la cola |
> | `post.scheduled` | Una publicación se añadió a la cola de publicación |
> | `post.unscheduled` | Una publicación se quitó de la cola de publicación |
> | `post.resubmitted` | Una publicación rechazada se volvió a enviar para aprobación |
> | `post.first_comment_posted` | Se publicó el primer comentario de una publicación |
> | `post.first_comment_failed` | No se pudo publicar el primer comentario de una publicación |
> | `repurpose.batch_created` | Se creó un plan de reutilización a partir de contenido existente |
> | `repurpose.variations_generated` | Se generaron variaciones con IA para un plan de reutilización |
> | `repurpose.batch_committed` | Se programaron publicaciones a partir de un plan de reutilización |
> | `repurpose.batch_approved` | Se aprobaron las publicaciones de un plan de reutilización |
> | `repurpose.batch_rejected` | Se rechazaron las publicaciones de un plan de reutilización |
> | `repurpose.batch_paused` | Se pausó una cola evergreen |
> | `repurpose.batch_resumed` | Se reanudó una cola evergreen pausada |
> | `repurpose.batch_completed` | Una cola evergreen publicó todo lo que tenía previsto |
> | `repurpose.batch_failed` | No se pudieron crear algunas publicaciones de un plan de reutilización |
> | `repurpose.cycle_posted` | Una cola evergreen publicó su siguiente publicación |

> **Borrador (4 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `draft.created` | Se creó un borrador |
> | `draft.updated` | Se actualizó un borrador |
> | `draft.deleted` | Se eliminó un borrador |
> | `draft.converted` | Un borrador se convirtió en una publicación programada o publicada |

> **Aprobación (6 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `post.approval.requested` | Se envió una publicación para aprobación |
> | `post.approval.approved` | Se aprobó una publicación pendiente |
> | `post.approval.rejected` | Se rechazó una publicación pendiente |
> | `post.approval.comment_added` | Un revisor añadió un comentario a una publicación |
> | `post.approval.comment_updated` | Se editó el comentario de un revisor |
> | `post.approval.comment_deleted` | Se eliminó el comentario de un revisor |

> **Cuenta social (3 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `social.account_connected` | Se autorizó una cuenta de una red social |
> | `social.account_disconnected` | Se eliminó la conexión de una cuenta social |
> | `social.account_token_refreshed` | Se renovó el token OAuth de una cuenta social |

> **Multimedia (9 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `media.uploaded` | Se subió un archivo a la biblioteca multimedia |
> | `media.deleted` | Se eliminó un archivo multimedia |
> | `media.bulk_deleted` | Se eliminaron varios archivos multimedia en una sola operación |
> | `media.moved` | Un archivo multimedia se movió a otra carpeta |
> | `media.folder_created` | Se creó una carpeta multimedia nueva |
> | `media.folder_renamed` | Se renombró una carpeta multimedia |
> | `media.folder_deleted` | Se eliminó una carpeta multimedia |
> | `media.folder_moved` | Se movió una carpeta multimedia |
> | `media.canva_imported` | Se importó un diseño de Canva a la biblioteca |

> **Compositor (3 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `composer.reel_created` | Se creó un reel o vídeo nuevo en el compositor |
> | `composer.reel_updated` | Se actualizó un reel o vídeo existente |
> | `composer.reel_deleted` | Se eliminó un reel o vídeo |

> **Analíticas (1 evento)**
>
> | Evento | Descripción |
> | - | - |
> | `analytics.report_generated` | Se completó un ciclo programado de actualización de analíticas (cada 2 horas para los inquilinos con cuentas sociales conectadas) |

> **Mejor momento (2 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `best_time.recommendation_generated` | Se calculó por primera vez una recomendación del mejor momento para publicar para una cuenta |
> | `best_time.recommendation_recomputed` | Se actualizó una recomendación existente del mejor momento (cron diario o recálculo manual) |

> **Bandeja de entrada (16 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `inbox.message_received` | Se recibió un mensaje directo entrante |
> | `inbox.message_sent` | Se envió un mensaje directo saliente |
> | `inbox.comment_received` | Se recibió un comentario social entrante |
> | `inbox.comment_sent` | Se envió una respuesta saliente a un comentario social |
> | `inbox.comment_hidden` | Se ocultó un comentario social |
> | `inbox.comment_edited` | Se editó un comentario social |
> | `inbox.comment_removed` | Se eliminó por completo un comentario social |
> | `inbox.conversation_created` | Empezó un nuevo hilo de conversación |
> | `inbox.conversation_deleted` | Se eliminó una conversación |
> | `inbox.conversation_archived` | Se archivó una conversación |
> | `inbox.conversation_resolved` | Una conversación se marcó como resuelta |
> | `inbox.subscribed` | Se suscribió la bandeja de entrada para una cuenta o plataforma conectada |
> | `inbox.unsubscribed` | Se canceló la suscripción de la bandeja de entrada para una cuenta o plataforma conectada |
> | `inbox.saved_reply_created` | Se creó una plantilla de respuesta guardada |
> | `inbox.saved_reply_updated` | Se actualizó una plantilla de respuesta guardada |
> | `inbox.saved_reply_deleted` | Se eliminó una plantilla de respuesta guardada |

> **Biolink (17 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `biolink.created` | Se creó una página de biolink |
> | `biolink.updated` | Se actualizó una página de biolink |
> | `biolink.deleted` | Se eliminó una página de biolink |
> | `biolink.published` | Una página de biolink se hizo pública |
> | `biolink.unpublished` | Una página de biolink se hizo privada |
> | `biolink.theme_changed` | Un biolink cambió a otro tema predefinido |
> | `biolink.custom_theme_set` | Se configuró un tema personalizado de biolink |
> | `biolink.button_added` | Se añadió un botón a un biolink |
> | `biolink.button_updated` | Se actualizó un botón de biolink |
> | `biolink.button_removed` | Se eliminó un botón de biolink |
> | `biolink.button_reordered` | Se reordenaron los botones de un biolink |
> | `biolink.post_created` | Se añadió a un biolink la inserción de una publicación de Instagram |
> | `biolink.post_updated` | Se actualizó la inserción de una publicación en un biolink |
> | `biolink.post_deleted` | Se eliminó la inserción de una publicación de un biolink |
> | `biolink.post_reordered` | Se reordenaron las inserciones de publicaciones de un biolink |
> | `biolink.profile_image_uploaded` | Se subió una imagen de perfil de biolink |
> | `biolink.profile_image_deleted` | Se eliminó una imagen de perfil de biolink |

> **WhatsApp (6 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `whatsapp.template_created` | Se envió a aprobación una plantilla de mensaje de WhatsApp |
> | `whatsapp.template_deleted` | Se eliminó una plantilla de mensaje de WhatsApp |
> | `whatsapp.template_media_uploaded` | Se subió un archivo multimedia para respaldar una plantilla de WhatsApp |
> | `whatsapp.message_sent` | Se envió a un destinatario un mensaje de plantilla de WhatsApp |
> | `whatsapp.template_status_updated` | Meta aprobó, rechazó, pausó o deshabilitó una plantilla |
> | `whatsapp.phone_quality_updated` | Meta cambió la calificación de calidad o el límite de mensajes de un número |

> **IA (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `ai.text_generated` | Terminó una generación de texto con IA |
> | `ai.caption_generated` | Se generó el pie de una publicación con IA |
> | `ai.image_generated` | Una tarea de imagen con IA se completó correctamente |
> | `ai.image_failed` | Falló una tarea de imagen con IA |
> | `ai.image_deleted` | Se eliminó una imagen generada con IA |
> | `ai.video_generated` | Una tarea de vídeo con IA se completó correctamente |
> | `ai.video_failed` | Falló una tarea de vídeo con IA |
> | `ai.video_deleted` | Se eliminó un vídeo generado con IA |

> **Centro de conocimiento (4 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `knowledge.created` | Se añadió un documento de conocimiento al centro RAG |
> | `knowledge.updated` | Se actualizaron los metadatos o el cuerpo de la nota de un documento de conocimiento |
> | `knowledge.deleted` | Se eliminó un documento de conocimiento |
> | `knowledge.reprocessed` | Se volvió a ejecutar la extracción de texto de un documento de conocimiento |

> **Equipo (6 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `team.invitation_sent` | Se envió una invitación de equipo |
> | `team.invitation_cancelled` | Se canceló una invitación de equipo pendiente |
> | `team.member_joined` | Un miembro nuevo aceptó su invitación |
> | `team.member_left` | Un miembro dejó la organización voluntariamente |
> | `team.member_removed` | Un propietario eliminó a un miembro |
> | `team.permission_updated` | Se cambió el rol de un miembro |

> **Organización (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `organization.created` | Se creó una organización nueva |
> | `organization.deleted` | Se eliminó una organización |
> | `organization.member_left` | Un miembro dejó la organización |
> | `organization.name_updated` | Se actualizó el nombre de la organización |
> | `organization.logo_updated` | Se actualizó el logotipo de la organización |
> | `organization.description_updated` | Se actualizó la descripción de la organización |
> | `organization.theme_updated` | Se actualizó el tema de interfaz de la organización |
> | `organization.timezone_updated` | Se actualizó la zona horaria predeterminada de la organización |

> **Cuenta y perfil (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `account.updated` | Se actualizaron los ajustes de una cuenta social |
> | `account.token_expired` | Se detectó que el token de sesión de una cuenta social había caducado |
> | `account.token_expiring` | El acceso de una cuenta social caduca pronto; vuelve a conectarla para seguir publicando |
> | `profile.updated` | Se actualizó el perfil de un usuario |
> | `profile.email_updated` | Se cambió el correo electrónico de un usuario |
> | `profile.password_changed` | Se cambió la contraseña de un usuario |
> | `profile.avatar_uploaded` | Un usuario subió una foto de perfil |
> | `profile.avatar_deleted` | Un usuario eliminó su foto de perfil |

> **Autenticación (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `auth.registered` | Un usuario completó el registro |
> | `auth.login` | Un usuario inició sesión |
> | `auth.logout` | Un usuario cerró sesión |
> | `auth.email_verified` | Un usuario verificó su correo electrónico |
> | `auth.password_reset_requested` | Se envió un correo para restablecer la contraseña |
> | `auth.password_reset_completed` | Un usuario completó el restablecimiento de contraseña |
> | `auth.verification_resent` | Se reenvió un correo de verificación |
> | `auth.refresh_token_issued` | Se emitió un nuevo token de actualización |

> **Suscripción y facturación (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `subscription.created` | Comenzó una suscripción nueva |
> | `subscription.plan_changed` | Se aplicó el plan de la suscripción |
> | `subscription.canceled` | Se canceló una suscripción |
> | `subscription.payment_failed` | Falló el pago de una factura recurrente |
> | `subscription.expired` | Caducó una suscripción impagada o cancelada |
> | `subscription.upgraded` | Una suscripción pasó a un plan de nivel superior |
> | `subscription.downgrade_requested` | Se programó una bajada de plan para el final del periodo |
> | `subscription.downgrade_cancelled` | Se canceló una bajada de plan pendiente |

> **Clave de API (2 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `api_key.created` | Se generó una nueva clave de API de desarrollador |
> | `api_key.revoked` | Se revocó una clave de API |

> **Webhook (5 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `webhook.created` | Se creó una suscripción de webhook nueva |
> | `webhook.updated` | Se cambió el endpoint o las categorías de un webhook |
> | `webhook.deleted` | Se eliminó una suscripción de webhook |
> | `webhook.enabled` | Se habilitó una suscripción de webhook |
> | `webhook.disabled` | Se deshabilitó una suscripción de webhook |

> **Integración (2 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `integration.connected` | Se conectó una integración de terceros |
> | `integration.disconnected` | Se desconectó una integración de terceros |

> **Soporte (8 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `support.ticket_created` | Se creó un ticket de soporte nuevo |
> | `support.ticket_updated` | Se actualizó un ticket de soporte |
> | `support.ticket_closed` | Se cerró un ticket de soporte |
> | `support.ticket_assigned` | Un ticket de soporte se asignó a un agente |
> | `support.ticket_reply` | Un agente de soporte respondió a un ticket |
> | `support.ticket_message_received` | Se recibió un mensaje entrante de un ticket |
> | `support.ticket_message_sent` | Se envió un mensaje saliente de un ticket |
> | `support.ticket_reopened` | Se reabrió un ticket cerrado |

> **Plantilla (1 evento)**
>
> | Evento | Descripción |
> | - | - |
> | `template.rendered` | Se renderizó una plantilla de contenido sustituyendo sus campos |

> **MCP (1 evento)**
>
> | Evento | Descripción |
> | - | - |
> | `mcp.usage_logged` | Se registró y facturó una llamada a una herramienta MCP |

> **Cuota (1 evento)**
>
> | Evento | Descripción |
> | - | - |
> | `quota.limit_reached` | Se alcanzó una cuota a nivel de plan (p. ej., créditos de IA, llamadas a la API) |

> **Referidos (3 eventos)**
>
> | Evento | Descripción |
> | - | - |
> | `referral.code_created` | Se creó el código de referido de un usuario |
> | `referral.code_used` | Un registro nuevo usó el código del referidor |
> | `referral.reward_earned` | Se completó un referido y se concedieron créditos |

> **[¿Necesitas inspeccionar las cargas?](/es/webhooks/payloads.md)**
>
> Los webhooks siempre entregan eventos conformes a nuestro esquema oficial. Aprende a verificar las firmas y consulta cargas de ejemplo de cada categoría de eventos.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.