Fin de las serverless functions en HubSpot: guía de migración 2026
HubSpot está retirando las serverless functions del Design Manager y los runtimes Node.js 20 y anteriores en las custom code actions de los workflows. Desde el 3 de noviembre de 2026 no se pueden crear nuevas. Desde el 17 de noviembre de 2026 no se pueden editar. El 1 de febrero de 2027 las funciones del Design Manager dejan de ejecutarse y las llamadas a /_hcms/api/ fallan. Te lo cuento en detalle.
HubSpot está retirando las serverless functions del Design Manager y los runtimes Node.js 20 y anteriores en las custom code actions de los workflows. Desde el 3 de noviembre de 2026 no se pueden crear nuevas. Desde el 17 de noviembre de 2026 no se pueden editar. El 1 de febrero de 2027 las funciones del Design Manager dejan de ejecutarse y las llamadas a /_hcms/api/ fallan. Te lo cuento en detalle.
Fechas clave: el calendario de HubSpot
La solución tiene dos caminos:
- Custom code actions: pasarlas a Node.js 24. Breeze puede hacerlo por ti con el botón «Upgrade with Breeze».
- Serverless functions del Design Manager: moverlas a un proyecto de desarrollador en la versión de plataforma 2026.09. Se sirven desde
/hs/serverless/.
Las apps privadas creadas a mano en la interfaz no se ven afectadas por este cambio.
En MorningLabs desarrollamos sobre HubSpot a diario y en esta guía te contamos qué cambia, cómo saber si te afecta y cómo migrar sin romper nada.
La fecha más urgente es el 17 de noviembre de 2026: a partir de ese día ya no podrás guardar cambios en lo antiguo.
| Fecha | Qué pasa | Qué hacer |
|---|---|---|
| 3 nov 2026 | Ya no se pueden crear serverless functions en el Design Manager ni custom code actions en Node.js 20. Node.js 24 ya está disponible. | Crear todo lo nuevo en proyectos y en Node.js 24 |
| 17 nov 2026 | Ya no se pueden editar las funciones del Design Manager ni guardar cambios en acciones de Node.js 20. También termina la opción de volver a Node.js 20. | Migrar las custom code actions antes de esta fecha |
| 4 dic 2026 | La Pipelines API v1 deja de tener soporte. | Pasar las integraciones a la versión 2026-03 o posterior |
| 1 feb 2027 | Las serverless functions del Design Manager dejan de ejecutarse y /_hcms/api/ falla. |
Tener todas las funciones migradas a proyectos |
| sep 2027 | Fin del soporte de las APIs v1–v3 y de las apps públicas y privadas antiguas. | Planificar la migración de apps antiguas |
Fuentes: anuncio de HubSpot, Pipelines API v1, APIs y apps antiguas.
¿Me afecta? Comprueba tu caso
Te afecta si tu portal ejecuta código propio en HubSpot. Esta tabla resume los casos más habituales.
| Lo que tienes en tu portal | ¿Te afecta? | Qué hacer |
|---|---|---|
| Workflows con custom code actions en Node.js 16 o 20 | Sí | Pasarlas a Node.js 24 antes del 17/11 (Parte 1) |
Serverless functions creadas en el Design Manager (endpoints /_hcms/api/) |
Sí | Migrarlas a un proyecto de desarrollador antes del 1/2/2027 (Parte 2) |
| Proyecto de desarrollador en versión 2023.1, 2023.2 o 2025.1 con funciones | Sí | Ejecutar hs project migrate y volver a desplegar |
| Proyecto en versión 2026.03 o 2026.09 | No | Ya usa Node.js 24 |
| App privada creada a mano en la interfaz, usada solo por su token | No | Sigue funcionando; planifica su migración antes de septiembre de 2027 |
| Token de app privada usado dentro de una custom code action en Node.js 20 | La acción sí, el token no | Pasar la acción a Node.js 24 |
Detalle importante: las serverless functions del Design Manager solo existen en portales con Content Hub Enterprise. Si no tienes ese plan, lo más probable es que solo te afecten las custom code actions.
Desde el 26 de octubre de 2026 ya no se pueden crear apps privadas antiguas desde la interfaz. Para integraciones nuevas, HubSpot recomienda las Service Keys, disponibles en proyectos de la versión 2026.09 (fuente).
Parte 1: cómo pasar tus custom code actions a Node.js 24
Es la parte más rápida y no necesita programar si usas Breeze. Hazla antes del 17 de noviembre: hasta ese día puedes volver a Node.js 20 si algo falla.
- Encuentra los workflows afectados. Ve a Automatización > Workflows, añade el filtro «Tipo de acción» y elige «Custom code». Abre cada workflow y mira el desplegable «Language» de cada acción: las que estén en Node.js 16 o 20 hay que actualizarlas.
- Guarda una copia del código actual. Cópialo fuera de HubSpot, en un archivo o en tu repositorio. Lo necesitarás para comparar y para volver atrás.
- Actualiza con Breeze. Selecciona la acción y pulsa «Upgrade with Breeze», debajo del desplegable de lenguaje. Breeze actualiza todas las custom code actions de ese workflow. También puedes pedírselo desde «Collaborate with Assistant».
- Revisa lo que ha cambiado. Compara el resultado con tu copia y confirma que todas las salidas de «Data outputs» siguen ahí. Breeze puede equivocarse.
- Prueba cada acción. Despliega «Test action», elige un registro y pulsa «Test». Revisa el estado, las salidas y los logs. Usa un registro de prueba: la prueba hace cambios reales.
- Guarda. Solo cuando la prueba sea correcta.
Si prefieres hacerlo a mano
Node.js 24 no admite el estilo con callback. La función debe ser async y devolver el resultado con return.
Antes (Node.js 20):
exports.main = async (event, cb) => {
const amount = event.inputFields['amount'];
cb({ outputFields: { doubled: amount * 2 } });
};
Después (Node.js 24):
exports.main = async (event) => {
const amount = event.inputFields['amount'];
return { outputFields: { doubled: amount * 2 } };
};
Revisa también las librerías, porque Node.js 24 trae versiones nuevas:
| Librería | Node.js 20 | Node.js 24 |
|---|---|---|
@hubspot/api-client |
^11.1.0 | 13.4.0 |
axios |
^1.2.0 | 1.13.5 |
request |
^2.88.2 | Ya no se incluye: usa axios o fetch() |
mongoose / redis / googleapis |
6.x / 4.x / 67.x | 9.x / 5.x / 171.x |
Usa await en todas las llamadas antes del return: lo que se ejecute después no tiene garantizado terminar. Si quieres que HubSpot reintente tras un error de límite de peticiones, vuelve a lanzar el error en el catch.
Fuente: guía oficial de HubSpot para Node.js 24.
Parte 2: cómo migrar las serverless functions del Design Manager a proyectos
Esta parte requiere un desarrollador y la CLI de HubSpot. La recomendación de HubSpot es mover solo las funciones y cambiar únicamente la URL en las plantillas que las llaman. Es la opción más segura.
Requisitos: CLI de HubSpot 8.4.0 o superior, Node.js 20 o superior en tu equipo y la versión de plataforma actual (2026.09).
- Haz inventario y copia de seguridad. Lista las funciones con
hs cms function list --json. Descarga cada carpeta del Design Manager conhs cms fetch <carpeta> ./dm-backup/<carpeta>: será tu copia para volver atrás. - Localiza quién llama a cada función. Busca
_hcms/apien plantillas, módulos, campos, ajustes del tema y el HTML de cabecera y pie de las páginas. Busca también el nombre del endpoint, porque a veces la ruta se construye por partes. - Crea el proyecto. Usa
hs project createcon--platform-version 2026.09y la funcionalidadapp-function-endpoint. Agrupa las funciones por propósito: cada proyecto se despliega y se revierte entero. - Adapta cada función. Cambia
serverless.jsonpor un archivo*-hsmeta.jsonpor función, con la misma ruta. Pasa deexports.main = (context, sendResponse)aexports.main = async (context)y devuelve la respuesta conreturn. Crea los secretos conhs secret addy léelos conprocess.env. - Valida y sube. Ejecuta
hs project validateyhs project upload, y apunta el número de build. Ojo: al subir, el endpoint queda público al momento. - Cambia las llamadas una a una. Prueba el endpoint nuevo, guarda el texto original y cambia solo el prefijo de
/_hcms/api/a/hs/serverless/. Comprueba cada página en el navegador, con la consola y la pestaña de red abiertas.
Para volver atrás: restaura los archivos de dm-backup, pega el texto original en HubSpot o despliega un build anterior con hs project deploy --build <número>. Practica una vuelta atrás tras la primera función.
Con ayuda de IA
La guía oficial incluye un prompt para agentes de programación con IA, como Claude Code, Cursor o Copilot, conectados al servidor MCP para desarrolladores de HubSpot. El agente mantiene un inventario en MIGRATION_INVENTORY.md, pide permiso antes de cada cambio en vivo y nunca borra funciones ni maneja los valores de los secretos. Acelera mucho el trabajo, pero no sustituye la revisión de un desarrollador.
Fuente: guía oficial de migración del Design Manager a proyectos.
8 errores habituales al migrar (y cómo evitarlos)
La mayoría de los fallos vienen de diferencias pequeñas entre el entorno antiguo y el nuevo.
- Migrar todo de golpe. Hazlo función a función y guarda un build «bueno» conocido de cada proyecto.
- Leer los parámetros con
context.query. En proyectos ya no existe: usacontext.params, que devuelve listas de textos. - Enviar formularios como urlencoded. Un
POSTde ese tipo devuelve un error 415. Envía JSON. - Buscar los logs en la CLI. Los
console.logno se ven ahí; están en la pestaña Logs de la app. - Olvidar instalar la app. Si usas el token
PRIVATE_APP_ACCESS_TOKEN, ejecutahs project install-app. Sin instalarla, las llamadas devuelven 401. - Seguir usando
requesto API keys (hapikey).requestya no se incluye y las API keys llevan sin funcionar desde 2022. - Dar por hecho que Breeze acierta siempre. Revisa su código y prueba cada acción con un registro de prueba.
- Dejar las custom code actions para después del 17/11. Seguirán ejecutándose, pero ya no podrás editarlas ni volver atrás, y no recibirán parches de seguridad.
¿Y ahora qué?
Haz el inventario esta semana, aunque la migración la hagas en diciembre. Las custom code actions son rápidas de resolver con Breeze. Las serverless functions del Design Manager necesitan más planificación, pero hay margen hasta el 1 de febrero si empiezas ya.
Es también un buen momento para preguntarse si cada función sigue teniendo sentido o si conviene sustituirla por una app a medida, una UI Extension o una integración más robusta.
En MorningLabs te ayudamos. Revisamos tu portal, identificamos todo lo afectado y migramos tus funciones y workflows sin cortes en tu web ni en tus procesos. Habla con nuestro equipo de desarrollo HubSpot y selecciona «Desarrollo» en el formulario.
Preguntas frecuentes
¿Cuándo dejan de funcionar las serverless functions del Design Manager?
El 1 de febrero de 2027. Desde ese día, las llamadas a /_hcms/api/ fallan. Desde el 17 de noviembre de 2026 ya no se pueden editar.
¿Mis custom code actions en Node.js 20 dejan de funcionar el 17 de noviembre?
No. Siguen ejecutándose, pero desde el 17 de noviembre de 2026 no se pueden guardar cambios en ellas y no reciben parches de seguridad. Conviene pasarlas a Node.js 24 cuanto antes.
¿Afecta a las apps privadas creadas a mano?
No. Las apps privadas creadas en la interfaz siguen funcionando. Lo que sí cambia es que desde el 26 de octubre de 2026 no se pueden crear nuevas, y que HubSpot dejará de darles soporte en septiembre de 2027.
¿Puedo migrar con Breeze sin programar?
Sí, para las custom code actions. Breeze las actualiza a Node.js 24 con el botón «Upgrade with Breeze». Las serverless functions del Design Manager no se pueden migrar con Breeze ni de forma automática.
¿Qué plan de HubSpot necesito para usar serverless functions?
Content Hub Enterprise. Si no tienes ese plan, no tendrás funciones del Design Manager que migrar.
¿Qué cambia en la URL de mis funciones?
Pasan de /_hcms/api/<ruta> a /hs/serverless/<ruta>. Hay que actualizar todas las plantillas, módulos y páginas que las llaman.
Fuentes