# Formulieren

Met de module Formulieren bouw je de formulieren op je eigen site (een contactformulier, een offerteaanvraag in meerdere stappen, een intakeformulier) in het dashboard, en de antwoorden komen binnen in je [Inbox](/nl/docs/forms/inbox). Je site laadt het formulier bij Borkol, dus je kunt vragen, stappen en teksten aanpassen zonder de site aan te raken. Vier andere pagina's gaan dieper: [Een formulier bouwen](/nl/docs/forms/designer), [Vragen alleen bij bepaalde antwoorden tonen](/nl/docs/forms/logic), [Inbox](/nl/docs/forms/inbox) en [Spambescherming en bestanden](/nl/docs/forms/spam-and-files).

Formulieren staat in de zijbalk in de groep **Inbox** wanneer de module is ingeschakeld voor het actieve bedrijf, met drie onderdelen: **Inbox** (de inzendingen), **Formulieren** (de formulieren zelf) en **Instellingen** (de **Forms-instellingen** die voor elk formulier gelden, zie [Spambescherming en bestanden](/nl/docs/forms/spam-and-files#forms-instellingen)). Elk lid van het bedrijf ziet dezelfde schermen en acties.

## Een formulier maken

1. Open **Inbox** → **Formulieren** in de zijbalk.
2. Klik op **Nieuw formulier**. Het venster **Nieuw formulier** opent.
3. Kies onder **Begin met** een sjabloon. Elke kaart toont de naam, een korte omschrijving en hoeveel stappen en velden het heeft:

   | Sjabloon | Wat je krijgt |
   | --- | --- |
   | **Leeg** | Eén lege stap. Bouw het formulier zelf op. |
   | **Contact** | Naam, e-mail, telefoon en een bericht, plus een toestemmingsvakje. |
   | **Offerteaanvraag** | Drie stappen: wat, omvang en budget, contactgegevens. |
   | **Offerte vakwerk** | Soort klus met vervolgvragen, foto's, adres en contactgegevens. |

4. Controleer de **Naam** (ingevuld vanuit het sjabloon) en de **Sleutel**. De sleutel vult zichzelf in vanuit de naam tot je hem zelf aanpast: kleine letters, cijfers en koppeltekens, te beginnen met een letter. Je site laadt het formulier met deze sleutel, en na publiceren ligt hij vast.
5. Klik op **Formulier maken**. Je komt in de formuliereditor op het tabblad **Bouwen**.

Sjabloonteksten komen in je contenttalen als het sjabloon een vertaling heeft, anders in het Engels, dus controleer ze voordat je publiceert.

## De lijst met formulieren

**Inbox** → **Formulieren** toont je formulieren:

| Kolom | Beschrijving |
| --- | --- |
| Naam | De naam van het formulier. |
| Status | **Concept**, **Actief** of **Gearchiveerd** (zie hieronder). |
| Versie | De gepubliceerde versie, bijvoorbeeld `v3`, of `—` als het formulier nooit is gepubliceerd. Een stip met **Niet-gepubliceerde wijzigingen** betekent dat je wijzigingen hebt opgeslagen die nog niet live zijn. |
| Inzendingen | Hoeveel inzendingen het formulier heeft ontvangen. |
| Bijgewerkt | Wanneer het formulier voor het laatst is gewijzigd. |

Klik op een rij (of op het oogje) om de formuliereditor te openen.

## Opslaan, publiceren en activeren

De bovenbalk van de editor toont de status van het formulier, de gepubliceerde versie (of **Niet gepubliceerd**) en **Niet-gepubliceerde wijzigingen** als het opgeslagen concept afwijkt van wat je site krijgt. Daarnaast staan **Voorbeeld**, **Opslaan**, **Publiceren** en **Activeren** of **Archiveren**.

- **Opslaan** bewaart je wijzigingen als concept. Op je site verandert niets. Moet er iets worden opgelost, dan somt een banner de problemen op (bijvoorbeeld "Stap 2: Je gegevens"); klik erop om er meteen heen te gaan. Verlaat je de editor met niet-opgeslagen wijzigingen, dan vraagt hij eerst **Formuliereditor verlaten?**
- **Publiceren** slaat op en bevriest het concept daarna als nieuwe versie: "Gepubliceerd als versie 3." Je site krijgt vanaf dan de nieuwe versie. Publiceren kan alleen als er iets nieuws te publiceren is.
- **Activeren** zet het formulier live: "Formulier is actief. Sites kunnen het nu laden." Een formulier moet één keer zijn gepubliceerd voordat je het kunt activeren ("Publiceer het formulier voordat je het activeert.").
- **Archiveren** haalt het formulier van je site nadat je **Dit formulier archiveren?** hebt bevestigd: sites kunnen het niet meer laden of versturen. Inzendingen die je al hebt ontvangen blijven in je inbox, en je kunt het formulier later weer activeren.

Een site krijgt alleen een formulier dat **Actief** en gepubliceerd is. Een nieuw formulier begint als **Concept**; publiceren activeert het niet, dus doe allebei voordat je het op je site zet.

### Versies

Elke keer dat je publiceert, ontstaat een genummerde versie, en gepubliceerde versies veranderen nooit meer. Elke inzending onthoudt met welke versie ze is verstuurd, dus als je later een vraag herformuleert, een optie weghaalt of een stap verwijdert, tonen oudere inzendingen in je inbox nog steeds de vragen en optielabels die de bezoeker echt heeft beantwoord. De naam van het formulier en de instellingen hieronder hebben geen versies: ze gelden zodra je ze opslaat.

## Voorbeeld

**Voorbeeld** opent je huidige versie, inclusief niet-opgeslagen wijzigingen, in een zijpaneel. Loop er doorheen met **Volgende**, **Terug** en **Versturen**, en probeer de regels uit: vragen verschijnen en verdwijnen terwijl je antwoordt. Met meer dan één contenttaal wissel je van taal met de tabbladen bovenaan. **Opnieuw beginnen** zet het terug. Er wordt niets verstuurd of opgeslagen ("Alleen een voorbeeld: er is niets verstuurd of opgeslagen."): bij een vraag **Bestand uploaden** kun je bestanden kiezen, maar ze worden nergens heen geüpload.

## Tabblad Instellingen

Het tabblad **Instellingen** bevat alles over het formulier behalve de vragen. Teksten zijn per taal als je bedrijf meer dan één contenttaal heeft; de standaardtaal heeft een tekst nodig. Sla op met **Opslaan** in de bovenbalk.

### Algemeen

- **Naam van het formulier**: zichtbaar in je inbox en in de bevestigingsmail als `{form}`.
- **Formuliersleutel**: hiermee laadt je site het formulier. Kleine letters, cijfers en koppeltekens, maximaal 64. De sleutel ligt vast zodra het formulier is gepubliceerd, omdat sites hem gebruiken.

### Meldingen

- **Stuur nieuwe inzendingen naar**: maximaal tien e-mailadressen die bij elke nieuwe inzending een e-mail krijgen. Typ een adres en klik op **Toevoegen**. Laat de lijst leeg om de **Standaard ontvangers** uit de **Forms-instellingen** te gebruiken, of, als die er niet zijn, het e-mailadres van je bedrijf.
- **Versturen vanaf**: het e-mailaccount dat de melding en de bevestiging aan de bezoeker verstuurt. **Standaard van Formulieren gebruiken** verstuurt met het account dat onder **Instellingen** → **E-mail** voor formuliermail is gekozen (zie [E-mailaccounts](/nl/docs/workspace/email)). **Mailaccounts beheren** opent die sectie (`/settings/email`).

De meldingsmail toont de naam, het e-mailadres en het telefoonnummer van de bezoeker, elke beantwoorde vraag en een link naar de inbox. Als je op de mail antwoordt, antwoord je de bezoeker.

### Bevestigingsmail

Zet **Stuur de bezoeker een bevestiging** aan om de bezoeker na het versturen een e-mail te sturen. Die gaat naar het antwoord op de eerste **E-mail**-vraag in het formulier, in de taal van de bezoeker. Zonder **E-mail**-vraag toont de schakelaar "Dit formulier heeft nog geen e-mailvraag, dus er kan geen bevestiging worden verstuurd."

Schrijf per taal een **Onderwerp** en een **Bericht**. Klik op een plaatshouder om hem bij de cursor in te voegen:

| Plaatshouder | Wordt |
| --- | --- |
| `{name}` | De naam van de bezoeker (het antwoord op de vraag met sleutel `name`). |
| `{form}` | De naam van het formulier. |
| `{number}` | Het nummer van de inzending, bijvoorbeeld `INQ-0042`. |
| `{answers}` | Alle zichtbare vragen en antwoorden, één per regel. Verborgen velden worden weggelaten. |

### Na het versturen

Kies wat de bezoeker ziet na een geslaagde inzending:

- **Toon een bedankbericht**: de bezoeker blijft op de pagina en ziet je **Bedankbericht**.
- **Ga naar een pagina op je site**: de bezoeker gaat naar de **URL van de pagina** die je invult, een bedankpagina die je zelf host. Het moet een volledig `https://`-adres zijn.

### Spambescherming

- **Cloudflare Turnstile**: bezoekers doorlopen een onzichtbare controle voor het versturen. Hiervoor zijn je Turnstile-sleutels nodig in de **Forms-instellingen** (de link **Instellingen van Formulieren** naast de schakelaar). Staat de schakelaar aan maar ontbreken de keys, dan meldt een waarschuwing "Turnstile staat aan, maar je Forms-instellingen hebben nog geen site key en secret. Zolang die ontbreken, tonen sites geen controle en worden inzendingen niet gecontroleerd." met **Voeg je keys toe**.
- **Inzendingen per bezoeker** beperkt hoe vaak één bezoeker dit formulier kan versturen: tussen 1 en 100 per uur (standaard 5). Extra pogingen van dezelfde bezoeker worden geweigerd, ook pogingen met fouten erin.

Zie [Spambescherming en bestanden](/nl/docs/forms/spam-and-files) voor hoe deze samenwerken.

## Gebruiken op je site

Het tabblad **Gebruiken op je site** heeft alles wat een developer nodig heeft om het formulier te koppelen:

- **Formuliersleutel** met een knop **Kopiëren**, en of het formulier live is: "Live: sites krijgen versie 3 van dit formulier.", of wat er nog ontbreekt (publiceren, activeren).
- **Houd forms:write-sleutels op je server**: met een API-sleutel met `forms:write` kan iemand inzendingen versturen namens jou, dus hij mag nooit in browsercode staan. **API-sleutels beheren** opent **Instellingen** → **API-sleutels** (zie [API-sleutels](/nl/docs/workspace/api-keys)). Je site heeft één sleutel nodig met zowel `forms:read` (om formulieren te laden) als `forms:write` (om inzendingen te versturen); een aparte sleutel met alleen leesrechten is optioneel.
- **Formulier laden** en **Inzending versturen**: de twee API-calls met voorbeeldresponses. Een formulier met een vraag **Bestand uploaden** toont ook **Een bestand uploaden**, de call die een bestand opslaat vóór de inzending. Met **Cloudflare Turnstile** aan herinnert **Inzending versturen** je developer eraan de Turnstile-widget te tonen en hem na elke fout te resetten.
- **Met React**: hoe je `@borkol/forms` installeert, en een kant-en-klaar formuliercomponent, pagina en serverroute om te kopiëren.
- **API-referentie Formulieren**: een link naar de [API-referentie Formulieren](/nl/api/forms/index).
