Última modificación: 28 de agosto de 2025
Run in Postman
En este artículo:
- Permisos necesarios
- Diferencias entre los endpoints de identificación interna y externa
- Endpoints de gestión de eventos
- Endpoints de asistencia a eventos
- Endpoints de estado del participante
- Endpoints de asociación de listas
- Configurar los valores de la aplicación
Permisos necesarios
Para hacer una solicitud a uno de los endpoints de eventos de marketing a través de la API, se requieren los siguientes permisos:crm.objects.marketing_events.read
: da permiso para obtener datos de eventos de marketing y asistencia.crm.objects.marketing_events.write
: da permisos para crear, eliminar o hacer cambios en la información de eventos de marketing.
Diferencias entre los endpoints de identificación interna y externa
Muchos de los endpoints que se indican a continuación ofrecen dos formas distintas de identificar un evento que se quiere obtener o actualizar. Aunque el resultado final para endpoints similares puede ser el mismo, difieren principalmente en los ID asociados que proporcionas:- Endpoints que utilizan ID externos: los endpoints que requieren los parámetros
externalEventId
yexternalAccountId
solo funcionarán en la misma aplicación que creó originalmente el evento. Por ejemplo, si has creado dos aplicaciones públicas, denominadas App A y App B, y has creado un evento de marketing mediante la autenticación y los ID asociados a App A, solo App B puede leer, cambiar y añadir nuevos participantes al evento. Si intentas acceder al mismo evento con App B utilizando los mismos externalEventId y externalAccountId, se producirá un error 404. - Endpoints que utilizan objectId: los endpoints que requieren
objectId
pueden usarse para acceder a un evento por cualquier aplicación con los permisos asociados que se mencionan en la sección anterior, independientemente de la aplicación que creó originalmente el evento. Si App A creó un evento de marketing, App B puede seguir leyendo, actualizando o añadiendo participantes a través de endpoints basados en elobjectId
.
Endpoints de gestión de eventos
Las siguientes secciones proporcionan información sobre las propiedades más comunes de los eventos y sobre cómo utilizar los distintos endpoints de gestión de eventos para crear, leer, actualizar y archivar eventos.Propiedades de eventos
Las siguientes propiedades están disponibles para obtener y actualizar información cuando se usan los endpoints de gestión de eventos:Parámetro | Tipo | Descripción |
---|---|---|
eventName | Cadena | El título del evento. |
eventType | Cadena | El tipo de evento (ejemplo, webinario, feria comercial, etc.). |
eventOrganizer | Cadena | La persona o la organización a cargo del evento. |
eventDescription | Cadena | Una descripción del evento. |
eventUrl | Cadena | Una URL a la que los usuarios pueden navegar para registrarse al evento o conocer más información. |
eventCancelled | Booleano | Si el evento está cancelado o no. |
eventStartTime | Cadena | Una marca de tiempo con el formato ISO 8601 de la hora de inicio del evento. |
eventEndTime | Cadena | Una marca de tiempo con el formato ISO 8601 de la hora de finalización del evento. |
Crear un evento
Para crear un evento de marketing puedes hacer una solicitudPOST
a /marketing/v3/marketing-events/events
e incluir los datos eventName
, externalEventId
, externalAccountId
y eventOrganizer
en el cuerpo de la solicitud. Si quieres, puedes indicar en tu solicitud las propiedades adicionales que figuran en la tabla anterior.
Por ejemplo, si el externalAccountId
de tu app es "12345"
y el externalEventId
de tu evento en la app es "67890"
, podrías crear un nuevo evento llamado "Winter webinar"
con una solicitud que se parecería a la siguiente:
Actualizar propiedades de eventos mediante ID externos
Para crear o actualizar eventos de marketing, haz una solicitudPOST
al endpoint /marketing/v3/marketing-events/events/upsert
. Puedes incluir cualquier customProperties
propiedad personalizada junto con cualquier otro detalle del evento (como su nombre, hora de inicio y descripción).
Si ya hay un evento de marketing con el ID especificado en tu solicitud, se actualizará. De lo contrario, se creará un nuevo evento.
Por ejemplo, la siguiente solicitud crearía un evento con el ID 4
llamado “Virtual cooking class”:
Actualizar propiedades de eventos mediante el objectId
Una vez creado un evento, puedes actualizar sus propiedades haciendo una solicitudPATCH
a /marketing/v3/marketing-events/{objectId}
.
- Para obtener el
objectId
de un evento de marketing específico, sigue las instrucciones de este artículo de la base de conocimientos para ver los detalles del evento en tu cuenta de HubSpot y luego, localiza el ID en el campo Record ID. La direcciónobjectId
también se devolverá en la respuesta cuando se cree un evento correctamente. - También puedes hacer una solicitud
GET
al punto de terminación/marketing/v3/marketing-events
descrito en la siguiente sección. - Si tienes la dirección
externalEventId
de un evento, puedes incluirla como ruta al hacer una solicitudGET
a/marketing/v3/marketing-events/{externalEventId}/identifiers
. La respuesta incluirá todos los eventos de marketing junto con los identificadores pertinentes de cada evento (es decir, elobjectId
del evento, suappInfo
, elmarketingEventName
, y elexternalAccountId
).
Detalles del evento
Para obtener una lista de todos los eventos de marketing junto con sus propiedades, haz una solicitudGET
a /marketing/v3/marketing-events
.
Si necesitas obtener los detalles de un evento de marketing específico por el Record ID de HubSpot, puedes proporcionar el ID como objectId en una solicitud GET
a /marketing/v3/marketing-events/{objectId}
.
Eliminar un evento
Para eliminar un evento de marketing, envía una solicitudDELETE
a /marketing/v3/marketing-events/{objectId}
con la dirección objectId
asociada al evento.
Si tiene éxito, recibirás una respuesta 204 No Content
.
Actualización en bloque de varios eventos
Para actualizar varios eventos de marketing en bloque, puedes hacer una solicitudPOST
a /marketing-events/v3/marketing-events/batch/update
y proporcionar las propiedades que quieres actualizar en cada evento dentro de la matriz de entradas del cuerpo de la solicitud.
Por ejemplo, si quieres actualizar varias propiedades de dos eventos de marketing con los ID de objeto 58237132332 y 54073507364 en una única solicitud, el cuerpo de la solicitud sería similar al siguiente:
Endpoints de asistencia a eventos
Los endpoints de estado de asistencia a un evento permiten registrar las actividades de registro de un contacto, como si se registró, asistió o canceló su registro en el evento. Por ejemplo, puedes usar este endpoint para registrar que un contacto de HubSpot se registró en un evento de marketing.Actualizar la asistencia mediante el evento objectId
Si quieres utilizar la direcciónobjectId
de un evento de email marketing, puedes utilizar el ID de contacto del contacto para el que quieres registrar el estado de participación, o bien puedes utilizar su dirección de email.
- Para utilizar el ID de un contacto, haz una solicitud POST a
/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/create
y, a continuación, proporciona el ID del contacto utilizando el campovid
dentro de la matrizinputs
del cuerpo de la solicitud. Por ejemplo, el cuerpo de la solicitud que se muestra a continuación proporciona un ejemplo de actualización de los datos de asistencia de un contacto con un ID47733471576
y especifica cuándo el asistente entró y salió del evento mediante las propiedadesjoinedAt
yleftAt
:
- Para utilizar el correo electrónico de un contacto, haz una solicitud POST a
/marketing/v3/marketing-events/{objectId}/attendance/{subscribeState}/email-create
y, a continuación, proporciona el correo electrónico del contacto utilizando el campoemail
dentro de la matrizinputs
del cuerpo de la solicitud.- Si estás creando un nuevo contacto, puedes incluir el campo
contactProperties
dentro de la matrizinputs
del cuerpo de la solicitud para definir cualquier propiedad asociada en el contacto recién creado. De lo contrario, si el contacto ya existe, el valorcontactProperties
, proporcionado en la solicitud, no se actualizará . - Por ejemplo, el cuerpo de la solicitud que se muestra a continuación proporciona un ejemplo de actualización de los datos de asistencia de un contacto con la dirección de correo electrónico
john@example.com
, y especifica cuándo el asistente entró y salió del evento en de los camposjoinedAt
yleftAt
dentro del objetoproperties
de la matrizinputs
:
- Si estás creando un nuevo contacto, puedes incluir el campo
objectId
: el Record ID del evento de marketing en tu cuenta de HubSpot. Consulta la sección anterior para obtener más detalles sobre el uso de objectId de un evento frente al uso de sus ID externos.subscriberState
: una enumeración que coincide con el nuevo estado de asistencia del contacto:REGISTERED
: indica que el contacto de HubSpot se registró en el evento.ATTENDED
: indica que el contacto de HubSpot asistió al evento. Si estás actualizando el estado de un contacto a ATTENDED, también puedes incluir las marcas de tiempojoinedAt
yleftAt
como parámetros en el cuerpo de la solicitud, especificados en el formato ISO8601 Instant.CANCELLED
: indica que el contacto de HubSpot, que se había registrado previamente en el evento, ha cancelado su registro.
Actualiza la asistencia utilizando los ID externos del evento
Nota:
Si antes utilizabas los endpoints/upsert
o /email-upsert
para actualizar el estado de un asistente, puedes utilizar en su lugar los endpoints que se indican a continuación. Sin embargo, en comparación con los endpoints de asistencia a eventos anteriores, el uso de estos endpoints no permitirá hacer lo siguiente:- Crear un nuevo contacto que aún no existe.
- Mostrar la cronología de eventos en la página de registro de un contacto.
- Especificar las propiedades
joinedAt
oleftAt
. - Proporcionar una respuesta detallada en caso de tener éxito.
externalEventId
de la aplicación, puedes utilizar los ID de contacto o la dirección de correo electrónico de los contactos existentes:
- Si quieres usar los ID de contacto de los contactos existentes:
- Haz una solicitud
POST
a/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/create
, utilizando el ID del evento desde tu aplicación externa como elexternalEventId
. - En el cuerpo de la solicitud, proporciona un objeto
inputs
que incluya los siguientes campos:interactionDateTime
: la fecha y la hora en las que el contacto se suscribió al evento.vid
: el ID de contacto de un contacto existente.
- Haz una solicitud
- Si quieres usar la dirección de correo electrónico de uno de los asistentes al evento:
- Haz una solicitud
POST
a/marketing/v3/marketing-events/attendance/{externalEventId}/{subscriberState}/email-create
. - En el cuerpo de la solicitud, proporciona un objeto
inputs
que incluya los siguientes campos:interactionDateTime
: la fecha y la hora en las que el contacto se suscribió al evento.email
: la dirección de correo electrónico del asistente como el valor del campo de correo electrónico dentro de una entrada.
- Si la dirección de correo electrónico que incluyes no coincide con la dirección de un contacto existente, se creará un nuevo contacto.
- Haz una solicitud
externalEventId
: el ID del evento de marketing. Consulta la sección anterior para obtener más detalles sobre el uso de objectId de un evento frente al uso de sus ID externos.subscriberState
: una enumeración que coincide con el nuevo estado de asistencia del contacto:REGISTERED
: indica que el contacto de HubSpot se registró en el evento.ATTENDED
: indica que el contacto de HubSpot asistió al evento. Si estás actualizando el estado de un contacto a ATTENDED, también puedes incluir las marcas de tiempojoinedAt
yleftAt
como parámetros en el cuerpo de la solicitud, especificados en el formato ISO8601 Instant.CANCELLED
: indica que el contacto de HubSpot, que se había registrado previamente en el evento, ha cancelado su registro.
Nota:
Estas API son idempotentes siempre que el ID del contacto y el valorinteractionDateTime
del evento no cambien. Así, puedes configurar de forma segura el estado de asistencia varias veces sin que HubSpot cree eventos duplicados en las propiedades de eventos de marketing.Endpoints de estado del participante
Puedes usar los endpoints de participación para recuperar los datos de los participantes en tus eventos de marketing. Puedes consultar datos como las métricas agregadas de un evento en específico, así como los datos de participación de un contacto o evento específico. A continuación puedes consultar los endpoints de participación disponibles. Para consultar información completa de todos los parámetros disponibles con cada endpoint, consulta la documentación de referencia.Nota:
Los números de actividades que se muestran en la página de eventos de marketing de tu cuenta de HubSpot pueden diferir de las métricas correspondientes del endpoint de la API de contadores de participación.Por ejemplo, si un participante se registró para un evento, luego canceló y luego se volvió a registrar para el mismo evento, cada una de esas actividades se incluirá en los totales que ves en la interfaz de usuario de eventos de marketing de tu cuenta. Si usas los endpoints del estado del participante que se indican a continuación, solo se incluye el estado actual de un participante en el contador asociado a esa métrica (por ejemplo,attended
, registered
, cancelled
o noShows
).Leer las participaciones de un contacto específico
Para obtener los datos de participación en un evento de un contacto en específico, realiza una solicitudGET
a /marketing/v3/marketing-events/participations/contacts/{contactIdentifier}/breakdown
, utilizando el ID o la dirección de correo electrónico del contacto como parámetro de ruta contactIdentifier
.
La respuesta incluirá un resumen de la participación del contacto en el evento, en el campo properties
:
Leer los datos del desglose de participación
Para consultar un desglose de los datos de participación en un evento específico, utiliza elexternalAccountId
y el externalEventId
del evento para hacer una solicitud GET
a /marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}/breakdown
.
Consultar contadores de participación
Para consultar un resumen agregado de la participación en un evento, utiliza elexternalAccountId
y el externalEventId
del evento para hacer una solicitud GET
a /marketing/v3/marketing-events/participations/{externalAccountId}/{externalEventId}
.
La respuesta incluirá los recuentos totales de asistencia:
Filtrar los datos de desglose de participación
Cuando obtienes datos de desglose o de participación en eventos de un contacto específico, puedes filtrar los datos resultantes usando los campos contactIdentifier, estado, límite o después como parámetros de consulta en tu solicitud.Parámetro de consulta | Tipo | Descripción |
---|---|---|
contactIdentifier | Cadena | La dirección de correo electrónico o el ID de un contacto específico |
state | Enumeración | El estado de participación del evento. Los estados de participación son:
|
limit | Número | El límite de los resultados devueltos. De forma predeterminada, el límite se define como 10. El intervalo válido es de 1 a 100. |
after | Número | Se utiliza para la paginación entre los resultados de la respuesta. Consulta la información proporcionada en la página anterior de datos de respuesta para determinar el próximo índice de resultados que se devolverá. |
Endpoints de asociación de listas
Puedes usar los endpoints descritos en las secciones siguientes para gestionar asociaciones entre listas y eventos de marketing. Muchos de estos endpoints requieren unlistId
como parámetro de ruta, que puedes encontrar en la página de detalles de la lista en tu cuenta de HubSpot:
- En tu cuenta de HubSpot, navega a CRM > Listas.
- Haz clic en el nombre de una lista.
- En la parte superior derecha, haz clic en Detalles.
- En el panel derecho, el ID de la lista aparecerá en ID de listas para integraciones de API. Puedes hacer clic en Copiar ID de lista para copiar el ID en el portapapeles.

- En tu cuenta de HubSpot, navega a CRM > Contactos.
- En la parte superior izquierda, haz clic en Contactos y en el menú desplegable, selecciona Eventos de marketing.
- Haz clic en el nombre de un evento de marketing.
- En la pestaña Rendimiento, haz clic en Listas para ampliar la sección y, a continuación, haz clic en la pestaña Listas agregadas a través de asociaciones.

Crear una asociación entre una lista y un ID de evento de marketing
Para crear una nueva asociación entre un evento de marketing y una lista existente, haz una solicitudPUT
a /marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}
.
Si tiene éxito, recibirás una respuesta 204 No content
.
Crear una asociación entre una lista y un evento externo e ID de cuenta
Para crear una nueva asociación entre un evento de marketing y una lista existente utilizando el ID de cuenta externa y el ID de evento externo, haz una solicitudPUT
a /marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}
.
Si tiene éxito, recibirás una respuesta 204 No content
.
Obtener las listas asociadas a un evento de marketing utilizando el ID del evento
Para obtener todas las listas asociadas a un evento de marketing, haz una solicitudGET
a /marketing/v3/marketing-events/associations/{marketingEventId}/lists
.
La respuesta tendrá el siguiente formato:
Obtener las listas asociadas a un evento de marketing utilizando el ID y las cuentas externas
También puedes obtener listas asociadas a un evento de marketing utilizando el ID de una cuenta externa y el ID de un evento externo. Para ello, haz una solicitudGET
a /marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists
.
Eliminar la asociación de una lista mediante un ID de evento de marketing
Para eliminar la asociación de una lista con un evento de marketing utilizando el ID del evento de marketing, haz una solicitudDELETE
a /marketing/v3/marketing-events/associations/{marketingEventId}/lists/{listId}
.
Si tiene éxito, recibirás una respuesta 204 No content
.
Borrar la asociación de una lista mediante un evento externo y el ID de una cuenta
Para eliminar la asociación de una lista y un evento de marketing utilizando el ID de una cuenta externa y el ID de un evento externo, haz una solicitudDELETE
a /marketing/v3/marketing-events/associations/{externalAccountId}/{externalEventId}/lists/{listId}
.
Si tiene éxito, recibirás una respuesta 204 No content
.
Configurar los valores de la aplicación
Se requiere cierta configuración para permitir que los eventos de marketing se sincronicen correctamente con HubSpot. Si envías a HubSpot un cambio de estado del asistente a un evento (por ejemplo, un registro en el evento o un evento cancelado), HubSpot primero comprobará si hay un evento de marketing con el ID del evento especificado. Si no es así, HubSpot llamará al punto de conexión configurado de tu aplicación para obtener los detalles del evento de marketing, luego creará el evento en HubSpot y luego, publicará el cambio de estado del asistente. Esto se proporciona por conveniencia; sin embargo, se recomienda que crees los eventos de marketing mediante los métodos CRUD que se detallan en este documento y no confíes en esta funcionalidad para crear tus eventos de marketing en HubSpot.Paso 1: Crea una API en tu aplicación
Para que esta funcionalidad sea posible, HubSpot requiere que cada aplicación que use eventos de marketing defina una API para obtener información sobre un evento específico. Requisitos:- Acepta:
externalAccountId
: un parámetro de consulta que especifica el accountId del cliente en la aplicación externa.appId
: un parámetro de consulta que especifica el ID de la aplicación de HubSpot que solicita los detalles del evento. Este será el ID de tu aplicación.externalEventId
: un parámetro de ruta en la URL de la solicitud que especifica el ID del evento en la aplicación externa sobre la que HubSpot requiere detalles.
- Devuelve:
- Un objeto JSON que proporciona los detalles del evento de marketing, y que incluye los campos de esta tabla:
eventName
| verdadero | cadena | El nombre del evento de marketing |
| eventOrganizer
| verdadero | cadena | El nombre del organizador del evento de marketing. |
| eventType
| falso | cadena | Describe qué tipo de evento es este. Por ejemplo, WEBINAR
, CONFERENCE
, WORKSHOP
| . |
| startDateTime
| falso | cadena (fecha y hora) | La fecha y la hora de inicio del evento de marketing. |
| endDateTime
| falso | cadena (fecha y hora) | La fecha y la hora de finalización del evento de marketing. |
| eventDescription
| falso | cadena (fecha y hora) | La descripción del evento de marketing. |
| eventUrl
| falso | cadena (fecha y hora) | Una URL en la aplicación del evento externo donde se realiza el evento de marketing. |
| eventCancelled
| falso | boolenano | Indica si el evento de marketing se canceló. El valor predeterminado es false
|
HubSpot también enviará un encabezado X-HubSpot-Signature-v3
que puedes usar para verificar que la solicitud proviene de HubSpot. Consulta información sobre las firmas de solicitud para obtener detalles adicionales sobre la firma y cómo validarla.
Paso 2: Da a HubSpot la ruta URL a la API
Ahora que has creado la API en tu aplicación que devolverá un objeto con los detalles de un evento de marketing específico, deberás proporcionar a HubSpot la ruta de la URL a la API haciendo una solicitudPOST
a /marketing/v3/marketing-events/{appId}/settings
. Esto permitirá a HubSpot determinar cómo realizar solicitudes a tu aplicación para obtener los detalles de un evento de marketing.
En el cuerpo de tu solicitud POST
, especifica la URL utilizando el campo eventDetailsURL
. El eventDetailsURL
debe cumplir con los siguientes requisitos:
- Contener una secuencia de caracteres
%s
, que HubSpot utilizará para hacer la substitución en el ID del evento (externalEventId
) como parámetro de ruta. - Debe ser la ruta completa al recurso API, incluido el prefijo
https://
y el nombre de dominio (por ejemplo,my.event.app
).
eventDetailsURL
de https://my.event.app/events/%s
y necesitas hacer una solicitud para obtener detalles de un evento con el ID 1234-event-XYZ
, de la aplicación HubSpot con el ID app-101
y la cuenta con el ID ABC-account-789
, HubSpot hará una solicitud GET
a:
https://my.event.app/events/1234-event-XYZ?appId=app-101&externalAccountId=ABC-account-789