Campaign
Uma iniciativa compartilhada com objetivo, público, organização responsável e ciclo de vida.
Tabela de origem: Campaign em Core Record Types (ops:Campaign, pendente de publicação no vocabulário). Uma Campaign é uma iniciativa coordenada de uma organização com objetivo e público definidos. Pode ser contínua e reunir canais, ações e ofertas. Cada edição acompanhada de forma independente tem um coreId armazenado. Nomes e tags não são identidade única. O Core mantém a iniciativa; o CRM mantém inscrição e atribuição comercial principal.
Regras e responsabilidade
Use as views de intake de Campaign em Data: Step 1 define Name*, Description* e Audience Definition*; Step 2 vincula exatamente uma Accountable (Organization)* e uma Accountable (Membership)* ativa nela; Step 3 preenche Start Date* e End Date° opcional; Step 4 resolve Campaign Check e define Lifecycle Status*. O fim não pode anteceder o início. Checks e views orientam a operação; não bloqueiam toda escrita.
O intake de Campaign no Core começa pelo objetivo e público.
Ciclo de vida e verificações
Draft prepara, Active executa, On Hold pausa, Completed encerra normalmente, Cancelled registra interrupção e Archived preserva histórico. Step 1 - Review the campaign lifecycle lista linhas Active e On Hold; Orphans - Set lifecycle status lista linhas mantidas sem status. deletedAt é retirada lógica, separada de Archived. Não invente sourceSystem nem syncRun.
Campaign — assign immutable coreId está implantada. Atribui UUID ausente quando a linha é criada e preserva identidades existentes; não é trava atômica de concorrência. Recupere o UUID apagado por engano, em vez de criar outra identidade. A view Sync - Campaign publica 16 campos compartilhados; os seis auxiliares de intake ficam no Core. O consumidor CRM preserva linhas excluídas na origem; use deletedAt e reconcilie exclusões definitivas explicitamente. No CRM a campanha é ligada a partir do Deal (Deal.Campaign°, inverso Deals (Campaign) no espelho); o resultado de uma campanha são os Deals ligados a ela.
Campos da origem
Nomes, tipos, opções e vínculos são os configurados em Core Record Types. O significado é a primeira linha da descrição de cada campo no Airtable. As opções descrevem configuração; não provam que uma regra seja aplicada em outro lugar.
Valores registrados
| Campo | Tipo | Significado | Opções, vínculo ou cálculo |
|---|---|---|---|
| Name* | Texto | Guarda o nome desta campanha específica. | Valor informado. |
| Description* | Texto longo | Guarda o objetivo e o contexto desta campanha. | Valor informado. |
| Audience Definition* | Texto longo | Guarda os critérios que descrevem o público pretendido. | Valor informado. |
| Lifecycle Status* | Seleção única | Guarda o ciclo de vida da campanha. | Draft, Active, Completed, On Hold, Cancelled, Archived |
| Attachments | Anexos | Guarda briefings e arquivos de apoio desta campanha. | Valor informado. |
| Start Date* | Data | Guarda a data planejada de início desta campanha. | Valor informado. |
| End Date° | Data | Guarda a data planejada de término desta campanha. | Valor informado. |
| coreId | Texto | Guarda o UUID permanente desta campanha. | Valor informado. |
| deletedAt | Data e hora | Guarda quando este registro foi excluído logicamente. | Valor informado. |
| sourceSystem | Texto | Guarda o sistema em que o registro se originou. | Valor informado. |
| syncRun | Texto | Guarda a referência da execução de ingestão fornecida por uma integração. | Valor informado. |
Vínculos
| Campo | Tipo | Significado | Opções, vínculo ou cálculo |
|---|---|---|---|
| Tags | Vínculos | Vincula rótulos usados para encontrar e agrupar esta campanha. | → Tag · vários registros |
| Accountable (Organization)* | Vínculos | Vincula a única organização responsável por esta campanha. | → Organization · um registro |
| Accountable (Membership)* | Vínculos | Vincula a única membership responsável por coordenar esta campanha. | → Membership · um registro |
Calculados
| Campo | Tipo | Significado | Opções, vínculo ou cálculo |
|---|---|---|---|
| Accountable (Organization Count) | Contagem | Conta as organizações responsáveis vinculadas a esta campanha. | Contagem de Accountable (Organization)* |
| Accountable (Membership Count) | Contagem | Conta as memberships responsáveis vinculadas a esta campanha. | Contagem de Accountable (Membership)* |
| Accountable (Membership Status) | Lookup | Mostra o status atual da membership responsável. | Lookup de Membership Status por Accountable (Membership)* |
| Accountable (Business Unit) | Lookup | Mostra a organização da membership responsável. | Lookup de Business Unit por Accountable (Membership)* |
| Campaign Check | Fórmula | Mostra as objeções à ativação desta campanha. | Fórmula abaixo. |
| Intake Step | Fórmula | Mostra o próximo passo do intake de Campaign. | Fórmula abaixo. |
Gerados pelo Airtable
| Campo | Tipo | Significado | Opções, vínculo ou cálculo |
|---|---|---|---|
| createdAt | Data de criação | Shows when this Airtable row was created. | Valor de sistema do Airtable. |
| updatedAt | Data da última alteração | Shows the latest edit to this row. | Valor de sistema do Airtable. |
Fórmulas atuais
Os IDs de campo aparecem como os nomes atuais dos campos.
Campaign Check
IF({Name*}=BLANK(),"⚠ Missing Name. ","") &
IF({Description*}=BLANK(),"⚠ Missing objective. ","") &
IF({Audience Definition*}=BLANK(),"⚠ Missing audience definition. ","") &
IF({Accountable (Organization)*}=BLANK(),"⚠ Missing accountable organization. ","") &
IF({Accountable (Membership)*}=BLANK(),"⚠ Missing accountable membership. ","") &
IF({Start Date*}=BLANK(),"⚠ Missing start date. ","") &
IF(AND({Accountable (Membership)*},ARRAYJOIN({Accountable (Membership Status)})!="Active"),"⚠ Accountable membership is not Active. ","") &
IF(AND({Accountable (Organization)*},{Accountable (Membership)*},({Accountable (Organization)*}&"")!=ARRAYJOIN({Accountable (Business Unit)})),"⚠ Membership does not belong to accountable organization. ","") &
IF(AND({Start Date*},{End Date°},IS_BEFORE({End Date°},{Start Date*})),"⚠ End date precedes start date. ","") &
IF({Accountable (Organization Count)}>1,"⚠ More than one accountable organization. ","") &
IF({Accountable (Membership Count)}>1,"⚠ More than one accountable membership. ","") &
IF({coreId}=BLANK(),"⚠ Waiting for campaign identity. ","")
Intake Step
IF({deletedAt},"",IF(OR({Lifecycle Status*}="Draft",{Lifecycle Status*}=BLANK()),IF(OR({Name*}=BLANK(),{Description*}=BLANK(),{Audience Definition*}=BLANK()),"Create - 1",IF(OR({Accountable (Organization)*}=BLANK(),{Accountable (Membership)*}=BLANK()),"Create - 2",IF({Start Date*}=BLANK(),"Create - 3","Create - 4"))),IF(OR({Lifecycle Status*}="Active",{Lifecycle Status*}="On Hold"),"Manage - 1","")))
Exemplo (fictício)
“Spring Roof Check” é um Draft com objetivo e público de proprietários de uma região. A Example Roofing LLC e uma membership ativa de vendas são responsáveis. Depois de Start Date* preenchido e Campaign Check vazio, quem mantém escolhe Active; os vendedores do CRM ligam a ela o Deal de cada lead, em Campaign°.
Uso por outros sistemas
Direção do sync e view de origem só estão confirmadas onde a observação diz; veja Arquitetura e responsabilidades.
| Sistema | Tabela local | Observação |
|---|---|---|
| CRM | Campaign (mirror) | unidirecional, verificado; os Deals a ligam em Campaign°, listados em Deals (Campaign) |
| KPIs & OKRs | Sync - Campaign | — |

