Inscripción a eventos8 min de lectura
Formulario de RSVP para bodas en tu propia web de boda
Un formulario de RSVP para la web de boda que hiciste tú: una respuesta por invitación, un menú por invitado, una fecha límite y la lista de quién no ha respondido.
Da a cada invitación su propio enlace de RSVP con un código de invitación y los nombres de los invitados, y deja que el formulario muestre un nombre y una elección de menú por invitado. Cada respuesta se envía a Ikiform, así que recibes un email por cada una y un CSV para el catering. Cruza las respuestas con tu lista de invitados en una hoja de cálculo para ver quién no ha contestado, y pausa el formulario después de la fecha límite.
Qué tiene de distinto una boda
Un meetup cuenta a desconocidos. Una boda cuenta una lista de invitados que ya tienes, invitación por invitación. De ahí salen cuatro cosas:
- Una respuesta por invitación, no por persona. Una pareja o una familia responde junta.
- Invitados con nombre, no un número de acompañantes. Invitaste a Ada y a Sam, no a
2. Los acompañantes extra están en la invitación o no lo están. - Un menú por persona. El catering necesita los totales de pescado, carne y vegetariano, además de los platos infantiles.
- Una fecha límite estricta y una lista de pendientes. El local quiere los números para una fecha, y la lista útil es la de quién no ha respondido.
Los servicios de webs de boda como Zola, The Knot y Joy tienen herramientas de RSVP pensadas para una lista de invitados, con búsqueda por nombre. Si usas uno de ellos para tu web, usa su RSVP. Esta página es para una web de boda hecha por ti, en Squarespace, Carrd, Framer o HTML simple, donde quieres el RSVP en tu propia página.
Ikiform no tiene búsqueda en una lista de invitados ni grupos repetibles, así que el formulario no puede saber por sí solo quién está en una invitación. El truco es poner esa información en el enlace.
- Tu hoja de la lista de invitados tiene una fila por invitación: un código corto, el nombre del hogar y los nombres de los invitados.
- Una fórmula convierte cada fila en un enlace de RSVP personal que lleva el código y los nombres.
- Imprimes el enlace como código QR en la invitación, o lo envías en un mensaje.
- La página de RSVP lee el enlace y muestra un nombre y una elección de menú por invitado, y luego envía a Ikiform.
- Exportas las respuestas como CSV y las importas junto a la lista de invitados.
- Al cruzar los códigos ves qué invitaciones no han respondido, y sabes a quién recordárselo.
- Contar cada menú en todas las respuestas da los totales para el catering.
Crea un enlace para cada invitación
En tu hoja de la lista de invitados, pon un código corto en la columna A, como okafor o nguyen-family, el hogar en la B y los nombres de pila de los invitados en la C, separados por comas. Esta fórmula en la D crea el enlace:
="https://ada-and-sam.example/rsvp?party=" & A2 & "&names=" & ENCODEURL(C2)Imprime cada enlace como código QR en la invitación, o pégalo en un mensaje. Escribe los códigos en minúsculas con guiones; el patrón del campo rechaza cualquier otra cosa, lo que detecta pronto un código mal escrito.
El formulario
Pega esto en la página de tu boda, o en un bloque de embed de un creador de sitios. Lee party y names del enlace, añade una fila de nombre y menú por invitado, hasta cuatro, y se oculta después de la fecha límite. Si el enlace no lleva nombres, muestra una sola fila para rellenar.
<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>- El menú de cada invitado incluye
Can't come, así que un hogar en el que una persona no puede ir sigue enviando una sola respuesta. - Los campos de nombre vienen rellenos pero se pueden editar, para que un invitado corrija una falta o ponga el nombre de un niño.
- El formulario envía de la forma clásica y llega a tu página de agradecimiento mediante
_redirect. Pon ahí la fecha, el lugar y un enlace de calendario; Ikiform no envía emails a tus invitados. - La fecha límite solo oculta el formulario en el navegador. Ese día, elige también Pause form en Ikiform, para que una pestaña guardada no pueda enviar. Los formularios en pausa responden
403 form_paused.
Pega esta definición en la pestaña Fields del formulario. Pruébalo: un código de invitación con una mayúscula o un espacio no cumple el patrón y muestra el mensaje que configuraste.
Vista previa
Ejecuta el validador de Ikiform en tu navegador. No se envía nada.
Quién no ha respondido y qué pedir
- Exporta los RSVP como CSV desde Submissions e impórtalos en una pestaña llamada
Repliesen la hoja de la lista de invitados. - Si una invitación respondió dos veces, quédate con su fila más reciente: ordena por
created_at, de la más reciente a la más antigua, y elimina duplicados en la columnaparty. - Lista las invitaciones sin respuesta, con los códigos en la columna A de la lista de invitados y
partyen la columna E de Replies:
=FILTER(A2:C, A2:A <> "", ISNA(MATCH(A2:A, Replies!E2:E, 0)))Luego cuenta cada menú para el catering. Los nombres nunca coinciden con un valor de menú, así que funciona un único rango que abarque todas las columnas de invitados:
=COUNTIF(Replies!G2:N, "fish")| Número | Cómo |
|---|---|
| Personas que vienen | Suma los recuentos de beef, fish, vegetarian y child |
| No puede venir | COUNTIF sobre el mismo rango para not_coming |
| Platos infantiles | COUNTIF para child, que la mayoría de los caterings cobran aparte |
| Notas alimentarias | Lee la columna note. Ahí se esconden las alergias |
Antes de enviar las invitaciones
- Configura Allowed domains con el dominio de tu web de boda, y con el dominio de staging del creador de sitios mientras pruebas.
- Ikiform no fusiona ni rechaza envíos repetidos por email. Una repetición idéntica en menos de 24 horas solo suma a la puntuación de spam. Elimina duplicados donde guardes la lista, o al exportar. La respuesta más reciente por código es la que vale.
- Cualquiera con un enlace puede cambiar su código o sus nombres. Para una boda no pasa nada; tu hoja decide quién estaba invitado, y la lista de sin respuesta deja ver cualquier cosa rara.
- Puede que los familiares mayores no usen el formulario. Anota en tu hoja las respuestas por teléfono y en papel para que los recuentos estén completos.
Compruébalo antes de enviar las invitaciones
- Abre tu propio enlace de invitación en un móvil. Aparecen los nombres, cada uno con una elección de menú.
- Elige
Can't comepara un invitado, envíalo y llega a tu página de agradecimiento. - Abre Submissions en el panel. El nuevo envío está ahí con todos los campos que enviaste.
- Revisa la bandeja de entrada de cada destinatario de las notificaciones. Cada uno recibe un email con los campos, y Reply va a quien envió el formulario cuando este tiene un campo
email. - Importa el CSV y comprueba que la lista de sin respuesta ya no muestra tu código.
- Pon la fecha límite en ayer en una copia de prueba y confirma que el formulario se oculta.
Errores comunes
| Problema | Qué hacer |
|---|---|
422 con party: Use the link from your invitation | El código tiene mayúsculas, espacios u otros caracteres. Corrige el código en la hoja, o pide al invitado que use su enlace. |
| Un invitado ve una fila vacía en lugar de los nombres | El enlace perdió su parte names, a menudo porque una app de mensajería lo acortó. Envía el enlace completo o el código QR. |
422 validation_failed | El envío no coincide con la definición de campos del formulario. error.fields indica cada campo y el motivo. Haz que el name del input coincida con el id del campo. |
403 origin_not_allowed, o todos los envíos acaban en spam | El dominio de la página no está en Allowed domains del formulario. Añádelo, y localhost para las pruebas locales. Los subdominios de un dominio de la lista están permitidos. |
| El navegador acaba en la página de agradecimiento de Ikiform en lugar de la tuya | _redirect se ignora salvo que su dominio esté en Allowed domains y sea una URL https:. Añade el dominio, o configura Redirect after submit en los ajustes del formulario. |
Preguntas
No. Los RSVP van a tu panel de Ikiform y a tu bandeja de entrada. No se publica nada en el sitio.
No desde Ikiform, que solo te envía emails a ti. Muestra los detalles en la página de agradecimiento, o envía cada respuesta por webhook a una herramienta de email y manda la confirmación desde ahí.
Oculta el formulario de la página después de la fecha, como hace el ejemplo, y elige Pause form en Ikiform. Un formulario en pausa rechaza los nuevos envíos con 403 form_paused.
Se guardan ambas respuestas. Quédate con la más reciente por código de invitación al contar, ordenando de la más reciente a la más antigua y eliminando duplicados por código.
No, no hay plan gratuito. Probar es gratis: puedes enviar 50 envíos de prueba al mes desde localhost antes de pagar. Para pasar a producción, Pro empieza en 6 $/mes por 500 envíos, o puedes pagar una sola vez 49 $ por 10.000 envíos o 149 $ por 50.000 envíos, con créditos que nunca caducan.
¿Te atascaste en un paso o quieres una guía para tu caso? Escribe a hello@ikiform.com.