Ontwikkelaarsdocumentatie voor formulieren
Ontwikkelaarsdocumentatie voor formulieren
Formulieren zijn centraal beheerde inzendingsmodellen die worden ingebed in FaceFlow-pagina's en componenten.
Ze stellen technische teams in staat herbruikbare aanvraag- en intakeworkflows te definiëren die cache-veilig gerenderd kunnen worden, bij inzending verwerkt worden en als gestructureerde zakelijke assets beheerd kunnen worden.
Kernverantwoordelijkheid
Een formulier is verantwoordelijk voor:
- herbruikbare formulierdefinities
- veldenschema
- runtime-rendering
- validatie- en inzendafhandeling
- routering van meldingen
- vastlegging van inzendingen
- hergebruik over meerdere pagina's of componenten
Een formulier moet één zakelijke workflow duidelijk modelleren. Als één definitie probeert meerdere niet-gerelateerde workflows af te handelen, verzwakken zowel de operatie als de rapportage.
Kernformuliermodel
Een formulier combineert gewoonlijk:
- een stabiele formulieridentiteit
- een veldenschema
- presentatieconfiguratie
- gedrag bij succes en meldingen
- regels voor afhandeling van inzendingen
- opslag en beheer van inzendingen
In de praktijk definieert de formulierenlaag zowel wat de bezoeker kan indienen als hoe het bedrijf die inzending ontvangt en verwerkt.
Conceptueel:
{
"name": "enterprise-demo-request",
"fields": [
{ "name": "full_name", "type": "text", "required": true },
{ "name": "work_email", "type": "email", "required": true },
{ "name": "company", "type": "text", "required": true },
{ "name": "message", "type": "textarea", "required": false }
],
"settings": {
"submitText": "Request demo",
"successMessage": "Thanks. Our team will contact you shortly."
}
}Ondersteunde veldtypen
Ondersteunde veldtypen zijn onder andere:
textemailphoneurltextareanumberselectradiocheckboxcheckboxesdatefilehidden
Veldensets moeten in lijn blijven met de operationele workflow. Een formulier dat gegevens verzamelt die het bedrijf niet gebruikt, creëert frictie voor zowel bezoekers als interne teams.
Voorbeeld formulierdefinitie
Een technische beoordeling moet snel inzicht kunnen krijgen in het model:
{
"name": "contact-sales",
"fields": [
{ "name": "full_name", "type": "text", "required": true },
{ "name": "work_email", "type": "email", "required": true },
{ "name": "company", "type": "text", "required": true },
{ "name": "team_size", "type": "select", "required": false }
],
"settings": {
"submitText": "Contact sales",
"successMessage": "Thank you. We will reply shortly."
}
}Dit maakt het mogelijk om veldcontracten, vereiste gegevens en workflow-eigendom te bespreken voordat het formulier ergens wordt ingebed.
Inbedding tijdens runtime
Formulieren worden doorgaans via componenten in paginasecties ingebed.
Een veelgebruikt embedmarker is:
<div data-form-embed="contact-form"></div>Voorbeeldsectie:
<section class="contact-section">
<div class="section-copy">
<h2>Talk to our team</h2>
<p>Tell us about your goals and timeline.</p>
</div>
<div data-form-embed="enterprise-demo-request"></div>
</section>Dit maakt het mogelijk dat de paginastructuur herbruikbaar blijft terwijl het daadwerkelijke formuliermodel centraal beheerd wordt.
Vaste versus veld-ondersteunde inbeddingen
Er zijn twee veelvoorkomende inbedpatronen.
Gebruik een vaste beheerde formulier-id wanneer de template altijd één specifiek formulier moet renderen:
<div data-form-embed="enterprise-demo-request"></div>Gebruik een veld-ondersteunde inbedding wanneer een component een formSelect-veld blootlegt en auteurs het beheerde formulier tijdens het aanmaken moeten kunnen kiezen:
<div data-form-embed="{contactForm}"></div>Beslissingsregel:
- vaste inbedding -> één stabiele workflow die eigendom is van de template
- veld-ondersteunde inbedding -> herbruikbare component met door de auteur selecteerbare workflow
Inzendingsstroom
In hoofdlijnen:
- het formulier wordt centraal gedefinieerd
- het wordt via een component in een pagina ingebed
- de bezoeker dient gestructureerde input in
- validatie en inzendafhandeling worden uitgevoerd
- de inzending wordt opgeslagen en gerouteerd naar de relevante zakelijke workflow
Conceptueel:
Component render
-> runtime form HTML
-> visitor submits
-> validation
-> entry saved
-> notification routed
-> success response returnedIntegratiepatroon
Het duidelijke integratiepad is:
Form definition
-> Component embed via formSelect or explicit data-form-embed marker
-> Page composition
-> runtime rendering and submission handlingDat houdt het formuliergedrag gecentraliseerd terwijl pagina's en componenten herbruikbaar blijven.
Meldingen en inzendingen
Formulieren gaan niet alleen over frontendvastlegging. Ze ondersteunen ook de operationele kant van inzendingen.
Typische mogelijkheden zijn onder andere:
- routering van meldingen
- beheer van inzendingen
- beoordeling van inzendingen
- exportworkflows
Technische teams moeten het volledige operationele pad beoordelen, niet alleen of het formulier visueel op de pagina wordt weergegeven.
Richtlijnen voor veldcontract
Houd het veldcontract smal genoeg zodat de workflow duidelijk blijft.
Typische patronen:
- contact- of demo-aanvraag ->
text,email,textarea, optioneelselect - kwalificatieflow ->
text,email,select,number - intake met uploadondersteuning -> voeg
filealleen toe wanneer het bedrijf daadwerkelijk bijlagen verwerkt
Geef de voorkeur aan één duidelijk workflowcontract boven één opgeblazen formulier dat probeert elk mogelijk leadpad vast te leggen.
Hergebruikstrategie
Goed formulierontwerp geeft doorgaans de voorkeur aan hergebruik.
Als meerdere pagina's dezelfde bedrijfsworkflow delen, moeten ze doorgaans hetzelfde formuliermodel gebruiken.
Dit verbetert:
- onderhoudbaarheid
- consistentie van veldcontracten
- gedrag van meldingen
- rapportage en downstream-afhandeling
Voorbeeld:
Homepage demo CTA
Pricing page demo CTA
Enterprise solution page CTA
-> same demo-request FormAls de workflow hetzelfde is, zou het formulier meestal hetzelfde moeten zijn.
Technische richtlijnen
- modelleer elk formulier rond één zakelijke workflow
- hergebruik één formulierdefinitie op meerdere pagina's wanneer de workflow hetzelfde is
- houd veldvereisten in lijn met daadwerkelijke operationele behoeften
- vermijd pagina-specifieke duplicatie wanneer een gedeeld model volstaat
- beoordeel rendering, inzending, melding en inzendafhandeling samen
- test het echte inzendpad vóór release
Anti-patronen
Vermijd:
- voor elke pagina een nieuw formulier aanmaken wanneer de workflow identiek is
- niet-verwante leadpaden combineren in één opgeblazen formulier
- optionele gegevens verzamelen die het bedrijf nooit gebruikt
- formuliermarkup hardcoderen in paginatemplates in plaats van het beheerde model te embedden
- alleen de visuele output beoordelen en het operationele pad negeren
Voorbeeld bouwpatroon
Component:
lead-form
Embed:
<div data-form-embed="contact-sales"></div>
Pages:
/pricing/
/enterprise/
/contact/Dat houdt één workflow consistent over meerdere conversiepunten.