# Formulário de RSVP de casamento no seu próprio site de casamento

> Um formulário de RSVP para um site de casamento feito por você: uma resposta por convite, uma refeição por convidado, um prazo e a lista de quem não respondeu.

Publicado em 2026-10-25 · https://ikiform.com/pt-br/guides/event-registration/wedding-rsvp

Dê a cada convite o seu próprio link de RSVP com um código de convite e os nomes dos convidados, e deixe o formulário mostrar um nome e uma escolha de refeição por convidado. Cada resposta é enviada ao Ikiform, então você recebe um e-mail para cada uma e um CSV para entregar ao buffet. Cruze as respostas com sua lista de convidados numa planilha para ver quem não respondeu e pause o formulário depois do prazo.

## O que muda num casamento

Um meetup conta desconhecidos. Um casamento conta uma lista de convidados que você já tem, convite por convite. Daí vêm quatro coisas:

- **Uma resposta por convite, não por pessoa.** Um casal ou uma família responde junto.
- **Convidados com nome, não um número de convidados.** Você convidou Ada e Sam, não `2`. O acompanhante está no convite ou não está.
- **Uma refeição por pessoa.** O buffet precisa dos totais de peixe, carne e vegetariano, mais os pratos infantis.
- **Um prazo rígido e uma lista de cobrança.** O local quer os números até uma data, e a lista útil é a de quem não respondeu.

Serviços de site de casamento como Zola, The Knot e Joy têm ferramentas de RSVP montadas em torno de uma lista de convidados, com busca por nome. Se você usa um deles para o seu site, use o RSVP dele. Esta página é para um site de casamento que você mesmo fez, no Squarespace, Carrd, Framer ou HTML puro, em que você quer o RSVP na sua própria página.

O Ikiform não tem busca em lista de convidados nem grupos repetidos, então o formulário não sabe sozinho quem está num convite. O truque é colocar essa informação no link.

Diagrama: Da lista de convidados aos números do buffet, com links de RSVP personalizados

1. Sua planilha de convidados tem uma linha por convite: um código curto, o nome da família e os nomes dos convidados.
2. Uma fórmula transforma cada linha num link de RSVP personalizado com o código e os nomes.
3. Você imprime o link como QR code no convite ou o envia numa mensagem.
4. A página de RSVP lê o link e mostra um nome e uma escolha de refeição por convidado, e depois envia ao Ikiform.
5. Você exporta as respostas como CSV e as importa ao lado da lista de convidados.
6. Cruzar os códigos mostra quais convites não responderam, então você sabe quem cobrar.
7. Contar cada refeição nas respostas dá os totais do buffet.

A lista de convidados fica na sua planilha. O link leva só o suficiente dela para personalizar o formulário.

## Crie um link para cada convite

Na sua planilha de convidados, coloque um código curto na coluna A, como `okafor` ou `nguyen-family`, a família na B e os primeiros nomes dos convidados na C, separados por vírgulas. Esta fórmula na D monta o link:

`Lista de convidados, coluna D`:

```text
="https://ada-and-sam.example/rsvp?party=" & A2 & "&names=" & ENCODEURL(C2)
```

Imprima cada link como QR code no convite ou cole-o numa mensagem. Mantenha os códigos em minúsculas com hífens; o pattern do campo recusa qualquer outra coisa, o que pega cedo um código digitado errado.

## O formulário

Cole isto na sua página de casamento, ou num bloco de embed de um criador de sites. Ele lê `party` e `names` do link, adiciona uma linha de nome e refeição por convidado, até quatro, e se esconde depois do prazo. Sem nomes no link, ele mostra uma única linha para preencher.

`rsvp.html`:

```html
<form id="rsvp" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <input type="hidden" name="party" id="party">
  <div id="guests"></div>
  <label>Email for updates <input name="email" type="email" autocomplete="email" required></label>
  <label>A song that gets you dancing <input name="song" maxlength="120"></label>
  <label>Anything we should know? <textarea name="note" rows="3" maxlength="1000"></textarea></label>
  <input type="hidden" name="_redirect" value="https://ada-and-sam.example/thank-you">
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
  <button type="submit">Send our RSVP</button>
</form>
<p id="closed" hidden>RSVPs closed on 1 May. Message us if your plans have changed.</p>

<template id="guest-row">
  <fieldset>
    <legend></legend>
    <label>Name <input data-part="name" maxlength="80" autocomplete="off"></label>
    <label>Meal
      <select data-part="meal">
        <option value="beef">Beef</option>
        <option value="fish">Fish</option>
        <option value="vegetarian">Vegetarian</option>
        <option value="child">Child's menu</option>
        <option value="not_coming">Can't come</option>
      </select>
    </label>
  </fieldset>
</template>

<script>
  const DEADLINE = new Date("2027-05-01T23:59:00+01:00");
  const params = new URLSearchParams(location.search);
  const party = (params.get("party") ?? "").toLowerCase();
  const names = (params.get("names") ?? "").split(",").map((name) => name.trim()).filter(Boolean).slice(0, 4);
  const rsvp = document.getElementById("rsvp");

  if (Date.now() > DEADLINE.getTime()) {
    rsvp.hidden = true;
    document.getElementById("closed").hidden = false;
  } else {
    document.getElementById("party").value = party;
    const rows = names.length ? names : [""];
    rows.forEach((name, index) => {
      const n = index + 1;
      const row = document.getElementById("guest-row").content.cloneNode(true);
      row.querySelector("legend").textContent = name || "Your name";
      const input = row.querySelector('[data-part="name"]');
      input.name = `guest_${n}_name`;
      input.value = name;
      input.required = n === 1;
      row.querySelector('[data-part="meal"]').name = `guest_${n}_meal`;
      document.getElementById("guests").append(row);
    });
  }
</script>
```

- A refeição de cada convidado inclui `Can't come`, então uma família em que uma pessoa não pode ir ainda envia uma única resposta.
- Os campos de nome vêm preenchidos, mas são editáveis, então um convidado pode corrigir a grafia ou dar o nome de uma criança.
- O formulário envia do jeito tradicional e cai na sua página de agradecimento via `_redirect`. Coloque lá a data, o local e um link de calendário; o Ikiform não envia e-mail aos seus convidados.
- O prazo só esconde o formulário no navegador. No dia do prazo, escolha **Pause form** no Ikiform também, para que uma aba salva não consiga enviar. Formulários pausados respondem `403 form_paused`.

Cole esta definição na aba **Fields** do formulário. Experimente: um código de convite com letra maiúscula ou espaço falha no pattern, com a mensagem que você definiu.

Formulário: Wedding RSVP

- **Código do convite** (`party`, text, obrigatório)
- **E-mail para novidades** (`email`, email, obrigatório)
- **Nome do convidado 1** (`guest_1_name`, text, obrigatório)
- **Refeição do convidado 1** (`guest_1_meal`, select, obrigatório)
- **Nome do convidado 2** (`guest_2_name`, text)
- **Refeição do convidado 2** (`guest_2_meal`, select)
- **Nome do convidado 3** (`guest_3_name`, text)
- **Refeição do convidado 3** (`guest_3_meal`, select)
- **Nome do convidado 4** (`guest_4_name`, text)
- **Refeição do convidado 4** (`guest_4_meal`, select)
- **Uma música que faz você dançar** (`song`, text)
- **Algo que a gente deva saber?** (`note`, textarea)

Os campos seguem a ordem do convite, então o CSV traz o nome de cada convidado seguido da refeição dele. Só o primeiro convidado é obrigatório.

## Quem não respondeu e o que encomendar

1. Exporte os RSVPs como CSV em **Submissions** e importe-os numa aba chamada `Replies` na planilha da lista de convidados.
2. Se um convite respondeu duas vezes, mantenha a linha mais nova: ordene por `created_at`, do mais novo para o mais antigo, e remova os duplicados na coluna `party`.
3. Liste os convites sem resposta, com os códigos na coluna A da lista de convidados e `party` na coluna E de Replies:

`Não responderam`:

```text
=FILTER(A2:C, A2:A <> "", ISNA(MATCH(A2:A, Replies!E2:E, 0)))
```

Depois conte cada refeição para o buffet. Os nomes nunca são iguais a um valor de refeição, então um único intervalo cobrindo todas as colunas de convidados funciona:

`Pratos de peixe`:

```text
=COUNTIF(Replies!G2:N, "fish")
```

| Número | Como |
| --- | --- |
| Pessoas que vêm | Some as contagens de `beef`, `fish`, `vegetarian` e `child` |
| Não poderá ir | `COUNTIF` no mesmo intervalo para `not_coming` |
| Pratos infantis | `COUNTIF` para `child`, que a maioria dos bufês cobra à parte |
| Observações alimentares | Leia a coluna `note`. É ali que as alergias aparecem |

> Os e-mails de notificação chegam com o e-mail de cada convidado como reply-to, então você pode responder dúvidas direto da sua caixa de entrada. O Ikiform envia e-mail para você e seu par, não para os convidados.

## Antes de enviar os convites

- Defina **Allowed domains** com o domínio do seu site de casamento, e com o domínio de staging do criador de sites enquanto testa.
- O Ikiform não mescla nem rejeita envios repetidos pelo e-mail. Uma repetição idêntica em até 24 horas só aumenta a pontuação de spam. Remova os duplicados onde a lista fica, ou na hora de exportar. A resposta mais nova por código é a que vale.
- Qualquer pessoa com um link pode mudar o código ou os nomes dele. Para um casamento, tudo bem; sua planilha decide quem foi convidado, e a lista de quem não respondeu mostra qualquer coisa estranha.
- Parentes mais velhos talvez nem usem o formulário. Anote na planilha as respostas por telefone e em papel para as contagens continuarem completas.

## Confira antes de enviar os convites

1. Abra o seu próprio link de convite num celular. Os nomes aparecem, cada um com uma escolha de refeição.
2. Escolha `Can't come` para um convidado, envie e confira se você cai na sua página de agradecimento.
3. Abra **Submissions** no painel. O novo envio está lá com todos os campos que você enviou.
4. Confira a caixa de entrada de cada destinatário das notificações. Cada um recebe um e-mail com os campos, e **Reply** vai para quem enviou quando o formulário tem um campo `email`.
5. Importe o CSV e confira se a lista de quem não respondeu não mostra mais o seu código.
6. Numa cópia de teste, defina o prazo como ontem e confirme que o formulário some.

## Pegadinhas

| Problema | O que fazer |
| --- | --- |
| `422` com `party: Use the link from your invitation` | O código tem maiúsculas, espaços ou outros caracteres. Corrija o código na planilha ou peça ao convidado para usar o link dele. |
| Um convidado vê uma linha vazia em vez dos nomes | O link perdeu a parte `names`, muitas vezes porque um app de mensagens o encurtou. Envie o link completo ou o QR code. |
| `422 validation_failed` | O envio não corresponde à definição de campos do formulário. `error.fields` aponta cada campo e o motivo. Faça o `name` do input bater com o id do campo. |
| `403 origin_not_allowed`, ou todo envio cai no spam | O domínio da página não está em **Allowed domains** do formulário. Adicione-o, mais `localhost` para testes locais. Subdomínios de um domínio listado são permitidos. |
| O navegador cai na página de agradecimento do Ikiform em vez da sua | O `_redirect` é ignorado, a menos que o domínio dele esteja em **Allowed domains** e ele seja uma URL `https:`. Adicione o domínio, ou defina **Redirect after submit** nas configurações do formulário. |

## Perguntas

### Os convidados conseguem ver quem mais vai?

Não. Os RSVPs vão para o seu painel do Ikiform e para a sua caixa de entrada. Nada é publicado de volta no site.

### O formulário pode enviar um e-mail de confirmação aos convidados?

Não pelo Ikiform, que só envia e-mail para você. Mostre os detalhes na página de agradecimento, ou envie cada resposta por webhook para uma ferramenta de e-mail e mande a confirmação de lá.

### Como paro de receber RSVPs depois do prazo?

Esconda o formulário na página depois da data, como o exemplo faz, e escolha Pause form no Ikiform. Um formulário pausado recusa novos envios com 403 form_paused.

### E se um convidado responder duas vezes?

As duas respostas são armazenadas. Ao contar, mantenha a mais nova por código de convite, ordenando da mais nova para a mais antiga e removendo os duplicados pelo código.

### O Ikiform é gratuito?

Não, não há plano gratuito. Testar é grátis: você pode enviar 50 envios de teste por mês a partir de localhost antes de pagar. Para entrar no ar, o Pro começa em US$ 6/mês para 500 envios, ou você pode pagar uma vez 10.000 envios por US$ 49 ou 50.000 envios por US$ 149, com créditos que nunca expiram.

## Mais guias

- [Inscrição em eventos](https://ikiform.com/pt-br/guides/event-registration.md): Receba confirmações de presença na página do seu evento: formulário, limite de convidados, contagem honesta, encerramento ao lotar e lista de check-in, sem app de ingressos.
- [Sem Eventbrite](https://ikiform.com/pt-br/guides/event-registration/without-eventbrite.md): Faça as inscrições de um evento comunitário gratuito no seu próprio site: escolha de sessões, e-mail de confirmação pela sua ferramenta, contagem por sala e lista de check-in.
- [Inscrição de voluntários](https://ikiform.com/pt-br/guides/event-registration/volunteer-signup.md): Um formulário de inscrição de voluntários em que as pessoas escolhem turnos, com telefone para o dia, e um script que mostra os turnos desfalcados e monta a escala.
