Saltar para o conteúdo principal
A Twenty ainda não oferece suporte nativo a campos de fórmula (chegando em 2026), mas você pode obter o mesmo resultado usando fluxos de trabalho. Esta solução alternativa permite calcular e preencher automaticamente os valores dos campos — de concatenações simples a lógica de negócios complexa.

Casos de Uso Comuns

Caso de usoExemplo de fórmula
Nome completoNome + ” ” + Sobrenome
Valor esperadoValor × Probabilidade
Dias até o vencimentoData de vencimento - hoje
Dias na etapaHoje - Data de entrada na etapa
Pontuação de leadPontos com base em vários critérios
Para um exemplo completo de rastreamento do tempo nas etapas do pipeline, consulte Acompanhar por quanto tempo as oportunidades permanecem em cada etapa.

Fórmula básica: Concatenação

Exemplo: Preencher automaticamente o nome completo

Objetivo: Combinar automaticamente nome e sobrenome em um campo de nome completo.

Configuração

  1. Gatilho: Registro é atualizado ou criado (Pessoas)
  2. Filtro: Verifique se o nome ou o sobrenome foi alterado
  3. Ação de código:
export const main = async (params) => {
  const { firstName, lastName } = params;

  const fullName = [firstName, lastName]
    .filter(Boolean)
    .join(' ');

  return { fullName };
};
  1. Atualizar registro: Definir Nome completo como {{code.fullName}}

Fórmula numérica: Valor esperado

Exemplo: Calcular a receita esperada

Objetivo: Multiplicar o valor da oportunidade pela probabilidade para obter o valor esperado. Consulte Como mostrar o valor esperado no pipeline para o fluxo de trabalho completo.

Configuração rápida

  1. Gatilho: Registro é atualizado (Oportunidades, campo Valor OU Probabilidade)
  2. Ação de código:
export const main = async (params) => {
  const { amount, probability } = params;

  const expectedAmount = (amount || 0) * (probability || 0) / 100;

  return { expectedAmount };
};
  1. Atualizar registro: Definir Valor esperado como {{code.expectedAmount}}

Fórmula de data: Cálculo de dias

Exemplo: Dias até o vencimento da tarefa

Objetivo: Calcular quantos dias faltam até a data de vencimento de uma tarefa.

Configuração

  1. Gatilho: Registro é atualizado ou criado (Tarefas, campo Data de vencimento)
  2. Ação de código:
export const main = async (params) => {
  const { dueDate } = params;

  if (!dueDate) {
    return { daysUntilDue: null };
  }

  const due = new Date(dueDate);
  const today = new Date();
  const diffTime = due - today;
  const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));

  return { daysUntilDue: diffDays };
};
  1. Atualizar registro: Definir Dias até o vencimento como {{code.daysUntilDue}}
Valores negativos indicam tarefas em atraso. Você pode usar este campo para filtrar ou classificar tarefas por urgência.

Fórmula condicional: Pontuação de lead

Exemplo: Calcular a pontuação de lead com base em critérios

Objetivo: Pontuar leads com base no porte da empresa, setor e engajamento.

Configuração

  1. Gatilho: Registro é atualizado (Pessoas ou Empresas)
  2. Ação de código:
export const main = async (params) => {
  const { companySize, industry, hasEmail, hasPhone, source } = params;

  let score = 0;

  // Company size scoring
  if (companySize === 'Enterprise') score += 30;
  else if (companySize === 'Mid-Market') score += 20;
  else if (companySize === 'SMB') score += 10;

  // Industry scoring
  const targetIndustries = ['Technology', 'Finance', 'Healthcare'];
  if (targetIndustries.includes(industry)) score += 25;

  // Contact info scoring
  if (hasEmail) score += 10;
  if (hasPhone) score += 15;

  // Source scoring
  if (source === 'Referral') score += 20;
  else if (source === 'Website') score += 10;

  return { leadScore: score };
};
  1. Atualizar registro: Definir Pontuação de lead como {{code.leadScore}}

Fórmula de texto: Extração de domínio

Exemplo: Extrair domínio do e-mail

Objetivo: Extrair e armazenar automaticamente o domínio do e-mail.

Configuração

  1. Gatilho: Registro é atualizado (Pessoas, campo E-mail)
  2. Ação de código:
export const main = async (params) => {
  const { email } = params;

  if (!email) return { domain: null };

  const domain = email.split('@')[1]?.toLowerCase();

  return { domain };
};
  1. Atualizar registro: Definir o campo Domínio como {{code.domain}}

Melhores Práticas

Desempenho

  • Acione apenas em alterações de campos relevantes
  • Use filtros para ignorar registros que não precisam de cálculo
  • Evite cálculos complexos em fluxos de trabalho de alto volume

Tratamento de Erros

  • Verifique valores null/undefined antes dos cálculos
  • Use valores padrão quando faltarem dados
  • Retorne mensagens de erro claras quando os cálculos falharem

Testes

  • Teste com casos extremos (campos vazios, valores zero)
  • Verifique os cálculos manualmente antes de ativar
  • Monitore as execuções de fluxos de trabalho para resultados inesperados

Relacionados