# Formulaires Carrd : envoyer les soumissions vers un backend de formulaires

> Le formulaire de contact de Carrd ne fait que vous envoyer un e-mail et les formulaires personnalisés nécessitent Pro Plus, alors utilisez Send to URL sur Plus ou une intégration HTML sur Standard pour stocker chaque soumission.

Publié le 2026-10-25 · https://ikiform.com/fr/guides/website-builder-forms/carrd-forms

Les formulaires de Carrd nécessitent une offre Pro : Pro Standard propose des formulaires de contact et d'inscription, et Pro Plus ajoute des formulaires personnalisés qui peuvent envoyer vers n'importe quelle URL. Sur Pro Plus, réglez un formulaire personnalisé sur **Send to URL** avec votre endpoint Ikiform et Carrd garde son propre message de succès. Sur Pro Standard, collez un formulaire HTML dans un élément **Embed**, ce qui vous donne des champs personnalisés sans changer d'offre.

## Ce qui change sur Carrd

Carrd ne plafonne pas les soumissions. Il réserve des fonctionnalités de formulaire selon l'offre, et chaque offre est un prix annuel pour un nombre donné de sites. En octobre 2026, la tarification et la documentation de Carrd placent les limites ainsi :

| Offre | Formulaires disponibles | Ce que cela signifie |
| --- | --- | --- |
| Gratuit et Pro Lite | Aucun | Pas d'élément de formulaire ni d'intégrations. Faites un lien vers un formulaire ailleurs, ou changez d'offre |
| Pro Standard, à partir de 19 $ par an | Des formulaires **Contact** qui envoient un e-mail à cinq destinataires au maximum, des formulaires **Signup** qui ajoutent les personnes à un outil d'e-mailing, et des éléments **Embed** | Les formulaires de contact ont des champs fixes. Les intégrations acceptent n'importe quel HTML, y compris votre propre formulaire |
| Pro Plus, à partir de 49 $ par an | Tout ce qui précède, plus les formulaires **Custom** : envoi par e-mail, ou vers Airtable, Make, n8n, Zapier, une URL ou votre propre code | N'importe quels champs, et **Send to URL** les envoie où vous voulez |

Un formulaire de contact Carrd livre chaque message par e-mail depuis `@mail.carrd.site`, donc votre boîte de réception fait office d'historique et un message classé en indésirable passe facilement inaperçu. C'est la raison habituelle de migrer : vous voulez une liste stockée et consultable, un export et des alertes pour toute l'équipe, pas une seule boîte mail.

Si vous avez seulement besoin d'ajouter de nouveaux abonnés dans Mailchimp, Kit ou un autre outil d'e-mailing, le formulaire **Signup** de Carrd le fait déjà sur Pro Standard et c'est le meilleur choix. Ikiform n'a pas d'intégrations en un clic avec les outils d'e-mailing.

Schéma : Votre offre Carrd détermine comment le formulaire atteint Ikiform

1. Sur l'offre gratuite ou Pro Lite, il n'y a ni élément de formulaire ni intégration, donc rien à connecter. Changez d'offre, ou faites un lien vers un formulaire hébergé ailleurs.
2. Sur Pro Standard, collez un formulaire HTML dans un élément Embed. Le navigateur du visiteur l'envoie à Ikiform.
3. Sur Pro Plus, construisez un formulaire Custom dans l'éditeur de Carrd et réglez-le sur Send to URL avec la méthode AJAX. Le formulaire de Carrd envoie à Ikiform et affiche son propre message de succès.

Les deux chemins font partir l'envoi du navigateur du visiteur, donc les domaines autorisés, les limites de débit et le score de spam fonctionnent comme sur n'importe quel site.

## Pro Plus : Send to URL

Cette méthode garde l'éditeur de formulaires et le style de Carrd, sans code. Les champs ci-dessous correspondent à une demande de réservation chez un photographe ; utilisez les vôtres.

1. Cliquez sur **Add Element** > **Form**, réglez **Type** sur **Custom**, puis **Send to URL**.
2. Collez votre endpoint comme **URL**.
3. Réglez **Method** sur **AJAX** et **Format** sur **Default**. Carrd interprète toute réponse `2xx` comme un succès, et Ikiform répond `201` quand il stocke l'envoi.
4. Ajoutez les champs : Text `name`, Email `email`, Select `service`, Date `preferred_date`, Text Area `details`. Définissez l'**ID** de chaque champ ; sinon Carrd en génère un à partir du libellé.
5. Sous **On Success**, choisissez un message ou une section à afficher. Sous **On Failure**, gardez un texte général. Carrd n'affiche pas le message d'erreur d'Ikiform.
6. Publiez. Les formulaires n'envoient que depuis le site publié.

`URL`:

```text
https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx
```

| Paramètre Carrd | À utiliser | À éviter |
| --- | --- | --- |
| **Method** | AJAX : les visiteurs restent sur la page | POST : le navigateur part vers la page de remerciement d'Ikiform, et On Success ne s'exécute jamais |
| **Format** | Default, ou JSON | XML : Ikiform le refuse avec `415 unsupported_media_type` |
| **Collect UTM parameters** | Possible, mais ajoutez les cinq champs `utm_` à toute définition de champs | L'activer après avoir défini les champs : chaque envoi depuis un lien avec des tags UTM échoue avec un champ inconnu |
| Champ **File** | Pas du tout | L'envoi de fichiers n'est pas encore pris en charge. Un envoi avec un fichier reçoit `422 files_not_supported`. |
| **Spam Protection** | Aucun sur ce formulaire | Un fournisseur de captcha : la documentation de Carrd ne dit pas qu'il vérifie le jeton pour un formulaire Send to URL, et Ikiform ne vérifie un jeton Turnstile qu'avec vos propres clés enregistrées dans Ikiform |

Un champ **Hidden** envoie toujours sa valeur prédéfinie, donc il ne peut pas servir de honeypot ici. Le score de spam, les limites de débit et les domaines autorisés d'Ikiform s'appliquent quand même à chaque envoi. Laissez le **Spam check** d'Ikiform désactivé pour ce formulaire : un envoi AJAX ne peut pas afficher la vérification, et échouerait avec `403 challenge_required`.

## Pro Standard : un élément Embed

Sur Pro Standard, vous ne pouvez pas construire de formulaire personnalisé dans Carrd, mais vous pouvez en coller un. Cliquez sur **Add Element** > **Embed**, réglez **Type** sur **Code** et **Style** sur **Inline**, et collez ceci. Il embarque ses propres styles, car les styles de formulaire de Carrd n'atteignent pas le code intégré.

`Embed`:

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

- Le script envoie avec `fetch` et remplace le formulaire par la ligne de remerciement, donc la page ne change pas.
- L'input masqué `_gotcha` est ici un vrai honeypot, contrairement à un champ Hidden de Carrd.
- Si le script ne se charge pas, le formulaire envoie quand même normalement. `target="_top"` empêche le résultat de s'ouvrir dans un cadre.
- Les intégrations ne s'exécutent pas dans l'éditeur de Carrd. Publiez pour voir le formulaire.

Les deux versions envoient les mêmes champs. Définissez-les dans Ikiform une fois qu'un test est arrivé :

Formulaire : Booking enquiry

- **Nom** (`name`, text, obligatoire)
- **E-mail** (`email`, email, obligatoire)
- **De quoi avez-vous besoin ?** (`service`, select, obligatoire)
- **Date souhaitée** (`preferred_date`, date)
- **Autre chose ?** (`details`, textarea)

`preferred_date` est un champ `date`, donc Ikiform accepte `YYYY-MM-DD`, ce qu'envoient à la fois le champ Date de Carrd et un input date du navigateur.

## Domaines autorisés sur Carrd

Ajoutez `your-site.carrd.co`, ou `your-site.crd.co` sur Pro, et votre domaine personnalisé. N'ajoutez pas `carrd.co` seul ; tous les sites Carrd seraient autorisés à envoyer. Le [guide Carrd de la documentation](https://ikiform.com/fr/docs/guides/carrd.md) liste chaque paramètre avec sa raison.

> Déplacer un formulaire ne déplace pas les autres. Un formulaire Signup qui alimente votre outil d'e-mailing peut rester tel quel à côté d'un formulaire Custom ou d'une intégration qui envoie vers Ikiform.

## Vérifier que tout fonctionne sur Carrd

1. Dans **Allowed domains** du formulaire, ajoutez le domaine de votre site, plus `localhost` pendant le développement. Laissez vide pour accepter les envois de partout.
2. Publiez, puis envoyez le formulaire sur le site publié.
3. Vérifiez que Carrd affiche On Success, ou que l'intégration affiche sa ligne de remerciement.
4. Ouvrez **Submissions** dans le tableau de bord. La nouvelle soumission y est, avec tous les champs envoyés.
5. Vérifiez que les noms sont vos ID, que `preferred_date` ressemble à `2026-11-14`, et qu'aucun champ `utm_` n'est arrivé sauf si vous l'attendiez.
6. Vérifiez la boîte de réception de chaque destinataire des notifications. Chacun reçoit un e-mail avec les champs, et **Reply** répond à l'expéditeur quand le formulaire a un champ `email`.

## Pièges

| Problème | Que faire |
| --- | --- |
| Carrd affiche On Failure à chaque fois | Format XML (`415`), un champ File (`422`), un champ inconnu issu de la collecte UTM, ou le **Spam check** d'Ikiform activé (`403`). Corrigez le cas qui s'applique. |
| Les noms de champs ressemblent à des libellés | **ID** et **Submitted ID** étaient vides. Remplissez-les et republiez. |
| L'intégration est vide dans l'éditeur | Carrd n'exécute pas le code intégré dans l'éditeur. Publiez et vérifiez le site en ligne. |
| `403 origin_not_allowed`, ou tous les envois finissent en spam | Le domaine de la page n'est pas dans les **Allowed domains** du formulaire. Ajoutez-le, plus `localhost` pour les tests en local. Les sous-domaines d'un domaine listé sont autorisés. |
| `403 challenge_required` | Le spam check du formulaire est réglé sur **Ikiform** et un envoi `fetch` n'avait pas de jeton. Obtenez-en un avec `challenge(formId)` de `@ikiform/sdk` avant chaque envoi, ou désactivez la vérification. |

## Questions

### Quelle offre Carrd me faut-il pour un formulaire qui envoie vers une URL ?

Pro Plus. Les formulaires personnalisés, y compris Send to URL, font partie des Advanced Forms. Sur Pro Standard, vous pouvez plutôt coller votre propre formulaire HTML dans un élément Embed.

### Faut-il utiliser AJAX ou POST pour un formulaire Carrd Send to URL ?

AJAX. Il garde les visiteurs sur votre page Carrd et applique vos réglages On Success et On Failure. POST envoie plutôt le navigateur vers la page de remerciement d'Ikiform ou vers votre redirection.

### Un champ Hidden de Carrd peut-il servir de honeypot ?

Non. Un champ Hidden envoie toujours sa valeur prédéfinie, donc il ne peut pas distinguer les bots des personnes. Le score de spam, les limites de débit et les domaines autorisés d'Ikiform vérifient quand même chaque envoi, et la version intégrée peut contenir un vrai honeypot.

### Puis-je garder le formulaire d'inscription de Carrd pour ma newsletter ?

Oui, et c'est sans doute préférable. Il ajoute les personnes directement à votre outil d'e-mailing. Utilisez Ikiform pour les formulaires dont vous voulez garder une trace, comme les demandes et les réservations.

### Ikiform est-il gratuit ?

Non, il n'y a pas d'offre gratuite. Les tests sont gratuits : vous pouvez envoyer 50 soumissions de test par mois depuis localhost avant de payer. Pour passer en production, Pro commence à 6 $/mois pour 500 soumissions, ou vous pouvez payer une seule fois 10 000 soumissions pour 49 $ ou 50 000 soumissions pour 149 $, avec des crédits qui n'expirent jamais.

## Autres guides

- [Dépasser les formulaires intégrés](https://ikiform.com/fr/guides/website-builder-forms.md): Quand les formulaires de Webflow, Netlify, Carrd ou Framer atteignent un plafond ou manquent d'une fonctionnalité, gardez le formulaire que vous avez conçu et faites-le pointer vers un backend de formulaires.
- [Limite de soumissions Webflow](https://ikiform.com/fr/guides/website-builder-forms/webflow-submission-limit.md): L'offre gratuite Starter de Webflow cesse de collecter après 50 soumissions de formulaire par site et les sites exportés n'en reçoivent aucune, alors faites plutôt pointer le Form Block vers Ikiform.
- [Formulaires Framer](https://ikiform.com/fr/guides/website-builder-forms/framer-forms.md): Les formulaires Framer envoient déjà vers l'e-mail, Sheets ou un webhook ; ajoutez Ikiform comme webhook pour des soumissions stockées et filtrées, des alertes d'équipe et davantage de destinations.
- [Limite de Netlify Forms](https://ikiform.com/fr/guides/website-builder-forms/netlify-forms-limit.md): Les anciennes offres Netlify comptent les soumissions de formulaire par site et vous font passer automatiquement au niveau supérieur, et les offres à crédits peuvent mettre le site en pause, alors déplacez le formulaire vers un backend.
