
Use o ChatGPT já com a base de conhecimento → https://chatgpt.com/share/6a28ddc0-6628-83e9-9e53-8dacedc4c19c ou então baixe o .PDF e alimete seu agente com esta base de conhecimento(KB), no link em anexo abaixo:
https://drive.google.com/file/d/1JmGq1J-H_oqtGT3gqXLftgWiCDdEQghq/view?usp=sharing
Utilize este padrão sempre que precisar gerar códigos para o bloco JavaScript do CRM Datacrazy.
Todo código gerado deve ser:
Seguro
Validado
Resiliente a erros
Pronto para produção
Fácil de manter
Padronizado
Os scripts serão executados dentro do bloco JavaScript do CRM Datacrazy.
Características do ambiente:
JavaScript nativo (sem bibliotecas externas)
Suporte a async/await
Manipulação de campos do lead
Consumo de APIs via fetch
Acesso a datasources
Persistência de dados em campos do CRM
Retorno obrigatório em formato JSON
Sempre solicitar ou considerar:
Exemplos:
Webhook
API
Campo do CRM
Datasource
Exemplo:
Api-request-1
Caso os dados venham de um webhook, solicitar o JSON recebido.
Payload: conjunto de dados recebidos pelo sistema.
Sempre utilizar operações assíncronas com await.
Utilizar acesso seguro:
obj?.campo
Exemplo:
if (data?.telefone) {
// processamento
}
Todo valor deve ser validado antes de ser utilizado.
Nunca assumir que uma informação está correta apenas porque foi informada.
Sempre validar e confirmar através dos dados disponíveis.
Quando o resultado for utilizado em agendamentos do CRM, o formato de saída deve ser obrigatoriamente:
2026-03-31T00:59:00:000-03:00
A data e hora podem variar, porém o formato deve permanecer exatamente igual.
Qualquer alteração na estrutura poderá impedir o funcionamento do agendamento.
Permitido:
fetch()
Date()
JSON
Não permitido:
moment
axios
lodash
dayjs
Todo código deve possuir tratamento de exceções.
Sempre garantir que o lead existe e que os dados são válidos antes de gravar informações.
Todo erro deve ser tratado adequadamente.
O código não deve quebrar a execução do fluxo.
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"];
Utilizar nomes de variáveis claros
Validar absolutamente todos os dados
Evitar sobrescrever informações existentes
Retornar dados úteis para depuração
Comentar trechos importantes
Pensar sempre em ambiente de produção
Priorizar legibilidade e manutenção
// ##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
};
}
Caso algo não funcione corretamente, solicitar ao usuário:
Copie o erro (botão direito → copiar) e envie aqui.
Se possível, envie um print da tela.
Envie o JSON recebido pelo webhook ou datasource.
Dados recebidos pelo sistema.
Mensagem que informa o motivo da falha.
Fonte de dados utilizada pelo bloco JavaScript.
Todo código gerado deve ser:
Seguro
Validado
Robusto
Padronizado
Fácil de entender
Preparado para produção
Compatível com o CRM Datacrazy
Ao finalizar qualquer análise ou geração de código, responder apenas:
Como posso ajudar?
Acesse o ChatGPT Diretamente neste Link →https://chatgpt.com/share/69e58457-b630-83e9-b8ef-8c7dbf0653ab
KB Para Claude Code em .PDF→ https://drive.google.com/file/d/1zlkvheDSY7npEQk1MNfSpMqfC9tqovqD/view?usp=sharing

O bloco <> JavaScript é um dos, se não o mais poderoso dos blocos, dado a ampla e gigantesca utilidade, podendo usar programação para validações e configurações de diferentes saídas de dados.
⚠ Este recurso pressupõe conhecimento prévio em programação.
O suporte não cobre dúvidas introdutórias sobre lógica ou código.
👉 Dúvidas técnicas sobre funcionamento do bloco podem ser enviadas ao suporte normalmente.
💡 Recomendação: Aprenda o básico de JavaScript — isso será um marco no uso da Datacrazy.
Comentários
Parâmetros
Variáveis e Constantes
Objetos e Arrays
GET / POST
Webhook
Dados de Lead e Negócio
Salvamento de dados
Retorno JSON
Boas práticas
Comentários são ignorados pelo sistema.
// Isso é um comentário/*
Tudo aqui será ignorado
Inclusive código
*/isso não é comentário // ❌ vai quebrar o códigoGuardam valores que podem mudar:
let fruta = 'maçã';let frutas = ["uvaBah", "banana", "maçã"];Não podem ser alteradas:
const nomeLead = "Tiger Allan";❌ Erro:
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);⚠ Regra obrigatória:
Nome + Telefone
ou
Nome + 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 → lê dados do webhook
setValue → identifica o lead
setAdditionalValue → salva dados
return → retorna JSON
⚠ Dependem de condicionamento no fluxo
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
✔ Use corretamente:
string → texto
number → números
boolean → true/false
null → ausência
❌ Evite:
"10" (número como string)
"true"
"" como vazio
undefined
NaN / Infinity
✔ Correto:
10.5❌ Errado:
10,5
"10.5"{ "priceCents": 1050 }{ "amount": 10.5, "currency": "BRL" } Sempre use await
Valide dados antes de usar
Nomeie variáveis claramente
Use comentários
Nunca retorne JSON inválido