# Envoyer une demande depuis un workflow n8n

Créez une demande formbase depuis n'importe quel workflow n8n, préremplissez et verrouillez les réponses que vous connaissez déjà, et envoyez le lien par e-mail ou via votre propre canal.

## Envoyer une demande depuis un workflow n8n

Une demande demande à un destinataire nommé de remplir un formulaire. Ce guide ajoute un nœud Create request à un workflow, préremplit le nom de l'entreprise du fournisseur pour qu'il ne puisse pas le modifier, et transmet le lien au nœud suivant.

<p>
  Il vous faut un <a href="/fr/guides/n8n/connect">credential formbase dans n8n</a> et un formulaire publié. Ce qu'est une demande, et
  chaque option qu'elle prend, se trouve dans <a href="/fr/requests/creating-requests">Créer une demande</a> ; ce guide montre où ces
  options se trouvent dans n8n.
</p>

<h2 id="add-the-node">1. Ajoutez le nœud Create request</h2>

<p>
  Commencez par le déclencheur qui doit envoyer la demande : une nouvelle ligne dans une feuille de calcul, une affaire marquée gagnée dans
  votre CRM, une planification. Ce guide utilise un déclencheur manuel et un nœud <strong>Edit Fields</strong> nommé <em>Supplier</em> qui
  porte <code>supplier_id</code>, <code>company_name</code> et <code>contact_email</code>. Cliquez sur <strong>+</strong> après lui,
  cherchez <strong>formbase</strong>, et choisissez <strong>Create request</strong>.
</p>

<h2 id="form-and-recipient">2. Choisissez le formulaire et le destinataire</h2>

<ul>
  <li>
    <strong>Form</strong> est le formulaire que le destinataire remplit. Choisissez-le dans la liste, ou passez à <strong>ID</strong> et
    collez son ID. Il doit être publié.
  </li>
  <li>
    <strong>Recipient Email</strong> vient généralement de l'entrée, comme <code>{'{{ $json.contact_email }}'}</code>. Il est nécessaire
    pour la livraison par e-mail et pour les rappels.
  </li>
</ul>

<h2 id="prefill-and-lock">3. Préremplissez et verrouillez ce que vous savez déjà</h2>

<p>
  Une fois le formulaire choisi, <strong>Values to Send</strong> liste chaque question que vous pouvez préremplir par son titre et sa{' '}
  <a href="/fr/requests/field-keys">clé de champ</a>, comme <em>Company name (company_name)</em>. Les questions de téléversement de fichier,
  de signature, de paiement et de rendez-vous, les champs calculés et les blocs Documents n'y figurent pas : le destinataire ou le
  formulaire les fournit. Mappez les réponses que vous avez déjà ; les champs laissés vides ne sont pas envoyés. Le destinataire voit celles
  qui sont mappées déjà remplies.
</p>

<p>
  <strong>Mapping Column Mode</strong> peut aussi être <strong>Map Automatically</strong> : alors chaque champ d'entrée nommé d'après une
  clé de champ du formulaire est envoyé. Cela convient à une entrée que vous avez façonnée pour ce formulaire avec un nœud Edit Fields.
</p>

<p>
  Les champs cachés du formulaire sont listés aussi, marqués <em>· context</em>. Le destinataire ne peut pas les modifier et ne les voit que
  là où le formulaire les mentionne. Voir{' '}
  <a href="/fr/requests/creating-requests#three-buckets">Préremplissage, champs verrouillés, et contexte</a> pour la différence.
</p>

<p>
  Choisissez une question sous <strong>Read-Only Field Names or IDs</strong> pour la verrouiller, afin que le destinataire puisse la voir
  mais pas la modifier. Une question verrouillée doit aussi être préremplie. Si le formulaire a un bloc Documents,{' '}
  <strong>Documents</strong> prend des fichiers depuis un champ binaire de l'élément d'entrée.
</p>

<h2 id="additional-fields">4. Ajoutez les options dont vous avez besoin</h2>

<p>
  Cliquez sur <strong>Add Field</strong> sous <strong>Additional Fields</strong> :
</p>

<ul>
  <li>
    <strong>Delivery</strong> décide qui envoie le lien. <strong>Email the Invitation</strong> laisse formbase envoyer{' '}
    <a href="/fr/requests/invitations-and-reminders">l'invitation et les rappels</a>, et nécessite un plan Pro ou Business.{' '}
    <strong>None</strong>, la valeur par défaut, n'envoie aucune invitation : un nœud ultérieur envoie l'<code>url</code> de la demande, par
    Slack, SMS ou votre propre outil e-mail.
  </li>
  <li>
    <strong>Reminders</strong> laissé de côté suit le planning de rappels du formulaire. Avec un Recipient Email, ces rappels sont envoyés
    par e-mail même quand Delivery est réglé sur None. Ajoutez <strong>Reminders</strong> et laissez-le vide pour n'en envoyer aucun, ou
    entrez un planning comme <code>2d, 5d</code>, ce qui nécessite Pro ou Business.
  </li>
  <li>
    <strong>External ID</strong> est votre propre ID pour cette tâche, comme <code>supplier-{'{{ $json.supplier_id }}'}</code>. Un workflow
    ultérieur peut <a href="/fr/guides/n8n/manage-requests#find-a-request">retrouver la demande par cet ID</a>. C'est aussi la{' '}
    <a href="/fr/requests/creating-requests#idempotency">clé d'idempotence</a> : exécutez à nouveau le nœud avec le même External ID et les
    mêmes paramètres, et vous récupérez la même demande, avec <code>deduplicated: true</code>, pas une seconde. Dans les 30 jours, le même
    External ID avec un paramètre modifié, Test Mode compris, échoue avec{' '}
    <em>CONFLICT: Idempotency key … was already used for a different request</em>.
  </li>
  <li>
    <strong>Test Mode</strong> crée une <a href="/fr/requests/creating-requests#test-mode">demande de test</a> : rien n'est envoyé par
    e-mail et elle ne compte nulle part.
  </li>
  <li>
    <strong>Recipient Name</strong>, <strong>Language</strong>, <strong>Expires At</strong> et <strong>Metadata</strong> sont optionnels.
    Une demande expire après 30 jours sauf si vous réglez une autre date, au maximum 365 jours plus tard.
  </li>
  <li>
    <strong>Callback URL</strong> envoie le résultat à une URL de votre choix. Pour récupérer le résultat dans ce workflow, activez plutôt{' '}
    <a href="/fr/guides/n8n/request-outcome#wait-for-the-outcome">Wait for the Outcome</a>.
  </li>
</ul>

<h2 id="run-the-node">5. Exécutez le nœud</h2>

<p>
  Cliquez sur <strong>Execute step</strong>. formbase crée la demande et la renvoie : <code>id</code>, <code>status</code>{' '}
  <code>pending</code>, et <code>url</code>, le lien pour le destinataire. Mappez <code>{'{{ $json.url }}'}</code> dans le nœud qui
  l'envoie. <code>deliveryStatus</code> vaut <code>not_requested</code> quand Delivery est réglé sur None, car formbase n'a rien envoyé.
</p>

> ⚠️ **Exécuter le nœud crée une vraie demande**
> <p>
>     Sauf si <strong>Test Mode</strong> est activé, chaque exécution, y compris <strong>Execute step</strong> dans l'éditeur, est une vraie
>     demande : avec la livraison par e-mail, le destinataire reçoit l'invitation. Activez Test Mode pendant que vous construisez le workflow.
>     Une demande de test ne démarre aucun workflow avec un <a href="/fr/guides/n8n/request-outcome">déclencheur de demande</a>. Avant de
>     publier, désactivez Test Mode et changez l'External ID, car l'ancien appartient à la demande de test.
>   </p>

<h2 id="next">Suite</h2>

<div class="not-prose grid gap-3 sm:grid-cols-2 mb-8">
  - [Agir selon le résultat d'une demande dans n8n](/fr/guides/n8n/request-outcome) — Bifurquez selon que le destinataire approuve, refuse ou demande des modifications.
  - [Trouver, relancer et annuler des demandes dans n8n](/fr/guides/n8n/manage-requests) — Trouvez une demande par External ID, relancez le destinataire, ou retirez-la.
</div>
