
Usa ChatGPT ya con la base de conocimiento → https://chatgpt.com/share/6a28dc63-b4d4-83e9-acd7-48bbc57e94a2 o bien descarga el .PDF y alimenta a tu agente con esta base de conocimiento (KB), en el enlace adjunto abajo:
https://drive.google.com/file/d/1-JzkWQDCULIsUY3SHs7SmqYeC4EgpgM-/view?usp=sharing
Usa este estándar siempre que necesites generar código para el bloque JavaScript del CRM Datacrazy.
Todo código generado debe ser:
Seguro
Validado
Resiliente a errores
Listo para producción
Fácil de mantener
Estandarizado
Los scripts se ejecutarán dentro del bloque JavaScript del CRM Datacrazy.
Características del entorno:
JavaScript nativo (sin bibliotecas externas)
Soporte a async/await
Manipulación de campos del lead
Consumo de APIs vía fetch
Acceso a datasources
Persistencia de datos en campos del CRM
Retorno obligatorio en formato JSON
Siempre solicitar o considerar:
Ejemplos:
Webhook
API
Campo del CRM
Datasource
Ejemplo:
Api-request-1
En caso de que los datos vengan de un webhook, pedir el JSON recibido.
Payload: conjunto de datos que recibe el sistema.
Siempre usar operaciones asíncronas con await.
Utilizar acceso seguro:
obj?.campo
Ejemplo:
if (data?.telefone) {
// processamento
}
Todo valor debe ser validado antes de ser utilizado.
Nunca asumir que una información es correcta solo porque fue informada.
Siempre validar y confirmar a través de los datos disponibles.
Cuando el resultado se utilice en agendamientos del CRM, el formato de salida debe ser obligatoriamente:
2026-03-31T00:59:00:000-03:00
La fecha y la hora pueden variar, pero el formato debe permanecer exactamente igual.
Cualquier cambio en la estructura puede impedir el funcionamiento del agendamiento.
Permitido:
fetch()
Date()
JSON
No permitido:
moment
axios
lodash
dayjs
Todo el código debe tener manejo de excepciones.
Siempre asegurar que el lead existe y que los datos son válidos antes de grabar información.
Todo error debe ser manejado adecuadamente.
El código no debe romper la ejecución del flujo.
return {
sucesso: true,
erro: false,
dados: {
// resultado
}
};
return {
sucesso: false,
erro: true,
mensagem: "Descrição clara do erro",
debug: error?.message || null
};
await session.getValue("campo");
await session.setValue("campo", valor);
await session.getAdditionalValue("campo");
await session.setAdditionalValue("campo", valor);
await session.datasources["NomeDoDatasource"];
Usar nombres de variables claros
Validar absolutamente todos los datos
Evitar sobrescribir información existente
Devolver datos útiles para depuración
Comentar fragmentos importantes
Pensar siempre en el entorno de producción
Priorizar legibilidad y mantenimiento
// ##CONFIG##
const DATASOURCE = "Api-request-1";
let data = null;
try {
data = await session.datasources[DATASOURCE];
if (!data) {
throw new Error(`Datasource "${DATASOURCE}" não encontrado`);
}
if (!data?.campoObrigatorio) {
throw new Error(
"Campo obrigatório não encontrado no payload"
);
}
const valor = data.campoObrigatorio;
const existente = await session.getValue("campoCRM");
if (!existente) {
await session.setValue("campoCRM", valor);
}
return {
sucesso: true,
erro: false,
dados: {
valor
}
};
} catch (error) {
return {
sucesso: false,
erro: true,
mensagem: error.message,
debug: data
};
}
Si algo no funciona correctamente, pedir al usuario:
Copia el error (botón derecho → copiar) y mándalo aquí.
Si es posible, envía una captura de pantalla.
Envía el JSON recibido por el webhook o datasource.
Datos recibidos por el sistema.
Mensaje que informa el motivo de la falla.
Fuente de datos utilizada por el bloque JavaScript.
Todo código gerado debe ser:
Seguro
Validado
Robusto
Estandarizado
Fácil de entender
Listo para producción
Compatible con el CRM Datacrazy
Al finalizar cualquier análisis o generación de código, responde solo:
¿Cómo puedo ayudar?
Accede a ChatGPT directamente en este enlace →https://chatgpt.com/share/69e58457-b630-83e9-b8ef-8c7dbf0653ab
KB Para Claude Code en .PDF→ https://drive.google.com/file/d/1zlkvheDSY7npEQk1MNfSpMqfC9tqovqD/view?usp=sharing

El bloque <> JavaScript es uno de los, si no el más poderoso de los bloques, dada la amplia y gigantesca utilidad, pudiendo usar programación para validaciones y configuraciones de diferentes salidas de datos.
⚠ Este recurso presupone conocimiento previo en programación.
El soporte no cubre dudas introductorias sobre lógica o código.
👉 Dudas técnicas sobre el funcionamiento del bloque pueden ser enviadas al soporte normalmente.
💡 Recomendación: Aprende lo básico de JavaScript — eso será un antes y un después en el uso de Datacrazy.
Comentarios
Parámetros
Variables y Constantes
Objetos y Arrays
GET / POST
Webhook
Datos de Lead y Negocio
Guardado de datos
Retorno JSON
Buenas prácticas
Los comentarios son ignorados por el sistema.
// Isso é um comentário/*
Tudo aqui será ignorado
Inclusive código
*/isso não é comentário // ❌ vai quebrar o códigoGuardan valores que pueden cambiar:
let fruta = 'maçã';let frutas = ["uvaBah", "banana", "maçã"];No pueden ser modificadas:
const nomeLead = "Tiger Allan";❌ Error:
Identificador 'nomeLead' já foi declaradoconst dadosLead = {
leadName: "Tiger Allan",
leadPhone: 5547992185579
};dadosLead.leadNameawait session.setAdditionalValue("apelido", dadosLead.leadName);let frutas = ["uvaBah", "banana", "maçã"];frutas[0] // uvaBah
frutas[1] // banana
frutas[2] // maçãawait session.setAdditionalValue("fruta-preferida", frutas[1]);frutas[1] = "abacaxi";Método
Uso
GET | Buscar dados |
POST | Enviar dados |
{
"dadosLead": {
"leadName": "Tiger Allan2",
"leadPhone": "5547992185579Bah",
"fruta": "uvaBah"
},
"dadosEmpresaLead": {
"nomeEmpresa": "ATECH Company",
"sloganEmpresa": "ATECH tende bem",
"urlLogo": "https://i.imgur.com/Pis9lRg.png"
},
"assets": {
"valorEmReais": 997,
"valorReaisComCentavos": 997.89,
"falida": null
}
}const webhook = session.datasources["Api-request-1"];await session.setValue("leadName", webhook.dadosLead.leadname);
await session.setValue("leadPhone", webhook.dadosLead.leadPhone);⚠ Regla obligatoria:
Nombre + Teléfono
o
Nombre + Email
await session.setAdditionalValue("apelido", webhook.dadosLead.leadName);const webhook = await session.datasources["Api-request-1"];
await session.setValue("leadName", webhook.dadosLead.leadname);
await session.setValue("leadPhone", webhook.dadosLead.leadPhone);
await session.setAdditionalValue("apelido", webhook.dadosLead.leadName);
return {
nomeLead: await session.getValue("leadName"),
phoneLead: await session.getValue("leadPhone"),
businessId: await session.getValue("businessId")
};datasources → lee datos del webhook
setValue → identifica el lead
setAdditionalValue → guarda datos
return → devuelve JSON
⚠ Dependen de condicionamiento en el flujo
leadId, businessId, stageId, instanceId, attendantId, productId, conversationId, threadId
leadName, leadFirstName, leadEmail, leadPhone, leadCompany, leadCity, leadState, leadZip, leadAddress, leadComplement, leadBlock, leadSite, leadTaxId, leadSource, leadSourceId, leadSourceUrl, leadCtwaId, leadNotes, birthDate
businessTotal, businessCode, businessExternalId, JSONbusinessProduct
productName, productSku, productPrice
leadAttendant, businessAttendant, ticketAttendant
currentDate, companyName, companyEmail
threadData, chatAttendant, department, threadCode
additionalFields, datasourceJsonPath
instagramCommentId, instagramMediaId, instagramCommentDate, instagramName
facebookCommentId, facebookMediaId, facebookCommentDate, facebookName
lastAiText, aiConsumedTokens
✔ Usa correctamente:
string → texto
number → números
boolean → true/false
null → ausencia
❌ Evita:
"10" (número como string)
"true"
"" como vacío
undefined
NaN / Infinity
✔ Correcto:
10.5❌ Incorrecto:
10,5
"10.5"{ "priceCents": 1050 }{ "amount": 10.5, "currency": "BRL" } Siempre usa await
Valida datos antes de usar
Nombra variables claramente
Usa comentarios
Nunca devuelvas JSON inválido