Última modificación: 28 de agosto de 2025
En los workflows, usa la acción Código personalizado para escribir y ejecutar JavaScript o Python (en versión beta). Al utilizar las acciones con código personalizado, puedes extender las funciones de los workflows dentro y fuera de HubSpot. Para ver ejemplos de las acciones con código personalizado más frecuentes, consulta el catálogo de ejemplos de uso de automatización programable de HubSpot.
Las acciones de código personalizado admiten código JavaScript con el entorno de tiempo de ejecución Node.js. Si estás usando Python para tu acción con código personalizado, usará el entorno de tiempo de ejecución de Python. Cuando se ejecuta una acción, HubSpot y AWS Lambda administran el cómputo del tiempo de ejecución a través de una función sin servidor.
Si encuentras algún problema general al implementar tu acción con código personalizado, puedes ponerte en contacto con el servicio de asistencia de HubSpot. Por otro lado, si el problema está relacionado con el código personalizado en sí, te recomendamos que investigues y preguntes en el Foro para desarrolladores de HubSpot, y así obtener ayuda para resolver problemas con el código.
Bibliotecas compatibles con Node.js
Si estás usando Node.js, puedes usar las siguientes bibliotecas con la acción programada. Estas bibliotecas se pueden subir usando la función normalrequire()
al inicio del código.
- @hubspot/api-client ^10
- async ^3.2.0
- aws-sdk ^2.744.0
- axios ^1.2.0
- lodash ^4.17.20
- mongoose ^6.8.0
- mysql ^2.18.1
- redis” ^4.5.1
- request” ^2.88.2
- bluebird ^3.7.2
- random-number-csprng ^1.0.2
- googleapis ^67.0.0
Nota:
La API de asociaciones versión 4 es compatible con la versión 9.0.0 o posterior del cliente NodeJS de HubSpot y la versión 8 del cliente NodeJS de HubSpot.Bibliotecas compatibles con Python
Si usas Python, puedes subir las siguientes bibliotecas con una instrucción de importación al inicio del código. La instrucción de importación debe tener el formatofrom [libraryname] import [item]
, por ejemplo: from redis.client import redis
.
- requests 2.28.2
- @hubspot/api-client ^8
- google-api-python-client 2.74.0
- mysql-connector-python 8.0.32
- redis 4.4.2
- nltk 3.8.1
import
, por ejemplo: import os
.
Primeros pasos
Usa los ejemplos de código a continuación para comenzar a usar acciones de workflow con código personalizado.Ejemplos de código
Crear una acción con código personalizado
Para agregar una acción con código personalizado a un workflow:- En tu cuenta de HubSpot, navega a Automatización > Workflows.
- Haz clic en el nombre de un workflow o crea un nuevo workflow.
- Haz clic en el ícono + más para agregar una acción de workflow.
- En el panel izquierdo, busca y selecciona Código personalizado.

- Por defecto, las acciones con código personalizado utilizarán Node.js. Si estás en la prueba beta con Python y quieres crear una acción con este lenguaje, haz clic en el menú desplegable Lenguaje y selecciona Python.
- En el campo Descripción, introduce una descripción para tu acción personalizada de workflow. Esta descripción aparecerá en la tarjeta de acción del workflow correspondiente.
- Puedes utilizar un secreto con la acción de código personalizado, como un token de acceso a una aplicación privada. La aplicación también debe incluir los respectivos ámbitos para los datos que estés intentando extraer de HubSpot, como
contacts
oforms
. Más información sobre las aplicaciones privadas de HubSpot.- Para utilizar un secreto existente, haz clic en Añadir secreto. Luego, selecciona las casillas de verificación situadas junto a las imágenes que deseas guardar.
- Para agregar un nuevo secreto, haz clic en Agregar secreto. En el cuadro de diálogo, escribe el nombre del secreto y el valor del secreto. Luego, haz clic en Guardar. Ahora puedes seleccionar este secreto en futuras acciones con código personalizado.
- Para cambiar o eliminar los secretos existentes, haz clic en Administrar secretos.
- Para incluir propiedades en tu código personalizado:
- Haz clic en el enlace Selecciona una propiedad y luego selecciona una propiedad del panel de datos. Puedes utilizar propiedades existentes o valores de propiedad formateados antes en el workflow. Después de seleccionar la propiedad, introduce un nombre para usarla en el código. Descubre cómo hacer referencia a las propiedades en tu código personalizado.
- Para agregar otra propiedad, haz clic en Agregar propiedad. Cada propiedad solo puede agregarse una vez y debe tener un ID de variable único. Puedes usar hasta 50 propiedades con tu código personalizado.
- Para eliminar una propiedad, haz clic en el ícono de eliminación.
- En el campo del código, introduce el código en JavaScript o Python.
- Para definir los datos de output que se pueden usar como datos de input en el workflow, por ejemplo, con la acción Editar registros:
- En Outputs de datos, haz clic en Añadir output.
- Haz clic en el menú desplegable Tipo de datos y selecciona un tipo de datos.
- En el campo Nombre, introduce un nombre para el output de datos.
- Para agregar varias salidas, haz clic en Agregar salida.
- En la parte superior, haz clic en Guardar.

Nota:
El campo de código no mostrará errores de lint al usar Python.- Hay una llamada a la función
def main(event):
cuando se ejecuta la acción del fragmento de código. - El argumento event es un objeto que contiene detalles sobre la ejecución del workflow.
- La función
callback()
se utiliza para transferir datos de vuelta al workflow. Se debe llamar en la funciónexports.main
. Esto solo se puede usar con Node.js.
event
contendrá los siguientes datos:
Establece un límite de frecuencia para la acción (BETA)
Establece un límite de velocidad para determinar la frecuencia con la que debe ejecutarse la acción del código personalizado. El límite de frecuencia también afectará a todas las acciones siguientes del workflow.- En la cronología del workflow, haz clic en la acción con código personalizado.
- En la parte inferior, haz clic en Configurar límite de frecuencia para ampliar la sección de límite de frecuencia.
- Haz clic para activar el interruptor Activar la limitación de frecuencia. Por opción predeterminada, esta opción está desactivada.
- Ajusta el límite de frecuencia:
- Ejecuciones de acciones: ajusta el número máximo de ejecuciones por periodo de tiempo.
- Plazo: ajusta el plazo para su límite de tarifa. Puedes ajustar esta franja horaria en Segundos, Minutos u Horas.

Probar la acción
Al agregar una acción con código personalizado a un workflow, puedes probar la acción para asegurarte de que el código se ejecute como se esperaba antes de activar el workflow. Al probar una acción con código personalizado, debes comenzar seleccionando un registro para probar el código y luego ejecutarlo. Esta prueba ejecutará solo el código en tu acción personalizada, no ninguna de las otras acciones en el workflow. Cuando el código haya terminado de ejecutarse, podrás ver los datos de salida del código y el registro de tu prueba.Nota:
Al probar tu código personalizado, el código se ejecutará y los cambios se aplicarán al registro de prueba seleccionado. Recomendamos crear un registro de prueba específico si no quieres actualizar los registros activos.- En la vista previa del workflow, haz clic en la acción con código personalizado.
- En la parte inferior de la barra lateral derecha, haz clic en Probar acción para expandir la sección de prueba.
- Selecciona un registro con el que probar el código haciendo clic en el menú desplegable Objeto y luego, selecciona un registro.
- Si usas valores de propiedad formateados previamente en el workflow, introduce un valor de prueba para los datos con formato.

- Para ejecutar el código, haz clic en Prueba.
- En el cuadro de diálogo, confirma que quieres probar el código con respecto al registro seleccionado haciendo clic en Prueba.
-
Una vez que tu código haya terminado de ejecutarse, la barra lateral mostrará los resultados de la prueba:
- Estado: El estado de acierto o error de la acción con código personalizado.
- Salida de datos: Los valores resultantes para la salida de datos definida. Aparecerá una alerta junto a los resultados que el código haya generado y que no se hayan definido en la sección Salida de datos ni en el editor de código. Deberás agregar esos resultados para usarlos más adelante en el workflow.
- Registros: Información sobre la prueba en sí, como cuánta memoria usó la acción para ejecutarse y el tiempo de ejecución total.
- Cuando termines de probar la acción, haz clic en Guardar para guardar los cambios.

Secretos
Hay veces que querrás que el código haga referencia a algo que no se debe compartir ampliamente. La mayoría de las veces, se trata de un medio de autenticación, como un token de acceso a aplicaciones privadas. Puedes administrar los secretos a los que tu función tiene acceso directamente en la definición de la acción del workflow. Cuando se utilizan varios secretos en un mismo código personalizado, la longitud total de todos los valores secretos no debe exceder los 1000 caracteres.
Agregar propiedades de HubSpot al código personalizado
A veces, es posible que debas obtener las propiedades del objeto en tu acción con código personalizado. En lugar de usar las API de HubSpot, puedes agregar estas propiedades directamente en la definición de la acción del workflow. Agrega las propiedades y define sus nombres para hacer referencia a esas propiedades en el código. Una vez agregada, se puede hacer referencia a la propiedad en el código personalizado. Puedes agregar hasta 50 propiedades en cada acción con código personalizado.
Registros
Para los programadores es importante una herramienta que tenga la capacidad de imprimir los datos de output desde el código. Esto permite depurar problemas y brindar mejor asistencia a los usuarios finales. Para ver el resultado de los registros, encuentra más información sobre cómo revisar los registros de acciones de tu workflow.Cómo definir los datos de salida
En la función, define los campos de los datos de salida que quieres usar más adelante en el workflow. Luego, selecciona el tipo de datos de salida (por ejemplo, número, cadena, booleano, fecha y hora, enumeración, número de teléfono, fecha) e introduce el campo que deseas generar. Los campos de los datos de salida deben formar parte de un objeto json con formateado según corresponda conforme al lenguaje utilizado:
- Si el tipo de datos de salida está en formato de cadena, el límite para los valores de la cadena es de 65.000 caracteres. Exceder este límite ocasionará un error
OUTPUT_VALUES_TOO_LARGE
. - Si utilizas la acción Editar registros, toma nota de las propiedades de origen y destino compatibles.
- Al actualizar las propiedades de fecha:
- Si estás copiando los datos de output de una propiedad de fecha y hora, esos datos deberán estar en formato Unix en milisegundos.
- Si estás copiando los datos de output de una propiedad de fecha en lugar de fecha y hora, esos datos deberán estar en formato Unix en milisegundos y la hora de la fecha deberá fijarse en la medianoche de la zona horaria UTC.
currentDate.setUTCHours(0,0,0,0)

Limitaciones
Las acciones con código personalizado deben terminar de ejecutarse en un lapso de 20 segundos, y solo puedes usar hasta 128 MB de memoria. Exceder estos límites generará un error.Reintentos
Es posible que debas obtener las propiedades del objeto usando la API de HubSpot o llamar a otros endpoints de la API de HubSpot en tu acción con código personalizado. Como con cualquier otra llamada a la API, deberás cumplir con los límites de frecuencia de la API de HubSpot.- Si estás usando Node.js y encuentras un error de límite de frecuencia, pero quieres que HubSpot vuelva a intentar la llamada, deberás incluir el error en el bloque
catch
de la acción con código personalizado.

- Si usas Python y encuentras un error de límite de frecuencia, pero quieres que HubSpot vuelva a intentar la llamada, deberás generar el error en el bloque
except
de la acción con código personalizado.

Nota:
Si la llamada falla debido a un error de limitación de velocidad o a un error 429 o 5XX de axios o @hubspot/api-client, HubSpot volverá a intentar ejecutar su acción hasta por tres días, comenzando un minuto después de la falla. Las acciones fallidas posteriores se volverán a ejecutar a intervalos cada vez mayores, con un intervalo máximo de ocho horas entre los intentos.Advertencias
Si estás usando Node.js en tu código personalizado, ten en cuenta las siguientes advertencias:- Generación de números aleatorios: es común usar Math.random para generar números aleatorios, pero los usuarios pueden ver los mismos números generados en diferentes ejecuciones. Esto se debe a que Math.random funciona según la hora actual. Dado que HubSpot puede inscribir muchos objetos en un workflow al mismo tiempo y borrar el estado en cada ejecución, cada ejecución termina alimentando Math.random de la misma manera. En cambio, puedes usar la biblioteca random-number-csprng 1.0.2, que garantiza la generación de números pseudoaleatorios criptográficamente seguros.
- Reutilización de variables: para ahorrar memoria, cualquier variable introducida fuera de la función
exports.main
se puede reutilizar para futuras ejecuciones de la acción con código personalizado. Esto es útil cuando se hace una conexión con servicios externos, como una base de datos, pero cualquier lógica o información que deba ser única para cada ejecución de la acción con código personalizado debe estar dentro de la funciónexports.main
.
- Reutilización de variables: al igual que en el caso anterior, toda variable introducida fuera de la función
def main
se puede reutilizar para futuras ejecuciones de la acción con código personalizado.- Si introdujiste una variable fuera de la función
def main
, pero no planeas modificarla, puedes hacer referencia a la variable directamente. - Si planeas modificar una variable, puedes introducir la variable dentro de la función
def main
con una clave global antes de hacer la referencia.
- Si introdujiste una variable fuera de la función