Más allá de los formularios del creador

Más allá de los formularios del creador7 min de lectura

Formularios de Carrd: envía los envíos a un backend de formularios

El formulario de contacto de Carrd solo te avisa por email y los formularios personalizados necesitan Pro Plus, así que usa Send to URL en Plus o un embed HTML en Standard para guardar cada envío.

Preet SutharFundador, Ikiform

Los formularios de Carrd necesitan un plan Pro: Pro Standard tiene formularios de contacto y de suscripción, y Pro Plus añade formularios personalizados que pueden enviar a cualquier URL. En Pro Plus, configura un formulario personalizado con Send to URL y tu endpoint de Ikiform, y Carrd mantendrá su propio mensaje de éxito. En Pro Standard, pega un formulario HTML en un elemento Embed, lo que te da campos personalizados sin mejorar el plan.

Qué cambia en Carrd

Carrd no limita los envíos. Restringe las funciones de formulario según el plan, y cada plan es un precio anual para un número determinado de sitios. A octubre de 2026, los precios y la documentación de Carrd marcan las líneas aquí:

PlanFormularios que tienesQué significa
Free y Pro LiteNingunaSin elemento de formulario y sin embeds. Enlaza a un formulario en otro sitio, o mejora el plan
Pro Standard, desde 19 $ al añoFormularios Contact que envían email a hasta cinco destinatarios, formularios Signup que añaden gente a una herramienta de email, y elementos EmbedLos formularios de contacto tienen campos fijos. Los embeds aceptan cualquier HTML, incluido tu propio formulario
Pro Plus, desde 49 $ al añoTodo lo anterior, más formularios Custom: enviar email, o enviar a Airtable, Make, n8n, Zapier, una URL o tu propio códigoCualquier campo, y Send to URL los envía adonde quieras

Un formulario de contacto de Carrd entrega cada mensaje por email desde @mail.carrd.site, así que tu bandeja de entrada es el registro y es fácil pasar por alto un mensaje que acaba en correo no deseado. Ese es el motivo habitual para moverse: quieres una lista guardada y consultable, una exportación y avisos para todo el equipo, no un solo buzón.

Si lo único que necesitas es añadir suscriptores nuevos a Mailchimp, Kit u otra herramienta de email, el formulario Signup de Carrd ya lo hace en Pro Standard y es mejor opción. Ikiform no tiene integraciones de un clic con herramientas de email.

El plan de Carrd en el que estés decide cómo llega el formulario a IkiformPro Lite o gratuitosin formularios niembedsmejorar el plan oenlazar fueraPro StandardElemento Embedtu propio formularioHTMLIkiformel navegador envíaPro PlusCustom formSend to URL con AJAXIkiformel formulario de CarrdenvíaEl plan de Carrd en el que estés decide cómo llega el formulario a IkiformPro Lite o gratuitosin formularios ni embedsmejorar el plan o enlazarfueraPro StandardElemento Embedtu propio formulario HTMLIkiformel navegador envíaPro PlusCustom formSend to URL con AJAXIkiformel formulario de Carrd envía
  1. En el plan gratuito o en Pro Lite no hay elemento de formulario ni embed, así que no hay nada que conectar. Mejora el plan, o enlaza a un formulario alojado en otro sitio.
  2. En Pro Standard, pega un formulario HTML en un elemento Embed. El navegador del visitante lo envía a Ikiform.
  3. En Pro Plus, crea un formulario Custom en el editor de Carrd y configúralo con Send to URL y el método AJAX. El formulario de Carrd envía a Ikiform y muestra su propio mensaje de éxito.
Los dos caminos envían el post desde el navegador del visitante, así que los dominios permitidos, los límites de frecuencia y la puntuación de spam funcionan igual que en cualquier sitio.

Pro Plus: con Send to URL

Esto conserva el editor de formularios y los estilos de Carrd, sin código. Los campos de abajo son para la consulta de reserva de un fotógrafo; usa los tuyos.

  1. Haz clic en Add Element > Form, pon Type en Custom y luego Send to URL.
  2. Pega tu endpoint como URL.
  3. Pon Method en AJAX y Format en Default. Carrd interpreta cualquier respuesta 2xx como éxito, e Ikiform responde 201 cuando guarda el envío.
  4. Añade los campos: Text name, Email email, Select service, Date preferred_date, Text Area details. Define el ID de cada campo; si no, Carrd genera uno a partir de la etiqueta.
  5. En On Success, elige un mensaje o una sección que mostrar. En On Failure, deja un texto genérico. Carrd no muestra el mensaje de error de Ikiform.
  6. Publica. Los formularios solo envían desde el sitio publicado.
URL
https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx
Ajuste de CarrdUsarEvita
MethodAJAX: los visitantes se quedan en la páginaPOST: el navegador se va a la página de agradecimiento de Ikiform, y On Success nunca se ejecuta
FormatDefault, o JSONXML: Ikiform lo rechaza con 415 unsupported_media_type
Collect UTM parametersVale, pero añade los cinco campos utm_ a cualquier definición de camposActivarlo después de definir los campos: cada envío desde un enlace con etiquetas UTM falla con un Unknown field
Campo FileEn absolutoLa subida de archivos aún no está disponible. Un envío con un archivo recibe 422 files_not_supported.
Spam ProtectionNinguno en este formularioUn proveedor de captcha: la documentación de Carrd no dice que verifique el token en un formulario Send to URL, e Ikiform solo comprueba un token de Turnstile con tus propias claves guardadas en Ikiform

Un campo Hidden siempre envía su valor predefinido, así que aquí no puede funcionar como honeypot. La puntuación de spam, los límites de frecuencia y los dominios permitidos de Ikiform siguen aplicándose a cada envío. Deja desactivado el Spam check de Ikiform para este formulario: un envío AJAX no puede mostrar la comprobación, y fallaría con 403 challenge_required.

Pro Standard: un elemento Embed

En Pro Standard no puedes crear un formulario personalizado en Carrd, pero puedes pegar uno. Haz clic en Add Element > Embed, pon Type en Code y Style en Inline, y pega esto. Lleva sus propios estilos porque los estilos de formulario de Carrd no llegan al código incrustado.

Embed
<form id="booking" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post" target="_top">
  <input name="name" placeholder="Name" autocomplete="name" required>
  <input name="email" type="email" placeholder="Email" autocomplete="email" required>
  <select name="service" required>
    <option value="" disabled selected>What do you need?</option>
    <option value="portrait">Portrait session</option>
    <option value="event">Event coverage</option>
    <option value="product">Product photos</option>
  </select>
  <input name="preferred_date" type="date" aria-label="Preferred date">
  <textarea name="details" rows="4" placeholder="Anything else?" maxlength="2000"></textarea>
  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
  <button type="submit">Request a booking</button>
  <p id="booking-note" role="status"></p>
</form>
<style>
  #booking { display: grid; gap: 0.75rem; font: inherit; }
  #booking input, #booking select, #booking textarea { font: inherit; padding: 0.75rem; border: 1px solid #ccc; border-radius: 0.5rem; }
  #booking button { font: inherit; padding: 0.75rem; border: 0; border-radius: 0.5rem; background: #111; color: #fff; }
</style>
<script>
  const booking = document.getElementById("booking");
  booking.addEventListener("submit", async (event) => {
    event.preventDefault();
    const note = document.getElementById("booking-note");
    note.textContent = "Sending";
    try {
      const response = await fetch(booking.action, {
        method: "POST",
        headers: { Accept: "application/json" },
        body: new FormData(booking),
      });
      const result = await response.json();
      if (result.ok) {
        booking.replaceChildren("Thanks. I'll reply with availability.");
        return;
      }
      const fields = result.error.fields ?? {};
      note.textContent = fields.preferred_date?.[0] ?? fields.email?.[0] ?? result.error.message;
    } catch {
      note.textContent = "Couldn't send. Try again, or email me directly.";
    }
  });
</script>
  • El script envía con fetch y sustituye el formulario por la línea de agradecimiento, así que la página no cambia.
  • El input oculto _gotcha aquí sí es un honeypot de verdad, a diferencia de un campo Hidden de Carrd.
  • Si el script no carga, el formulario sigue enviando de forma normal. target="_top" evita que el resultado se abra dentro de un marco.
  • Los embeds no se ejecutan en el editor de Carrd. Publica para ver el formulario.

Las dos versiones envían los mismos campos. Defínelos en Ikiform cuando haya llegado una prueba:

Vista previa

Ejecuta el validador de Ikiform en tu navegador. No se envía nada.

Déjalo vacío si tienes flexibilidad.

preferred_date es un campo date, así que Ikiform acepta YYYY-MM-DD, que es lo que envían tanto el campo Date de Carrd como un input de fecha del navegador.

Dominios permitidos en Carrd

Añade your-site.carrd.co, o your-site.crd.co en Pro, y tu dominio propio. No añadas carrd.co solo; cualquier sitio de Carrd podría enviar. La guía de Carrd de la documentación lista cada ajuste con su motivo.

Mover un formulario no mueve los demás. Un formulario Signup que alimenta tu herramienta de email puede quedarse como está junto a un formulario Custom o un embed que envía a Ikiform.

Comprueba que funciona en Carrd

  1. En Allowed domains del formulario, añade el dominio de tu sitio, y localhost mientras desarrollas. Déjalo vacío para aceptar envíos desde cualquier lugar.
  2. Publica y luego envía el formulario en el sitio publicado.
  3. Confirma que Carrd muestra On Success, o que el embed muestra su línea de agradecimiento.
  4. Abre Submissions en el panel. El nuevo envío está ahí con todos los campos que enviaste.
  5. Comprueba que los nombres son tus IDs, que preferred_date se ve como 2026-11-14 y que no llegaron campos utm_ salvo que los esperaras.
  6. 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.

Errores comunes

ProblemaQué hacer
Carrd muestra On Failure siempreFormato XML (415), un campo File (422), un Unknown field por la recogida de UTM, o el Spam check de Ikiform activado (403). Arregla lo que corresponda.
Los nombres de campo parecen etiquetasID y Submitted ID estaban vacíos. Defínelos y vuelve a publicar.
El embed aparece en blanco en el editorCarrd no ejecuta el código de los embeds en el editor. Publica y revisa el sitio real.
403 origin_not_allowed, o todos los envíos acaban en spamEl 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.
403 challenge_requiredLa verificación antispam del formulario está en Ikiform y un envío con fetch no llevaba token. Consigue uno con challenge(formId) de @ikiform/sdk antes de cada envío, o desactiva la verificación.

Preguntas

¿Te atascaste en un paso o quieres una guía para tu caso? Escribe a hello@ikiform.com.