> ## Documentation Index
> Fetch the complete documentation index at: https://docs.crmspark.com.br/llms.txt
> Use this file to discover all available pages before exploring further.

# Criar um formulário

> Monte um fluxo de qualificação para uma landing, conecte aos canais WhatsApp e publique por link; no final, incorpore no site com iframe.

Este guia usa um caso simples: uma **landing de produto** onde o visitante indica **porte da empresa** e **interesse** antes de informar nome e WhatsApp, para o time já receber a conversa qualificada no inbox.

Antes de começar, tenha **ao menos um WhatsApp ou WhatsApp Lite** configurado em [Integrações](https://crmspark.com.br/dash/settings/integrations) — o formulário precisa de destinos válidos. O conceito geral está em [Formulários de captação](/conceitos/formularios-de-captacao).

## 1. Abrir a criação

1. Entre no painel com a organização correta.
2. Vá em [Formulários](https://crmspark.com.br/dash/forms).
3. Clique em criar novo formulário (`/dash/forms/create`).

## 2. Nome, descrição e destinos

* **Nome:** algo que a equipe reconheça na lista, por exemplo `Landing — Qualificação demo`.
* **Descrição (opcional):** nota interna sobre campanha ou página onde o link será usado.
* **Destinos:** selecione **um ou mais** entrypoints de WhatsApp / WhatsApp Lite para os quais lead e chat devem ser criados ao enviar. Sem destino válido o fluxo não publica.

## 3. Montar o fluxo no canvas

O editor já traz um esqueleto com **Início**, **Nome e telefone** e **Fim**. Para o exemplo de qualificação:

1. Arraste um bloco **Pergunta** do painel lateral para o canvas.
2. Conecte **Início** → **primeira pergunta** (arraste da saída do Início até o bloco de pergunta).
3. Conecte a última pergunta da cadeia → **Nome e telefone** → **Fim**.

Ordem lógica sugerida: primeiro perguntas de qualificação, depois captura de contato (é exigido haver caminho do início até “Nome e telefone” e da captura até um “Fim”).

## 4. Configurar cada pergunta

Clique no ícone de ajustes do bloco **Pergunta**:

* **Nome no canvas:** rótulo curto para você (ex.: “Porte”).
* **Tipo de resposta:** escolha única ou múltipla escolha.
* **Texto da pergunta:** o que o visitante lê (ex.: “Quantas pessoas na equipe de vendas?”).
* **Opções:** ao menos duas, cada uma com rótulo claro.

Para **escolha única**, ligue **cada opção** a um próximo bloco (pode ser outra pergunta ou ir direto para “Nome e telefone” se não houver mais perguntas). O sistema exige que **toda opção** tenha um destino.

Para **múltipla escolha**, use as saídas combinando opções conforme o editor indicar (fluxos “qualquer opção marcada” vs “todas marcadas”).

## 5. Ajustar “Nome e telefone”

No bloco de captura, personalize os rótulos se quiser (nome do campo, telefone, texto do botão de envio), mantendo clareza para quem preenche no celular.

## 6. Salvar e testar

1. Salve o formulário. Erros de estrutura aparecem com mensagens objetivas (caminhos faltando, opção sem ligação etc.).
2. Depois de salvo, use a seção **“Como usar fora do painel”** na tela de edição: copie o **link completo** (já no formato `https://sparkforms.com.br/{id público}?apiKey=...`).
3. Troque o trecho da chave pela **chave de API real** da organização ([Desenvolvedores](https://crmspark.com.br/dash/settings/developers)).
4. Abra o link em uma aba anônima e faça um envio de teste com um número que possa receber WhatsApp.

Confira no [Inbox](https://crmspark.com.br/dash/chats) se a conversa abriu nos destinos escolhidos.

## 7. Pausar ou retomar

Use o controle de **ativo / inativo** do formulário para encerrar uma campanha sem apagar o fluxo.

***

## Extra: incorporar no site com iframe

Quando o formulário já está salvo e testado por link, você pode embuti-lo em qualquer página HTML.

### Chave de API na URL

A página pública (`sparkforms.com.br`) precisa carregar a definição do formulário pela API do gateway. Por isso a URL inclui `apiKey=` com a chave da empresa (a mesma do passo de teste). **Não commite** essa chave em repositório público; em CMSs, use variáveis de ambiente ou campos seguros de “HTML personalizado” se a plataforma permitir.

### Código de exemplo

Substitua `SEU_PUBLIC_ID` pelo ID público de 16 caracteres exibido no painel e `SUA_CHAVE_DE_API` pela chave real:

```html theme={null}
<iframe
  src="https://sparkforms.com.br/SEU_PUBLIC_ID?apiKey=SUA_CHAVE_DE_API"
  title="Formulário"
  width="100%"
  height="640"
  style="border:0;max-width:100%"
></iframe>
```

Ajuste `height` conforme o número de perguntas (formulários longos podem precisar de mais pixels ou de CSS no container).

### Domínios autorizados (iframe)

Se você configurou **origens permitidas para iframe** no formulário, liste cada site onde o embed será usado. Origens que não estiverem na lista podem ser bloqueadas quando a proteção de frame estiver ativa no ambiente público.

### Boas práticas rápidas

* Teste no **mesmo domínio** de produção após publicar o iframe (cookies e políticas de embed variam).
* Em páginas com CSP estrito, confirme com quem mantém o site se `frame-src` (ou equivalente) inclui `https://sparkforms.com.br`.
* Para campanhas temporárias, **desative** o formulário quando a landing sair do ar, em vez de deixar o embed apontando para fluxo ativo sem uso.

<Warning title="Segurança da chave">
  Trate a chave de API como credencial de integração: quem possui a chave pode consumir os endpoints permitidos para o tenant. Rotacione em Desenvolvedores se vazar e prefira não expor a chave em repositórios ou tutoriais públicos com valor real.
</Warning>

Quer revisar o modelo mental antes de publicar? Volte a [Formulários de captação](/conceitos/formularios-de-captacao).
