# 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.](/systems/crm/screens/core-campaign.png)](/systems/crm/screens/core-campaign.png)

*O intake de Campaign no Core começa pelo objetivo e público.*

[Abrir intake no Core](https://airtable.com/appxf21fNB81BxSVM/tbliNtf0LDYatxBVC/viwDxWscnWXw8MAsS).

[![O Step 2 pede uma organização responsável e uma membership ativa nela.](/systems/core/screens/core-campaign-step-2.png)](/systems/core/screens/core-campaign-step-2.png)

## 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](/pt-br/systems/core/tag) · vários registros |
| Accountable (Organization)* | Vínculos | Vincula a única organização responsável por esta campanha. | → [Organization](/pt-br/systems/core/organization) · um registro |
| Accountable (Membership)* | Vínculos | Vincula a única membership responsável por coordenar esta campanha. | → [Membership](/pt-br/systems/core/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

```text
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

```text
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](/pt-br/systems/core/architecture).

| Sistema | Tabela local | Observação |
| --- | --- | --- |
| CRM | [Campaign (mirror)](/pt-br/systems/crm/entity-campaign) | unidirecional, verificado; os Deals a ligam em Campaign°, listados em Deals (Campaign) |
| KPIs & OKRs | [Sync - Campaign](/pt-br/systems/kpis-okrs/entity-sync-campaign) | — |

[Corrigir registros compartilhados](/pt-br/systems/core/maintain-shared-records) · [Todas as entidades](/pt-br/systems/core/entities)