Última modificación: 28 de agosto de 2025
Run in Postman
- Debes configurar una aplicación de HubSpot para usar webhooks mediante la suscripción a los eventos sobre los que deseas recibir notificaciones y la especificación de una URL para enviar esas notificaciones. Consulta la documentación de requisitos previos para obtener más detalles sobre cómo crear una aplicación.
- Debes implementar un punto de terminación de HubSpot disponible públicamente y seguro (HTTPS) para esa URL que pueda manejar las cargas útiles del webhook especificadas en esta documentación.
Nota:
- También puedes gestionar webhooks en una aplicación privada. En aplicaciones privadas, la configuración del webhook solo se puede editar en la configuración de la aplicación privada y actualmente no se puede editar a través de la API.
- Nota: para suscribirte a los webhooks de conversaciones, necesitas acceder a la bandeja de entrada de conversaciones y a las API de mensajes, que se encuentran actualmente en versión beta.
Alcances
Para usar webhooks para suscribirte a eventos de CRM, tu aplicación deberá estar configurada para requerir el alcance asociado que corresponde al tipo de objeto de CRM al que quieres suscribirte. Por ejemplo, si deseas suscribirte a eventos de contacto, debersá solicitar el alcancecrm.objects.contacts.read
.
- Si vas a crear suscripciones en la interfaz de usuario de configuración de tu aplicación pública, se te pedirá que agregues el ámbito requerido en el panel Crear nuevas suscripciones a webhook antes de que termines de crear tu suscripción.
- Si vas a crear una suscripción realizando una solicitud
POST
al punto de terminación/webhooks/v3/{appId}/subscriptions
, la respuesta incluirá un error que proporcionará el nombre del ámbito que tendrás que configurar en la interfaz de usuario de configuración de tu aplicación pública. - Si tu aplicación ya está usando webhooks, no podrás eliminar ningún ámbito requerido por las suscripciones de webhook activas sin primero pausar y eliminar las suscripciones.
- Puedes revisar los alcances requeridos para cada tipo de suscripción de webhook en la siguiente tabla.
Configuración de webhook
Antes de configurar tus suscripciones de webhook, debes especificar una URL a la que se enviarán esas notificaciones. Sigue las instrucciones de las secciones a continuación para obtener información sobre cómo configurar completamente las suscripciones para tu aplicación.Nota:
- La configuración de Webhook puede ser almacenada en cache hasta por cinco minutos. Cuando se realizan cambios en la URL del webhook, en los límites de concurrencia o en la configuración de suscripción, puede tardar hasta cinco minutos para ver tus cambios entren en vigencia.
- HubSpot establece un límite de concurrencia de 10 solicitudes al enviar datos de eventos de suscripción asociados con una cuenta que instaló tu aplicación. Este límite de concurrencia es el número máximo de solicitudes en curso que HubSpot intentará a la vez. Cada solicitud puede contener hasta 100 eventos.
Administrar la configuración de tu cuenta de desarrollador
Puedes administrar tu URL y el límite de supresión a través de la página de configuración de tu aplicación en tu cuenta de desarrollador- En tu cuenta de desarrollador, navega al panel de tu aplicación.
- Haz clic en el nombre de la aplicación para la que deseas configurar los webhooks.

- En el menú de la barra lateral izquierda, ve a Webhooks.
- En el campo URL de destino, escribe la URL a la que HubSpot realizará una solicitud POST cuando se desencadenen eventos.
- Utiliza la configuración de Supresión de eventos para ajustar el número máximo de eventos que HubSpot intentará enviar.

- Haz clic en Guardar.
Administrar la configuración a través de API
Puedes usar los siguientes puntos de terminación y tu clave de API de desarrollador para configurar de forma programática la configuración de webhook para una aplicación. Para ver cualquier configuración de webhook configurada actualmente para una aplicación, realiza una solicitudGET
a webhooks/v3/{appId}/settings
.
Deberás incluir el ID de la aplicación en la solicitud, que puedes encontrar debajo del nombre de la aplicación en tu panel de control de Aplicaciones o en la pestaña Autenticación en la configuración de tu aplicación.
El objeto de configuración contiene los siguientes campos:
Campo | Description |
---|---|
webhookUrl | La URL a la que HubSpot enviará notificaciones de webhook. Esta URL se debe notificar por HTTPS. |
maxConcurrentRequests | El límite de concurrencia para la URL del webhook. Este valor debe ser un número mayor que cinco. |
PUT
a webhooks/v3/{appId}/settings
e incluye los siguientes campos en el cuerpo de la solicitud:
Campo | Description |
---|---|
targetUrl | La URL disponible públicamente para que HubSpot llame donde se entregarán las cargas útiles de eventos. |
throttling | Configurar los detalles de la supresión de webhooks en este objeto. El objeto de supresión incluye los campos period y maxConcurrentRequests . |
period | Escala de tiempo para esta configuración. Puede ser SECONDLY (por segundo) o ROLLING_MINUTE (por minuto). |
maxConcurrentRequests | El número máximo de solicitudes HTTP que HubSpot intentará hacer a tu aplicación en un plazo determinado por period . |
Suscripciones a webhooks
Una vez que hayas establecido las configuraciones de tu URL de webhook y del límite de supresión de eventos, deberás crear una o más suscripciones. Las suscripciones a webhooks le indican a HubSpot los eventos que te gustaría recibir a una aplicación en particular. Las suscripciones se aplican a todos los clientes que han instalado tu integración. Esto significa que solo debes especificar las suscripciones que necesitas una vez. Una vez que hayas activado una suscripción para una aplicación, comenzarás automáticamente a recibir webhooks para todos los clientes que hayan instalado tu aplicación y tu integración comenzará a recibir desencadenantes de webhook desde cualquier cliente nuevo. Para todas las suscripciones de webhookassociationChange
, el webhook activará dos eventos para ambos lados de la asociación.
- Al asociar dos contactos, una suscripción a
contact.associationChange
activará dos eventos, que representan elcontacto 1 al contacto 2
y elcontacto 2 al contacto 1
. - Al asociar una empresa, si tienes dos suscripciones de webhook
contact.associationChange
ycompany.associationChange
, recibirás dos eventos. Estos representaránel contacto 1 a la empresa 1
yla empresa 1 al contacto 1
.
eventType
al crear suscripciones a través de API:
Tipo de suscripción | Alcance requerido | Descripción |
---|---|---|
contact.creation | crm.objects.contacts.read | Recibir una notificación si se crea algún contacto en la cuenta de un cliente. |
contact.deletion | Recibe una notificación si se elimina algún contacto en la cuenta de un cliente. | |
contact.merge | Recibe una notificación si se combinó un contacto con otro. | |
contact.associationChange | Recibe una notificación si un contacto tiene una asociación agregada o eliminada entre él y otro objeto de webhook compatible (contacto, empresa, negocio, ticket, elemento de línea o producto). | |
contact.restore | Recibe una notificación si se restaura un contacto después de la eliminación. | |
contact.privacyDeletion | Recibe una notificación si se elimina un contacto por motivos de cumplimiento de la privacidad. | |
contact.propertyChange | Recibe una notificación si se cambia una propiedad específica para cualquier contacto en una cuenta. | |
company.creation | crm.objects.companies.read | Recibe una notificación si se crea alguna empresa en la cuenta de un cliente. |
company.deletion | Recibe una notificación si se elimina alguna empresa en la cuenta de un cliente. | |
company.propertyChange | Recibe una notificación si se cambia una propiedad específica para cualquier empresa en la cuenta de un cliente. | |
company.associationChange | Recibe una notificación si una empresa tiene una asociación agregada o eliminada entre ella y otro objeto de webhook compatible (contacto, empresa, negocio, ticket, elemento de línea o producto). | |
company.restore | Recibe una notificación si una empresa se restaura después de la eliminación. | |
company.merge | Recibir una notificación si una empresa se fusionó con otra. | |
deal.creation | crm.objects.deals.read | Recibe una notificación si se crea un negocio en la cuenta de un cliente. |
deal.deletion | Recibe una notificación si se elimina algún negocio en la cuenta de un cliente. | |
deal.associationChange | Recibir una notificación si un negocio tiene una asociación agregada o eliminada entre él y otro objeto de webhook compatible (contacto, empresa, negocio, ticket, elemento de línea o producto). | |
deal.restore | Recibe una notificación si se restaura un negocio después de la eliminación. | |
deal.merge | Recibe una notificación si un negocio se fusiona con otro. | |
deal.propertyChange | Recibe una notificación si se cambia una propiedad específica para cualquier negocio en la cuenta de un cliente. | |
ticket.creation | tickets | Recibe una notificación si se crea un ticket en la cuenta de un cliente. |
ticket.deletion | Recibe una notificación si se elimina algún ticket en la cuenta de un cliente. | |
ticket.propertyChange | Recibir una notificación si se cambia una propiedad específica para cualquier ticket en la cuenta de un cliente. | |
ticket.associationChange | Recibe una notificación si un ticket tiene una asociación agregada o eliminada entre él y otro objeto de webhook compatible (contacto, empresa, negocio, ticket, elemento de línea o producto). | |
ticket.restore | Recibe una notificación si se restaura un ticket después de su eliminación. | |
ticket.merge | Recibe una notificación si un ticket se combinó con otro. | |
product.creation | e-commerce | Recibe una notificación si se crea algún producto en la cuenta de un cliente. |
product.deletion | Recibe una notificación si se elimina algún producto en la cuenta de un cliente. | |
product.restore | Recibe una notificación si un producto se restaura después de su eliminación. | |
product.merge | Recibe una notificación si un producto se combinó con otro. | |
product.propertyChange | Recibe una notificación si se cambia un producto específico para cualquier producto en la cuenta de un cliente. | |
line_item.creation | Recibe una notificación si se crea algún elemento de línea en la cuenta de un cliente. | |
line_item.deletion | Recibe una notificación si se elimina algún elemento de línea en la cuenta de un cliente. | |
line_item.associationChange | Recibe una notificación si un elemento de línea tiene una asociación agregada o eliminada entre él y otro objeto de webhook compatible (contacto, empresa, negocio, ticket, elemento de línea o producto). | |
line_item.restore | Recibe una notificación si un elemento de línea se restaura después de la eliminación. | |
line_item.merge | Recibe una notificación si un elemento de línea se combinó con otro. | |
line_item.propertyChange | Recibe una notificación si se cambia una propiedad específica para cualquier elemento de línea en la cuenta de un cliente. |
Tipo de suscripción | Alcance | Descripción |
---|---|---|
conversation.creation | conversations.read | Recibe notificaciones si se crea un nuevo hilo en una cuenta. |
conversation.deletion | Recibe una notificación si un hilo se archiva o se elimina temporalmente en una cuenta. | |
conversation.privacyDeletion | Recibe una notificación si un hilo se elimina permanentemente en una cuenta. | |
conversation.propertyChange | Recibe una notificación si se ha cambiado una propiedad en un hilo. | |
conversation.newMessage | Recibe una notificación si se ha recibido un nuevo mensaje en un hilo. |
num_unique_conversion_events
hs_lastmodifieddate
assignedTo
: el hilo de conversación se ha reasignado o no asignado. Si se reasignó el hilo, el valorpropertyValue
será un ID de actor en la carga útil de webhooks; si no se asigna, estará vacío.status
: el estado del hilo de conversación ha cambiado. En la carga útil de webhooks, el valorpropertyValue
estaráOPEN
oCLOSED
.isArchived
: se ha restaurado el hilo de conversación. El valorpropertyValue
en la carga útil de webhooks siempre seráFALSE
.
Crear suscripciones en tu cuenta de desarrollador
Puedes crear suscripciones de webhook en tu cuenta de desarrollador de HubSpot.- En tu cuenta de desarrollador de HubSpot, navega al panel de Aplicaciones.
- Haz clic en el nombre de una aplicación.
- En el menú de la barra lateral izquierda, ve a Webhooks.
- Haz clic en Crear suscripción.
- En el panel derecho, haz clic en el menú desplegable ¿Qué tipos de objetos? y selecciona los objetos para los que deseas crear una suscripción.
- Haz clic en el menú desplegable ¿Escuchar cuáles eventos? y selecciona los tipos de eventos.

- Si estás creando una suscripción para eventos de cambio de propiedad, haz clic en el menú desplegable ¿Qué propiedades? y selecciona las propiedades que quieres escuchar.

- Haz clic en Suscribirse.
- En la sección Suscripciones de eventos, coloca el cursor sobre el tipo de objeto y haz clic en Ver suscripciones.
- Selecciona la casilla de comprobación junto al evento y, a continuación, en el encabezado de la tabla, haz clic en Activar.

Crear suscripciones a través de la API
Puedes crear suscripciones mediante programación usando los siguientes puntos de terminación. Deberás usar tu clave de API de desarrollador al realizar solicitudes a estos puntos de terminación. Un objeto de suscripción puede incluir los siguientes campos:Campo | Description |
---|---|
id | Un número que representa el ID único de una suscripción. |
createdAt | El tiempo en milisegundos en que se creó esta suscripción. |
createdBy | El ID de usuario asociado con el usuario que creó la suscripción. |
active | Esto indica si la suscripción está activada o no y si activa notificaciones de forma activa. El valor puede ser true o false . |
eventType | El tipo de suscripción. La tabla al comienzo de esta sección incluye los tipos de suscripción disponibles. |
propertyName | El nombre de la propiedad en la que la suscripción escuchará los cambios. Esto solo es necesario para los tipos de suscripción de cambio de propiedad. |
Obtener suscripciones
Para recuperar la lista de suscripciones, realiza una solicitudGET
a webhooks/v3/{appId}/subscriptions
.
La respuesta será una matriz de objetos que representan tus suscripciones. Cada objeto incluirá información sobre la suscripción, como el ID, la fecha de creación, el tipo y si está habilitado actualmente. Así es como se vería un ejemplo de respuesta:
Crear una nueva suscripción
Para crear una nueva suscripción, haz una solicitudPOST
a webhooks/v3/{appId}/subscriptions
.
En el cuerpo de la solicitud, puedes incluir los siguientes campos:
Campo | Description |
---|---|
eventType | El tipo de suscripción. |
propertyName | El nombre de la propiedad en la que la suscripción escuchará los cambios. Esto solo es necesario para los tipos de suscripción de cambio de propiedad. |
active | Esto indica si la suscripción está activada o no y si activa notificaciones de forma activa. El valor puede ser true o false . |
id
, createdAt
o createdBy
, ya que esos campos se establecen automáticamente.
Por ejemplo, el cuerpo de tu solicitud puede tener un aspecto similar al siguiente:
eventType
debe ser un tipo de suscripción válido según se define en la sección anterior y el propertyName
debe ser un nombre de propiedad válido. Si un cliente no tiene una propiedad definida que coincida con este valor, esta suscripción no generará notificaciones.
Actualizar una suscripción
Para activar o pausar una suscripción, haz una solicitudPUT
a webhooks/v3/{appId}/subscriptions/{subscriptionId}
.
En el cuerpo de la solicitud, incluye lo siguiente:
Campo | Description |
---|---|
active | Esto indica si la suscripción está activada o no y si activa notificaciones de forma activa. El valor puede ser true o false . |
Eliminar una suscripción
Para eliminar una suscripción, haz una solicitudDELETE
a webhooks/v3/{appId}/subscriptions/{subscriptionId}
.
Cargas útiles de webhook
El punto de terminación de la URL de destino que especifiques en la configuración de webhooks de tu aplicación recibirá solicitudesPOST
que contienen datos con formato JSON de HubSpot.
Para asegurarte de que las solicitudes que recibes en tu punto de terminación de webhook provengan de HubSpot, HubSpot rellena un encabezado de X-HubSpot-Signature
con un hash SHA-256 creado con el secreto del cliente de tu aplicación combinado con los detalles de la solicitud. Más información sobre cómo validar firmas de solicitudes.
Utiliza las tablas a continuación para ver detalles sobre los campos que pueden estar contenidos en la carga útil.
Campo | Description |
---|---|
objectId | El ID del objeto que fue creado, cambiado o eliminado. Para contactos, este es el ID de contacto; para empresas, el ID de empresa; para negocios, el ID de negocio; y para conversaciones el ID de hilo. |
propertyName | Esto solo se envía para las suscripciones de cambio de propiedad y es el nombre de la propiedad que se cambió. |
propertyValue | Esto solo se envía para suscripciones de cambio de propiedad y representa el nuevo valor establecido para la propiedad que desencadenó la notificación. |
changeSource | La fuente del cambio. Puede ser cualquiera de las fuentes de cambios que aparecen en los historiales de las propiedades de contactos. |
eventId | El ID único del evento que desencadenó esta notificación. No se garantiza que este valor sea único. |
subscriptionId | El ID de la suscripción que desencadenó una notificación sobre el evento. |
portalId | El ID de cuenta de HubSpot del cliente donde ocurrió el evento. |
appId | El ID de tu aplicación. Esto se usa en caso de que tengas varias aplicaciones que apunten a la misma URL de webhook. |
occurredAt | Cuándo ocurrió este evento como una marca de tiempo de milisegundos. |
eventType | El tipo de evento para el que es esta notificación. Revisa la lista de tipos de suscripción admitidos en la sección de suscripción de webhooks anterior. |
attemptNumber | A partir de 0, el número de intentos es para notificar a su servicio de este evento. Si se vence el tiempo de espera de tu servicio o emite un mensaje de error, tal como se describe en la sección Reintentos a continuación, HubSpot intentará enviar la notificación de nuevo. |
messageId | Esto solo se envía cuando un webhook está escuchando nuevos mensajes en un hilo. Es el ID del nuevo mensaje. |
messageType | Esto solo se envía cuando un webhook está escuchando nuevos mensajes en un hilo. Representa el tipo de mensaje que estás enviando. Este valor puede ser MESSAGE o COMMENT . |
Campo | Description |
---|---|
primaryObjectId | El ID del ganador de la combinación, que es el registro que permanece después de la combinación. En la interfaz de usuario de fusión de HubSpot, este es el registro de la derecha. |
mergedObjectIds | Una matriz de identificadores que representan los registros que se fusionan en el ganador de la fusión. En la interfaz de usuario de fusión de HubSpot, este es el registro a la izquierda. |
newObjectId | El ID del registro que se crea como resultado de la combinación. Esto es independiente de primaryObjectId porque en algunos casos se crea un nuevo registro como resultado de la combinación. |
numberOfPropertiesMoved | Un entero que representa cuántas propiedades se transfirieron durante la combinación. |
Campo | Description |
---|---|
associationType | El tipo de asociación, que será una de las siguientes:
|
fromObjectId | El ID del registro desde el que se realizó el cambio de asociación. |
toObjectId | El ID del registro secundario en el evento de asociación. |
associationRemoved | Un booleano que representa lo siguiente:
|
isPrimaryAssociation | Un booleano que representa lo siguiente:
|
occurredAt
para cada notificación para determinar cuándo ocurrió el evento que desencadenó la notificación.
Además, HubSpot no garantiza que solo recibas una notificación para un evento. Aunque esto debería ser poco común, es posible que HubSpot te envíe la misma notificación varias veces.
Eliminaciones de contactos conforme con la privacidad
Los usuarios de HubSpot pueden eliminar permanentemente un registro de contacto para cumplir con las leyes de privacidad. Más información sobre cómo realizar una eliminación conforme al RGPD. Puedes suscribirte al tipo de suscripcióncontact.privacyDeletion
para recibir notificaciones de webhook cuando un usuario realice una eliminación de contactos conforme con la privacidad.
Las notificaciones de eliminación conforme con la privacidad tienen un comportamiento especial
- Un evento de eliminación conforme con la privacidad también desencadenará el evento de eliminación de contacto, por lo que recibirás dos notificaciones si estás suscrito a ambos eventos.
- Estas notificaciones no se enviarán necesariamente en ningún orden en particular o en el mismo lote de mensajes. Deberás usar el objectId para que coincida con los mensajes separados.
Seguridad
Para asegurarte de que las solicitudes que recibes en tu punto de terminación de webhook provienen de HubSpot, HubSpot llena un encabezado deX-HubSpot-Signature
con un hash SHA-256 de la concatenación del secreto de aplicación para tu aplicación y el cuerpo de la solicitud que estamos enviando.
Para verificar esta firma, concatena el secreto de la aplicación de tu aplicación y el cuerpo de solicitud no interpretado de la solicitud que estás manejando y obtén un hash SHA-256 del resultado. Compara el hash resultante con el valor de X-HubSpot-Signature
. Si estos valores coinciden, se confirma que esta solicitud es proveniente de HubSpot. O bien, la solicitud provino de otra persona que conoce el secreto de tu aplicación. Es importante mantener este valor en secreto.
Si estos valores no coinciden, es posible que esta solicitud haya sido manipulada en tránsito o que alguien esté falsificando notificaciones de webhook a tu punto de terminación.
Más información sobre la validación de solicitudes de firmas.
Reintentos
Si tu servicio tiene problemas para manejar las notificaciones en cualquier momento, HubSpot intentará volver a enviar notificaciones fallidas hasta 10 Veces. HubSpot lo intentará nuevamente en los casos siguientes:- Falló la conexión: HubSpot no puede abrir una conexión http a la URL de webhook proporcionada
- Tiempo de espera: tu servicio demora más de 5 segundos en enviar una respuesta a un lote de notificaciones
- **Códigos de error:**tu servicio responde con cualquier código de estado HTTP (4xx o 5xx).
Límites
Las solicitudes dePOST
que HubSpot envía a tu servicio a través de tus suscripciones de webhook no contarán para los límites de tasa de API de tu aplicación.
Puedes crear un máximo de 1000 suscripciones por aplicación. Si intentas crear más, recibirá una solicitud incorrecta 400 con el siguiente cuerpo: