Última modificación: 11 de septiembre de 2025
Si creaste previamente una aplicación privada en la versión anterior del marco para desarrolladores, puedes migrar manualmente la configuración de tu aplicación al nuevo marco (2025.2
).
Esta guía te ayudará con lo siguiente:
- Empezarás clonando el proyecto existente para que los archivos originales sirvan de copia de seguridad, y luego podrás revisar cada uno de los archivos de configuración asociados para asegurarte de que se ajustan al nuevo esquema del proyecto. Esto requerirá pequeñas actualizaciones de los nombres y la estructura de los archivos de configuración de tus componentes, así como de sus respectivas propiedades.
- A continuación, actualizarás tus archivos de configuración de nivel superior
hsproject.json
yapp.json
.- Luego, puedes seguir cada una de las secciones siguientes para actualizar la configuración de los componentes de tu aplicación para que se ajusten a la versión
2025.2
de la plataforma para desarrolladores, basándote en las características existentes que habías configurado (por ejemplo, una tarjeta de aplicación creada mediante extensiones de interfaz de usuario). - Ten en cuenta que a excepción del archivo
hsproject.json
, todos los demás archivos de configuración siguen un esquema de nombres predecible (*-hsmeta.json
donde*
se basa en el directorio o componente específico) y todos comparten las mismas propiedades de nivel superior:
- Luego, puedes seguir cada una de las secciones siguientes para actualizar la configuración de los componentes de tu aplicación para que se ajusten a la versión
- Una vez que hayas actualizado todos los componentes de tu proyecto existente clonado, subirás tu nuevo proyecto a tu cuenta de desarrollador de HubSpot como parte del último paso de esta guía.
Ten en cuenta las siguientes limitaciones antes de migrar tu aplicación privada:
- Los comandos de migración de la CLI de HubSpot no son compatibles con las aplicaciones privadas existentes, ya que actualmente no se admite la migración automática.
- La compatibilidad con la integración con GitHub, que desencadena subidas y compilaciones automáticas desde GitHub, aún no está disponible. Si tu proyecto existente está actualmente vinculado a GitHub, asegúrate de desactivar la integración antes de comenzar la migración. Para desactivar la integración con GitHub y configurar las acciones de GitHub para automatizar CI/CD, consulta las instrucciones de este artículo.
Clonar los archivos de configuración existentes de tu proyecto
Antes de realizar cualquier actualización, clona el proyecto existente para tener una copia de seguridad a la que puedas recurrir en caso de que tengas problemas. Cuando hayas clonado tu proyecto, abre los archivos del proyecto clonado en tu IDE preferido, como VSCode. Si buscas un proyecto mínimo que se ajuste a los nuevos esquemas de2025.2
y al que puedas hacer referencia, puedes descargarte una plantilla estándar:
- Asegúrate de que has instalado la última versión beta de la CLI de HubSpot ejecutando el comando
npm i -g @hubspot/cli@next
y conéctalo a tu cuenta mediante los comandoshs auth
yhs accounts use
. - Ejecuta el siguiente comando en tu terminal para crear un proyecto con la plantilla de una aplicación con distribución
private
y autenticaciónstatic
.
- Sigue las instrucciones para proporcionar un nombre y un directorio local en el que descargar la plantilla estándar.
- Cuando se te pida que selecciones una plantilla, selecciona Proyecto de inicio con aplicación privada utilizando un token de acceso.
- Abre el proyecto recién creado en tu editor preferido. A continuación, puedes comparar la estructura de directorios del proyecto y los archivos de esquema
*-hsmeta.json
asociados con tu proyecto existente para asegurarte de que las especificaciones coinciden cuando proceda. Ten en cuenta que la plantilla debe utilizarse como referencia, pero no editarse directamente, ya que se recomienda que realices cualquier edición en la versión clonada de tu proyecto, como se ha indicado anteriormente.
2025.2
de la plataforma para desarrolladores se detalla en la guía de configuración de la aplicación.
Actualizar la configuración de tu hsproject.json
Los cambios en el nivel superiorhsproject.json
implican cambios menores en las propiedades name
y platformVersion
, como se indica en los bloques de código siguientes:
Antes:
hsproject.json
de tu proyecto vive en la misma ubicación en la nueva plataforma de desarrollo, pero tendrás que actualizar el platformVersion
a "2025.2"
. También es posible que quieras actualizar el campo name
con un nombre único para que no anule tu proyecto existente cuando lo subas. Por ejemplo, si el nombre de tu aplicación privada existente se llamaba My private app
, puede que quieras agregar (Developer Platform v2025.2)
o algo similar para distinguirla de la antigua aplicación.
Revisar el esquema de nivel superior de tu aplicación
Los bloques de código siguientes proporcionan ejemplos de la configuración antes y después de los cambios necesarios: Antes (src/app/app.json
):
src/app/app-hsmeta.json
):
app.json
. Estos detalles de configuración de tu aplicación se especifican ahora con el archivo de esquema de tu aplicación en el archivo /src/app/app-hsmeta.json
. Los cambios clave entre tu antigua configuración de app.json
y la nueva de app-hsmeta.json
son los siguientes:
- La propiedad de nivel superior
public
se ha sustituido pordistribution
y debe establecerse enprivate
. Ten en cuenta que la subpropiedadtype
del campoauth
debe establecerse enstatic
, lo que restringirá la instalación de tu aplicación a una sola cuenta. Más información sobre la distribución y autenticación de aplicaciones en la guía de configuración de aplicaciones. - Los permisos de tu aplicación se especifican ahora como una subpropiedad del campo
auth
, y se dividen entrerequiredScopes
,conditionallyRequiredScopes
yoptionalScopes
. Más información sobre cómo especificar cada uno de estos tipos de permiso en la guía de configuración de la aplicación. - No necesitas definir la propiedad de nivel superior
extensions
de tu proyecto anterior, ya que la propiedad no está presente en el nuevo archivoapp-hsmeta.json
. Todas las extensiones de interfaz de usuario configuradas previamente (por ejemplo, las tarjetas de la página de registro de CRM) se gestionan utilizando el directoriocards/
de tu proyecto. Dentro de ese directorio, los detalles de configuración de la tarjeta se especifican en un archivo*-hsmeta.json
, junto con el código del componente de tu tarjeta proporcionado en un archivo.jsx
al que se hace referencia mediante la propiedadentrypoint
del archivo*-hsmeta.json
. - Tampoco necesitas definir sobre la propiedad
webhooks
de nivel superior de tu proyecto anterior en el nuevo archivoapp-hsmeta.json
, ya que los webhooks se configuran y gestionan utilizando el directoriowebhooks/
de tu proyecto. Más información en la sección migrar suscripciones webhook más abajo.
Actualizar la configuración individual de los componentes
Estas secciones describen cómo trasladar las extensiones de interfaz de usuario y los webhooks a tu nueva aplicación. Si tu antigua aplicación no tenía ninguno de estos componentes, puedes saltar a la sección subir tu proyecto.Migrar tarjetas del CRM creadas con extensiones de IU
Los bloques de código siguientes proporcionan ejemplos de la configuración antes y después de los cambios necesarios: Antes (src/app/extensions/card.json
):
src/app/cards/example-app-card-hsmeta.json
):
cards/
de tu proyecto, sustituyendo al antiguo directorio extensions/
de tu antiguo proyecto. Dentro del nuevo directorio cards/
, los detalles de configuración de la tarjeta se especifican en un archivo *-hsmeta.json
, junto con el código del componente para tu tarjeta proporcionado en un archivo .jsx
al que se hace referencia mediante la propiedad entrypoint
del archivo *-hsmeta.json
.
Para portar el código de extensión de la interfaz de usuario de tu antigua aplicación, copia los valores relevantes de tu antigua app.json
en las propiedades asociadas del archivo *-hsmeta.json
del directorio cards/
, teniendo en cuenta los siguientes cambios:
- El valor de la propiedad
type
se ha cambiado de"crm-card"
a"card"
. - La propiedad
uid
ha dejado de ser una subpropiedad del campodata
y ahora se especifica en el nivel superior de tu configuración. - La propiedad
data
se ha cambiado aconfig
, que incluye las siguientes subpropiedades:- La propiedad
title
ha pasado a llamarsename
. - Una nueva propiedad
description
te permite proporcionar más contexto en torno a la funcionalidad de tu tarjeta. La descripción aparecerá en la configuración del proyecto de tu aplicación. - La propiedad
module
ha sido renombrada aentrypoint
y el valor debe ser ahora una cadena que represente la ruta a tu componente JSX, relativa a la raíz de tu proyecto (por ejemplo,"/app/cards/example-app-card.jsx"
). - La propiedad
objectTypes
se ha simplificado y ahora es una matriz de cadenas que representan los tipos de objetos en los que debe aparecer tu tarjeta (por ejemplo,["CONTACT", "COMPANY"]
). - La propiedad
location
no se modifica y puede establecerse comocrm.record.tab
,crm.record.sidebar
ohelpdesk.sidebar
.
- La propiedad
src/app/cards
encontrarás un archivo de configuración example-app-card-hsmeta.json
de ejemplo y el componente JSX example-app-card.jsx
.
Para obtener una guía completa sobre la creación de tarjetas de aplicaciones en la nueva plataforma para desarrolladores, consulta este artículo.
Migrar suscripciones de webhook
Los bloques de código siguientes proporcionan ejemplos de la configuración antes y después de los cambios necesarios: Antes (src/app/webhooks/webhooks.json
):
src/app/webhooks/webhooks-hsmeta.json
):
webhooks/
de tu proyecto. Dentro del directorio, los detalles de la suscripción se especifican en un archivo *-hsmeta.json
. La estructura del archivo es muy similar a la del anterior esquema webhooks.json
de tu aplicación privada, con los siguientes cambios notables:
- En el nivel superior de tu archivo
*-hsmeta.json
debe definirse una propiedad obligatoriauid
, a la que debe darse un nombre para diferenciarla de otras características de la aplicación (por ejemplo,"migrated_private_app_webhooks"
). - También debe definirse una propiedad obligatoria
type
en el nivel superior de tu configuración*-hsmeta.json
y debe establecerse como"webhooks"
. - Las propiedades
subscriptions
ysettings
no se modifican respecto awebhooks.json
, pero deben trasladarse a la propiedadconfig
, definida en el nivel superior de tu archivo*-hsmeta.json
.
Subir tu proyecto
Después de haber migrado la configuración de tu aplicación privada existente a los subdirectorios respectivos de tu proyecto, puedes subir tu nueva aplicación a tu cuenta de HubSpot. A partir de ahí, puedes encontrar el token de acceso de tu aplicación, que puedes utilizar para autenticar las solicitudes de la API y seguir desarrollando funcionalidades en la nueva plataforma para desarrolladores.Nota:
Si tu aplicación privada existente tenía alguna función sin servidor definida:- Haz una copia de seguridad del
src/app/app.functions
de tu antiguo proyecto, junto con cualquier referencia asociada a tus funciones sin servidor en otro lugar de tu proyecto. - Las funciones sin servidor no deben incluirse en el directorio del proyecto que subas como parte de tu nueva aplicación. Una vez que hayas subido tu proyecto, puedes seguir los pasos de la sección que aparece abajo para recrear el mismo comportamiento en la nueva plataforma para desarrolladores.
Migrar el manejo de funciones sin servidor
Si tu aplicación privada incluía funciones sin servidor, tendrás que crear tu propio servicio interno basado en REST y utilizar la APIhubspot.fetch()
para obtener datos. Esto requerirá que migres cualquier lógica de servicio existente que se haya definido previamente en tus funciones sin servidor alojadas en HubSpot, así como tu token de acceso privado a la aplicación a una plataforma de alojamiento de terceros, como Vercel, DigitalOcean, AWS, etc.
Para migrar tu lógica de funciones sin servidor a una plataforma de alojamiento de terceros:
- Localiza tus funciones sin servidor en el proyecto de tu aplicación privada existente en el directorio
src/app/app.functions
. - Copia toda la lógica relevante de tus funciones. En el ejemplo de función sin servidor que aparece abajo, solo habría que copiar la línea 4.
- En la plataforma de alojamiento de terceros, pega la lógica de tu definición de función sin servidor anterior, y asegúrate de que los nombres de los parámetros coinciden. Tendrás que consultar la documentación para definir la función sin servidor en la plataforma que estés utilizando.
- Copia tu token de acceso de la página de detalles del proyecto de tu aplicación y agrégalo como variable de entorno con tu plataforma de alojamiento de terceros para que pueda ser referenciado en tu código.
-
A continuación, tendrás que actualizar la propiedad
permittedUrls
de tu archivo de esquema de nivel superiorapp-hsmeta.json
para incluir el campofetch
. El valor de este campo debe establecerse en una matriz que incluya la URL de tu endpoint alojado en tu plataforma de alojamiento de terceros. -
A continuación, actualiza cualquier referencia en tu código React en tus tarjetas de aplicación para llamar a la nueva URL de la función sin servidor que has configurado. Puedes obtener más información sobre el uso
hubspot.fetch()
en esta guía.
Limpieza
Una vez que hayas subido con éxito tu nuevo proyecto, migrado cualquier gestión de funciones sin servidor (si procede) y probado completamente tu aplicación para confirmar que el comportamiento es coherente, puedes eliminar tu antiguo proyecto dentro de tu cuenta de desarrollador de HubSpot. Recuerda que aún tienes la copia de seguridad original de tu proyecto localmente, como se indica en el primer paso de esta guía, por si alguna vez la necesitas como referencia. Para eliminar tu antiguo proyecto de tu cuenta de desarrollador:- En tu cuenta de HubSpot, dirígete a Desarrollo.
- En la página Proyectos, haz clic en el nombre de tu antiguo proyecto.
- Haz clic en la pestaña Configuración.
- En Eliminar este proyecto, haz clic en Eliminar [nombre del proyecto].
- Revisa la información del cuadro de diálogo para confirmar que estás preparado para continuar. A continuación, introduce el nombre de tu proyecto y haz clic en Eliminar proyecto.
