Apresentar dados de registros relacionados
Mostre dados de registros relacionados (por exemplo, informações da Empresa em Oportunidades) usando fluxos de trabalho.
Apresente dados de registros relacionados diretamente nos seus registros — por exemplo, mostre o número de funcionários de uma Empresa nas suas Oportunidades. Esta solução alternativa com fluxos de trabalho é útil até que os campos aninhados estejam disponíveis nativamente.
Casos de uso comuns
| Fonte | Destino | Campos a copiar |
|---|---|---|
| Empresa | Oportunidade | Setor, Tamanho da empresa, ARR |
| Pessoa | Oportunidade | E-mail, Telefone, Cargo |
| Oportunidade | Empresa | Valor do último negócio, Data do último negócio ganho |
Cópia básica de campo
Exemplo: copiar e-mail do contato para a oportunidade
Objetivo: ao definir um ponto de contato numa oportunidade, copiar o e-mail dessa pessoa para a oportunidade para acesso facilitado.
Pré-requisito
Crie os campos de destino em Configurações → Modelo de dados → Oportunidades antes de construir o fluxo de trabalho:
- E-mail do contato (tipo: E-mail)
- Telefone do contato (tipo: Telefone)
Configuração
- Gatilho: Registro é atualizado (Oportunidades, campo Ponto de contato).
- Filtro: verificar que o ponto de contato não está vazio.
- Pesquisar registros: encontrar a pessoa associada.
- Objeto: Pessoas.
- Filtro: ID igual a
{{trigger.object.pointOfContact.id}}.
- Atualizar registro:
- Objeto: Oportunidades.
- Registro:
{{trigger.object.id}}. - E-mail do contato:
{{searchRecords[0].email}}. - Telefone do contato:
{{searchRecords[0].phone}}.
Copiar vários campos
Exemplo: sincronizar informações da empresa com todas as oportunidades relacionadas
Objetivo: quando os detalhes da empresa mudarem, atualizar todas as oportunidades relacionadas.
Configuração
- Gatilho: Registro é atualizado (Empresas).
- Campos: Setor, Tamanho da empresa, Receita anual.
- Pesquisar registros: encontrar todas as oportunidades desta empresa.
- Objeto: Oportunidades.
- Filtro: ID da empresa igual a
{{trigger.object.id}}.
- Iterador: percorrer cada oportunidade.
- Atualizar registro (dentro do iterador):
- Objeto: Oportunidades.
- Registro:
{{iterator.currentItem.id}}. - Setor da empresa:
{{trigger.object.industry}}. - Tamanho da empresa:
{{trigger.object.companySize}}. - ARR da empresa:
{{trigger.object.annualRevenue}}.
Copiar na criação do registro
Exemplo: preencher a oportunidade com dados da empresa
Objetivo: ao criar uma oportunidade vinculada a uma empresa, copiar automaticamente as informações principais da empresa.
Pré-requisito
Crie os campos de destino em Configurações → Modelo de dados → Oportunidades:
- Setor da empresa (tipo: Texto)
- Tamanho da empresa (tipo: Número)
Configuração
- Gatilho: Registro é criado (Oportunidades).
- Filtro: Empresa não está vazia.
- Pesquisar registros: obter os detalhes da empresa associada.
- Objeto: Empresas.
- Filtro: ID igual a
{{trigger.object.company.id}}.
- Atualizar registro:
- Objeto: Oportunidades.
- Registro:
{{trigger.object.id}}. - Setor da empresa:
{{searchRecords[0].industry}}. - Tamanho da empresa:
{{searchRecords[0].employees}}.
Limitação de Tarefas e Notas: as relações em Tarefas e Notas são pré-definidas como muitos-para-muitos e ainda não estão disponíveis em gatilhos ou ações de fluxos de trabalho. Para acessar estas relações, use a API.
Sincronização bidirecional
Exemplo: manter o contato principal sincronizado
Objetivo: quando o contato principal de uma empresa mudar, atualizar o contato. Quando uma pessoa se tornar principal, atualizar a empresa.
Fluxo de trabalho 1: Empresa → Pessoa
- Gatilho: Registro é atualizado (Empresas, campo Contato principal).
- Atualizar registro: definir “É contato principal” da pessoa como verdadeiro.
- Pesquisar registros: encontrar o contato principal anterior.
- Atualizar registro: definir “É contato principal” do contato anterior como falso.
Fluxo de trabalho 2: Pessoa → Empresa
- Gatilho: Registro é atualizado (Pessoas, É contato principal = verdadeiro).
- Atualizar registro: definir o contato principal da empresa para esta pessoa.
Tenha cuidado com sincronizações bidirecionais para evitar ciclos infinitos. Use filtros para verificar se o valor realmente mudou antes de atualizar.
Usar Código para mapeamento complexo
Exemplo: transformar dados durante a cópia
Objetivo: copiar e formatar o número de telefone da pessoa para a oportunidade.
export const main = async (params) => {
const { phone } = params;
if (!phone) return { formattedPhone: null };
// Remove caracteres não numéricos
const digits = phone.replace(/\D/g, '');
// Formata como (XX) XXXXX-XXXX
const formatted = digits.length === 11
? `(${digits.slice(0,2)}) ${digits.slice(2,7)}-${digits.slice(7)}`
: phone;
return { formattedPhone: formatted };
};Melhores práticas
Evitar ciclos
- Não crie fluxos de trabalho que disparem uns aos outros indefinidamente.
- Use condições específicas de campo.
- Adicione verificações para ver se o valor realmente mudou.
Tratar dados ausentes
- Verifique sempre se o registro de origem existe antes de copiar.
- Forneça valores padrão para campos opcionais.
- Use filtros para ignorar quando o campo de origem estiver vazio.
Desempenho
- Agrupe atualizações ao copiar para muitos registros.
- Use fluxos de trabalho agendados para operações de sincronização em massa.
- Considere usar o Iterador para atualizações de múltiplos registros.