MevvForms-documentatie

Toegankelijke formulieren, lokale inzendingen en een omkeerbare migratie.

MevvForms bezit het formulierschema, de serverzijdige validatie, toegankelijke weergave, lokale inzendingen en een duurzame meldingswachtrij — en daarbovenop een motor voor voorwaardelijke logica die opnieuw op de server wordt uitgevoerd, front-end weergaven, bewaar- en privacytools, lokale AI-formuliergeneratie en importers voor zeven andere formulierplugins. Deze gids documenteert wat de plugin vandaag daadwerkelijk doet en zegt duidelijk waar iets nog niet bewezen is.

Overzicht en vereisten

MevvForms Free is de lokale runtime. Een gepubliceerd formulier wordt gelezen uit een geversioneerd WordPress-formulierrecord, weergegeven met echte labels en foutrelaties, op de server opnieuw gevalideerd, lokaal opgeslagen en overgedragen aan een duurzame meldingswachtrij.

WordPress
6.6 of nieuwer; getest tot en met WordPress 7.1.
PHP
8.1 of nieuwer; de releasematrix dekt PHP 8.1–8.5.
Gegevensgrens
Formulierdefinities, inzendingen en taken in de wachtrij blijven standaard op de WordPress-site.
Tabellen
Dertien eigen tabellen: inzendingen en hun getypeerde waarden, de takenwachtrij, bestanden, deels voltooide inzendingen, het meldingslogboek, twee analytische tellers, contentkoppelingen, voorraad, kortingscodes, betalingen en betalingsgebeurtenissen.
Geplande taken
Twee taken per uur. De ene past bewaartermijnen toe, de andere leegt de ene takenwachtrij die meldingen, uitgestelde feeds en exports draagt — één wachtrij in plaats van één cronjob per functie.
Vertaalbestanden
Negentien WordPress-taalvarianten worden met de plugin meegeleverd, inclusief broncatalogi.

Free doet geen licentie-, telemetrie-, AI- of updateverzoek aan een externe dienst terwijl een bezoeker een formulier weergeeft of verzendt.

Installatie

  1. Maak een herstelbare back-up van de database en wp-content.
  2. Upload de ZIP van MevvForms Free en activeer die.
  3. Controleer of de MevvForms-databasetabellen zijn aangemaakt en of een beheerder het dashboard kan openen.
  4. Houd de oorspronkelijke formulierplug-in actief tot de migratievoorvertoning, de import en de gezondheidscontroles klaar zijn.
  5. Installeer de bijbehorende Pro-begeleider alleen wanneer het opgeslagen formulier een uitgebrachte Pro-module gebruikt.

Verwijder het Free-pakket niet zolang Pro is geïnstalleerd. De runtime voor opgeslagen formulieren hoort bij Free; Pro breidt haar uit.

De bouwer

Velden worden op hun plaats gesleept, en alles wat de muis kan, kan het toetsenbord ook. Een veld toevoegen, selecteren en verwijderen zijn gewone knoppen, dus Enter en spatie werken al; een veld verplaatsen heeft een eigen sneltoets, Ctrl met de pijl omhoog of omlaag, die precies dezelfde verplaatsing aanroept als een sleepactie. Na elke wijziging wordt de focus teruggezet op de kaart waarmee u bezig was, en een live-regio kondigt aan wat er gebeurd is — “Verplaatst E-mail van positie 2 naar positie 5 van 9” — zodat het herschikken zonder zicht te volgen is.

Kolommen zijn een lay-outtool met een regel eraan vast: de leesvolgorde moet identiek blijven aan de veldvolgorde. Dit wordt op de server gecontroleerd, niet aan CSS overgelaten. Een lay-out die velden in een andere volgorde op de pagina zou plaatsen dan het schema, wordt met een foutmelding geweigerd in plaats van weergegeven, omdat een schermlezer en een ziende bezoeker hetzelfde formulier moeten krijgen.

Automatisch opslaan
Het concept wordt ongeveer tweeënhalve seconde nadat u stopt met typen naar het eigen conceptrecord van het formulier geschreven. Het raakt nooit het gepubliceerde formulier aan en maakt nooit een WordPress-revisie, dus automatisch opslaan kan nooit per ongeluk iets publiceren.
Revisies
Opslaan gebruikt het eigen revisiesysteem van WordPress in plaats van een eigen privésysteem, wat betekent dat de revisies zichtbaar zijn voor al het andere dat WordPress begrijpt. De bouwer toont de vijftig meest recente en herstelt elk daarvan.

Er is geen ongedaan maken of opnieuw uitvoeren in de bouwer. Een eerdere revisie herstellen is de weg terug, en dat herstelt het hele formulier in plaats van de laatste actie. Als u op het punt staat een grote wijziging te maken, sla dan eerst op, zodat er een revisie is om naar terug te keren.

Veldtypen

Achtendertig veldtypen, in vijf groepen. Ze zitten allemaal in het gratis pakket, inclusief handtekening, herhaalveld, matrix en quiz.

Basis
Tekst op één regel, alineatekst, e-mail, e-mail met bevestiging, telefoon, websiteadres, getal, wachtwoord, verborgen waarde.
Keuze
Vervolgkeuzelijst, vervolgkeuzelijst met meervoudige selectie, keuzerondjegroep, selectievakjesgroep, los selectievakje, toestemming, beoordeling, rangschikking, schuifregelaar.
Geavanceerd
Naam, adres, datum, tijd, datum en tijd, kleur, bestand uploaden.
Betaling
Berekening, besteltotaal, product, kortingscode.
Lay-out
Titel, sectie-einde, scheidingslijn, contentblok, pagina-einde. Deze dragen geen invoer en leveren geen opgeslagen waarde op.

Een wachtwoordveld wordt weergegeven en gevalideerd, maar de waarde ervan wordt nooit naar een inzending geschreven. Dat geldt ook voor elk veld dat als niet-opgeslagen is gemarkeerd. De berekenings- en totaalvelden tonen wel een vak op het scherm, maar hun waarde komt niet uit de browser: de server voert de formule opnieuw uit en overschrijft wat er ook binnenkwam.

Sjablonen

Achtentwintig kant-en-klare formulieren, bedoeld als beginpunt in plaats van als eindproduct: contact, offerteaanvraag, sollicitatie, evenementregistratie, feedbackenquête, ondersteuningsverzoek, afspraakverzoek, nieuwsbriefaanmelding, productbestelling, klacht, donatie, tafelreservering, gebruikersregistratie, quiz, poll, bestandsindiening, testimonial, exit-enquête, onderhoudsverzoek, vergaderplanner, cursusinschrijving, ouderlijke toestemming, aanbevelingsenquête, accommodatieboeking, vrijwilligersaanmelding, bugmelding, leveranciersregistratie en terugbelverzoek.

Een sjabloon wordt naar een nieuw formulier gekopieerd en daarna bewerkt; het is geen live koppeling, dus een sjabloon later wijzigen verandert niets aan formulieren die er al eerder uit zijn gebouwd.

Een formulier weergeven en verzenden

Sluit een gepubliceerd formulier in met [mevvforms id="123"]. De weergave drukt stabiele veldidentificatoren, echte labels, beschrijvingen, een doel voor het foutoverzicht en een ondertekende sessie af die aan de huidige formulierrevisie is gekoppeld.

In de blokeditor is hetzelfde een blok — MevvForms Form — en de voorvertoning ervan is geen benadering: de editor vraagt de server het blok weer te geven, en de server geeft het weer via precies dezelfde code die de front-end gebruikt. Wat u in de editor ziet, is de pagina.

  • Verplichte status en validatieregels komen uit het schema dat de server bezit.
  • Verborgen of onbekende clientwaarden kunnen serverregels niet versoepelen.
  • Een geldige inzending maakt de inzending aan voordat er enig meldingsneveneffect draait.
  • Het antwoord bevat het ingestelde bericht of een veilige omleiding, nooit de opgeslagen veldwaarden.

Is een formulier gewijzigd nadat de pagina werd geopend, vernieuw de pagina dan vóór het verzenden zodat de ondertekende sessie bij de huidige revisie past.

Voorwaardelijke logica

Een veld kan worden getoond of verborgen op basis van de waarde van andere velden, met EN- en OF-groepen die tot tien niveaus diep in elkaar genest kunnen zijn. Er zijn veertien operatoren beschikbaar: is gelijk aan, is niet gelijk aan, bevat, bevat niet, begint met, eindigt met, is leeg, is niet leeg, is groter dan, is kleiner dan, is groter dan of gelijk aan, is kleiner dan of gelijk aan, is een van, en is niet een van.

De voorwaarden worden bij elke inzending opnieuw op de server geëvalueerd. Een veld dat de browser heeft verborgen, kan nog altijd met de hand worden gepost, dus het verbergen ervan in de browser is een gemak en nooit een regel. Dezelfde evaluatie bepaalt ook welke velden bestaan voor validatie, voor opslag en voor de meldingsinhoud — wat ook betekent dat het formulier zich correct gedraagt met JavaScript uitgeschakeld, alleen dan zonder het live tonen en verbergen.

Meerstapsformulieren en opslaan-en-verdergaan

Een pagina-einde verdeelt één formulier in meerdere stappen. Het is een gewoon lay-outveld, dus een lang formulier wordt een meerstapsformulier door een veld toe te voegen in plaats van door het om te zetten in iets anders.

Opslaan-en-verdergaan bewaart een deels voltooide inzending en geeft de bezoeker een link terug ernaartoe. De link draagt een ondertekend token — de rij-identificatie en een HMAC daarover — en de handtekening wordt afgeleid van het eigen geheim van de site. Niets in de database is op zichzelf genoeg om er een te vervalsen, de vergelijking gebeurt in constante tijd, en de link verloopt na dertig dagen.

Het token is de inloggegeven: er is geen login nodig en er wordt geen cookie geplaatst, dus iedereen die de link heeft, kan die inzending voortzetten. Behandel een hervattingslink zoals u een link voor wachtwoordherstel zou behandelen — stuur hem naar de persoon, niet naar een gedeelde inbox.

Inzendingen en privacygrens

Inzendingen en getypeerde veldprojecties worden in eigen lokale tabellen opgeslagen. Wachtwoorden, kaartgegevens, CVV, WordPress-nonces, sessietokens en velden met store=false worden nooit naar inzendingswaarden geschreven.

  • IP-adressen worden alleen als een sitespecifieke HMAC weergegeven waar de snelheidsbegrenzing dat nodig heeft.
  • Tekst-, numerieke en datumprojecties maken later zoeken mogelijk zonder de oorspronkelijke veldidentiteit te wijzigen.
  • Een mislukte schrijfactie voor een inzending of de uitgaande wachtrij draait de volledige inzendingstransactie terug.
  • Productiebewijs legt alleen formulier-, inzendings- en taakidentificatoren vast; nooit ingezonden waarden.

De inzendingenlijst doorzoekt de opgeslagen waarden, filtert op status, op gelezen- en ster-status en op datumbereik, en past gelezen, ongelezen, ster, ster verwijderen, spam, prullenbak, herstellen en verwijderen tegelijk toe op een selectie. Elk daarvan wordt afzonderlijk tegen uw rechten gecontroleerd, dus een rol die inzendingen mag lezen maar niet verwijderen, kan ze ook niet via een bulkactie verwijderen.

CSV die correct opent
Het bestand begint met een byte-order mark, wat ervoor zorgt dat Excel het als UTF-8 leest — zonder die mark komen Turkse tekens beschadigd binnen en is de gebruikelijke reactie om de export de schuld te geven in plaats van de codering.
CSV die niet kan worden uitgevoerd
Een waarde die begint met =, +, -, @, een tab of een regelterugloop krijgt een apostrof ervoor. Die tekens laten een rekenblad een ingediende waarde als formule behandelen, en een formulier is precies de plek waar een vreemde die waarde kiest.

Meldingen en bevestigingen

Meldingen zijn duurzame taken. Een mailstoring kan een geaccepteerde inzending niet wissen: tijdelijke fouten worden met begrensde vertragingen opnieuw geprobeerd, terwijl permanente configuratiefouten stoppen voor actie door de beheerder.

Een formulier kan meerdere meldingen dragen, elk met eigen ontvangers, onderwerp, inhoud en voorwaarde. Ontvangers kunnen vaste adressen zijn, adressen die uit een door de bezoeker ingevuld veld komen, of routes gekozen op basis van een veldwaarde — en elke overeenkomende route wordt gebruikt, niet alleen de eerste, omdat een formulier dat tegelijk verkoop en support bereikt het normale geval is en geen vergissing. Een autoresponder is dezelfde machinerie, teruggericht op de persoon die het formulier heeft ingevuld.

Kopregels
Ontvangers en merge-tags in kopregels worden gevalideerd; CR/LF-injectie wordt verwijderd.
Berichttekst
HTML wordt ontsnapt of gefilterd voor de uitvoercontext.
Bevestiging
Bericht, pagina op dezelfde site en omleiding op de toegestane lijst worden gekozen uit het opgeslagen schema.
Idempotentie
Dezelfde sleutel van een meldingstaak kan hetzelfde neveneffect niet twee keer veroorzaken.
Afleveringslogboek
Eén rij per poging: welk formulier, inzending, melding en taak; of het is verzonden of mislukt; de hoeveelste poging het was; de ontvangers, het onderwerp en de foutcode en -melding. Een mislukte rij kan opnieuw vanaf het scherm worden verzonden.

Het logboek registreert wat er is geprobeerd, niet wat er is afgeleverd. Mail wordt aan WordPress overgedragen en van daaruit aan uw host; een rij gemarkeerd als verzonden betekent dat het de site heeft verlaten, en alleen een bounce aan het andere eind kan u de rest vertellen.

Spambescherming

Vanaf het moment dat u installeert staan er twee verdedigingen aan: een honeypotveld dat een mens nooit ziet en een timingcontrole die een formulier weigert dat binnen drie seconden is ingediend. Geen van beide kost de bezoeker iets en geen van beide breekt hulptechnologie, wat ook de reden is dat ze de standaard zijn en geen puzzel.

Daarnaast is alles optioneel en uitgeschakeld tot u het inschakelt: reCAPTCHA v2 en v3, hCaptcha, Cloudflare Turnstile en Akismet, plus regels voor trefwoorden, adressen en landen die volledig op uw eigen server draaien.

Een inzending die als spam wordt beoordeeld, wordt gemarkeerd, niet verwijderd. Een honeypottreffer, een mislukte of laag scorende CAPTCHA en een Akismet-oordeel slaan de inzending allemaal op met een spamstatus, waar u haar kunt lezen en van gedachten kunt veranderen — omdat de kosten van een ten onrechte weggegooide aanvraag veel hoger zijn dan de kosten van een rij die u moet bekijken. De twee uitzonderingen zijn de timingcontrole en snelheidslimitering, die het verzoek weigeren voordat er überhaupt een inzending bestaat; er is niets te markeren, en er is nooit iets eerst geaccepteerd en dan weggegooid.

Akismet is de enige optie die de ingediende waarden, het IP-adres van de bezoeker, de user agent van de browser en de verwijzende URL naar een derde partij stuurt. Dat is een doorgifte van persoonsgegevens: vertel het uw bezoekers voordat u het inschakelt. De andere providers ontvangen alleen wat hun eigen script verzamelt plus het uitdagingstoken, en het IP-adres van de bezoeker wordt niet aan hen doorgegeven tenzij een filter op uw site daarom vraagt.

Toegangscontrole

Een formulier kan volgens een schema open- en dichtgaan, stoppen na een aantal inzendingen, een ingelogde gebruiker of een bepaalde rol vereisen, of achter een wachtwoord staan. Alle vier worden door één functie bepaald, en die functie wordt vanaf twee plekken aangeroepen: eenmaal wanneer het formulier op het punt staat te worden weergegeven, en eenmaal wanneer een inzending binnenkomt.

Twee aanroeppunten, één beslissing. Als het verbergen van het formulier en het weigeren van een directe inzending apart waren geschreven, zouden ze uit elkaar gaan drijven, en zou het gesloten formulier nog steeds een POST accepteren van iemand die het adres kende. Niets hiervan wordt in de browser afgedwongen.

De inzendlimiet wordt onmiddellijk na het schrijven van de rij nogmaals gecontroleerd, waarbij de telling vergrendeld is terwijl ze wordt gelezen. Twee bezoekers die in dezelfde seconde op verzenden drukken, zouden anders allebei een controle doorstaan die is uitgevoerd voordat een van beiden was meegeteld.

Bestandsuploads

Geüploade bestanden worden buiten het bereik van de adresbalk gehouden. De mapnaam is niet te raden en draagt weigerregels voor Apache, IIS en een mapindex, zodat een bestand niet wordt geserveerd zelfs als iemand het pad ervan te weten komt.

De kluis bevindt zich binnen uw uploadmap, tenzij u MEVVFORMS_FILE_VAULT_DIR definieert en ergens buiten de webroot laat wijzen. Onder de webroot is sterker dan weigerregels, omdat het een webserverconfiguratie overleeft die is gereset of helemaal niet wordt gelezen. Als uw host het toelaat, stel het dan in.

Een bestand wordt beoordeeld op wat erin zit, niet op de naam waarmee het binnenkwam. De eerste bytes worden vergeleken met een tabel van bekende handtekeningen, uitvoerbare magic wordt regelrecht geweigerd, en een bestand wordt gescand op een ingebed script zelfs als de handtekening onschuldig leek. Een extensie is een bewering van wie het bestand heeft geüpload.

Downloads verlopen via een ondertekende link in plaats van via een pad. De handtekening dekt het bestand, de persoon en een vervaltijd — standaard vijftien minuten en nooit meer dan een dag — en de download controleert opnieuw of de persoon er recht op heeft, zelfs terwijl de link nog binnen zijn venster valt. Een link die aan iemand anders is doorgestuurd, werkt niet voor die persoon.

Front-end weergaven

Inzendingen kunnen als weergave terug op de site worden gepubliceerd: een raster, een tabel, een kalender, een tijdlijn of een kaart. Weergaven worden geplaatst met [mevvforms_view id="12"], of met het blok MevvForms View, en één record aan een pagina vastpinnen is een kwestie van de inzending een naam geven.

De kaart neemt geen contact op met een externe dienst. Er zijn geen tegels om op te halen, geen sleutel om te verkrijgen en geen geocoderingsverzoek: de punten worden getekend als een inline vectorafbeelding op uw eigen pagina, met de coördinaten daaronder ook als tekst uitgeschreven voor wie de tekening niet kan zien. Het oogt eenvoudiger dan een tegelkaart, en in ruil daarvoor wordt geen enkel adres van een bezoeker naar een kaartbedrijf gestuurd door een pagina waarvan hij niet wist dat er een kaart op stond.

Privacy en bewaartermijn

MevvForms is geregistreerd bij de eigen tools van WordPress voor het exporteren en wissen van persoonsgegevens, zodat een gegevensverzoek dat via WordPress wordt afgehandeld inzendingen, deels voltooide inzendingen en bestanden vindt zonder dat iemand hoeft te onthouden een tweede scherm te controleren.

Bewaartermijn wordt per formulier ingesteld als een aantal dagen — nul betekent voor altijd bewaren, en het plafond is tien jaar. Een taak per uur past dit toe.

Voordat een wijziging in de bewaartermijn wordt opgeslagen, vertelt het scherm u hoeveel inzendingen daardoor in aanmerking zouden komen voor permanente verwijdering. Het aantal wordt eerst berekend en het verwijderen is een aparte, apart bevestigde stap. 30 in een vakje typen mag nooit hetzelfde gebaar zijn als vierduizend records vernietigen.

Formulieranalyse

Analyse beantwoordt één vraag — waar haken mensen bij dit formulier af — en het staat uit tot u het inschakelt en aangeeft welke formulieren het mag meten. Zolang het uit staat, wordt er niets geschreven, wordt er geen script aan uw pagina's toegevoegd en bestaat er helemaal geen openbaar eindpunt.

Eenmaal ingeschakeld houdt het twee tabellen met dagelijkse tellers bij: per formulier de weergaven, starts, inzendingen en afhaakmomenten; per veld de afhaakmomenten bij dat veld, hoe vaak het leeg werd gelaten, de validatiefouten, de totale focustijd en hoeveel bezoekers erop hebben gefocust.

Er wordt geen bezoekersidentificatie aangemaakt en er wordt geen cookie geplaatst. De tabellen hebben geen kolom voor een IP-adres, een gebruiker, een e-mailadres, een sessie, een vingerafdruk, een verwijzer of een ingediende waarde — de vorm van het schema is wat een rij ontraceerbaar maakt, niet een belofte om niet te kijken. Het browsersignaal gaat naar uw eigen site en wordt geauthenticeerd met het eigen kortstondige ticket van het formulier, dat identiek is voor elke bezoeker van dat formulier. Omdat de rijen geaggregeerd zijn, vindt een export van persoonsgegevens niets om te exporteren, en wordt een wisverzoek beantwoord met een regel die dat zegt.

Een formulier genereren met AI

U kunt een formulier in één zin beschrijven en de velden voor u laten opstellen. Drie verbindingen worden ondersteund: Ollama en LM Studio, die op uw eigen machine of uw eigen server draaien, en een OpenAI-compatibel eindpunt voor wie liever een gehost model met een eigen sleutel gebruikt.

  • Er is nergens in de plugin een quotum, een tegoed of een gebruiksteller — niets om op te raken, omdat het model niet van ons is.
  • Met Ollama of LM Studio verlaat de beschrijving van uw formulier nooit de machine waarop het model draait.
  • Zonder geconfigureerde verbinding wordt de functie helemaal niet getoond en wordt er geen verzoek gedaan. Er is geen gehoste terugval die per ongeluk gebruikt kan worden.

Een sleutel die u plakt wordt bewaard in één WordPress-optie die niet op elke pagina wordt geladen, en het scherm toont hem daarna gemaskeerd — maar hij wordt opgeslagen zoals u hem hebt getypt, niet versleuteld. Alles met toegang tot de database kan hem lezen. Gebruik een sleutel die beperkt is tot wat nodig is, en vervang hem als de site van eigenaar wisselt.

Wat terugkomt is een concept. Het is een startindeling om te corrigeren, geen formulier om ongelezen te publiceren — en een gegenereerd veld heeft geen enkel idee wat uw wetgeving u verplicht te vragen of juist weg te laten.

Importeren vanuit een andere formulierplugin

Formulieren kunnen worden geïmporteerd uit zeven andere plugins: Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Ninja Forms en SureForms.

  • De bron wordt alleen ooit gelezen. Niets in de andere plugin wordt door de import gewijzigd, gedeactiveerd of verwijderd, en de eigen gegevens ervan blijven exact waar ze waren.
  • Wat niet kan worden overgenomen, wordt vermeld, met de reden. De import weigert te schrijven totdat u die lijst hebt gezien en geaccepteerd — een stille, gedeeltelijke import is de manier waarop een ontbrekende melding drie weken later wordt ontdekt door een klant die nooit een antwoord kreeg.
  • Oude shortcodes blijven werken. De shortcode van de bronplugin wordt door MevvForms beantwoord zodra de migratie actief is, dus pagina's die nooit zijn bewerkt blijven een werkend formulier tonen. Als iets anders die shortcode al heeft geclaimd, laat MevvForms hem met rust.

Houd de bronplugin geïnstalleerd totdat u het nieuwe formulier zelf hebt ingediend en de inzending en de melding hebt gezien. Terugrollen is makkelijk zolang het origineel er nog is en lastig zodra het weg is.

Omkeerbare WPForms-migratie

De migratie begint alleen-lezen. De voorvertoning toont toegewezen velden, meldingen, bevestigingen, insluitingen en niet-ondersteunde instellingen. Toepassen maakt één klaargezet MevvForms-formulier aan of werkt het bij en legt de bronhash vast. Het verwijdert geen WPForms-gegevens, revisies, tabellen of pagina-inhoud.

  1. Eis een exacte voorvertoning vóór het toepassen.
  2. Importeer het formulier klaargezet en vergelijk de bronhashes opnieuw.
  3. Doorloop de gezondheidspoort van de overschakeling: publiceren, weergeven, ondertekende testinzending, lokale inzending en melding in de wachtrij.
  4. Pas nadat die controles zijn geslaagd, mag de oorspronkelijke plug-in worden uitgeschakeld.
  5. Mislukt een controle, dan herstelt het terugdraaien de vorige lijst met actieve plug-ins en zet het geïmporteerde formulier terug op concept.

De gemeten inventaris van mevvshop.com bestaat uit één bronformulier met 4 velden, 1 melding, 1 bevestiging en één actieve insluiting. Die aantallen zijn een releasevoorwaarde voor die site, geen belofte over elk WPForms-formulier.

Een betaling ontvangen

Een formulier kan een prijs dragen. Productvelden bevatten de artikelen, berekenings- en totaalvelden bepalen wat verschuldigd is, en de bestelling wordt bij elke inzending op de server opnieuw uit het schema opgebouwd.

  • Het bedrag komt nooit uit de browser. Een totaal dat met de inzending meekomt, wordt alleen gebruikt ter vergelijking, en een mismatch wijst de inzending af in plaats van hem stilletjes te corrigeren — een bezoeker mag nooit een ander bedrag in rekening worden gebracht dan wat hem is getoond.
  • Geld wordt van begin tot eind als geheel getal in de kleinste eenheid van de valuta meegegeven. Nergens gaat een geldwaarde door een drijvendekommagetal.
  • Niets wordt betaald zonder een antwoord van de provider. Een browser die terugkeert van de betaalpagina brengt de bestelling hoogstens naar “moet worden afgestemd”; betaald vereist een handtekening-geverifieerde melding of een directe vraag aan de provider.
  • Kaartgegevens bereiken de site nooit. Er is geen veld voor een kaartnummer, een vervaldatum of een beveiligingscode in het betalingscontract en geen kolom ervoor in de database.
PayPal — een Pro-gateway
Pro voegt een PayPal-gateway toe die op Orders v2 is gebouwd. De bestelling wordt op uw server geopend, de bezoeker keurt haar goed op PayPal’s eigen pagina, en het geld wordt op de terugweg geïnd — of, als hij het tabblad eerder sluit, wanneer de ondertekende melding binnenkomt. Beide routes eindigen op dezelfde plek, zodat een goedgekeurde bestelling niet zonder inning met ongeïnd geld blijft liggen. Dubbele inning is dubbel afgeschermd: de inningsaanroep draagt een vast request-id dat PayPal niet opnieuw uitvoert, en een antwoord ‘al geïnd’ wordt gelezen als reeds verricht werk in plaats van als een fout. Terugbetalingen, geheel of gedeeltelijk, worden vanuit de inzending uitgegeven.
PayPal is niet beschikbaar in Türkiye
PayPal is niet actief in Türkiye en rekent niet af in Turkse lira, dus deze gateway is bedoeld voor verkoop in het buitenland. De Turkse betaaldienstverleners blijven waar ze waren, op de MevvPos-brug, en daaraan verandert hier niets.

Geen transactiekosten, op geen enkel niveau. Verschillende formulierplugins nemen een percentage van wat u int op hun gratis betaallaag; een test bevestigt dat het bedrag dat naar de provider wordt gestuurd exact gelijk is aan het besteltotaal.

Er is geen enkele betaling van begin tot eind uitgevoerd, PayPal inbegrepen. Er zit nog geen live- of sandbox-handelsaccount achter: elk providerpad wordt tegen een vervanger uitgevoerd, en de vorm van de aanvraag en de melding is regel voor regel getoetst aan de gepubliceerde referenties van de providers, niet aan een voltooide aanroep. Beschouw de betaalfuncties tot dat verandert als onbewezen en zet ze niet op ons woord alleen voor echte klanten.

Zapier en Make

Pro kan inzendingen ook als REST hooks naar Zapier en Make publiceren. Zapier abonneert zich op een van uw formulieren, MevvForms onthoudt het abonnement, en elke inzending daarna wordt in de wachtrij gezet en afgeleverd. Afmelden verwijdert het weer, en een aparte samples-route geeft Zapier een recente inzending, zodat het veldkoppelingsscherm echte veldnamen laat zien in plaats van lege vakjes.

  • De authenticatie is een sitesleutel die u genereert op het Zapier-instellingenscherm. Het is de enige credential en identificeert de site, niet een persoon.
  • Leveringen gaan via de ondertekende webhook en de taakwachtrij die de gratis editie al gebruikt. Dit is een nieuwe bestemming, geen tweede leveringssysteem, dus het leveringslogboek en de herhaalpogingen werken hetzelfde.
  • Zonder geldige licentie start de module helemaal niet: er wordt geen route geregistreerd, geen hook toegevoegd, en er is geen codepad dat een extern adres zou kunnen bereiken.

Zapier en Make waren ook zonder Pro al bereikbaar, want de gratis editie kan een ondertekende webhook naar elk adres POSTen. Wat Pro wegneemt is het stuk ertussen — u bouwt het abonnement, de veldkoppeling en de herhaalpoging niet meer zelf.

Salesforce

Pro kan een inzending omzetten in een Salesforce Lead, Contact of Case. Je koppelt formuliervelden aan de velden van het object op het connectorscherm, en elke inzending wordt via dezelfde wachtrij verstuurd die de andere connectors gebruiken — zodat een storing bij Salesforce het record vertraagt, en niet verliest.

  • Authenticatie verloopt via OAuth 2.0 met een refresh-token. Er wordt geen Salesforce-wachtwoord op je site opgeslagen.
  • Sandbox en productie zijn een schakelaar, geen tweede set inloggegevens om uit elkaar te houden.
  • De inzending zelf blijft in beide gevallen op je eigen site. Een kopie naar Salesforce sturen verplaatst je gegevens niet daarheen.

Uploads op je eigen objectopslag

Standaard staat de bestandenkluis op je eigen schijf, buiten de webroot. Pro kan hem in plaats daarvan verplaatsen naar elke S3-compatibele opslag — AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2 of Wasabi — en ondertekent elk verzoek zelf, zodat geen enkele SDK van derden de inzendingen ooit te zien krijgt.

Wat verandert is waar de bytes staan, niet wie ze mag ophalen. Bestanden worden nog steeds alleen vrijgegeven via een tijdgebonden link die aan één persoon is gekoppeld, en de gratis plugin bepaalt nog steeds wie er een mag krijgen. De opslag verplaatsen verplaatst de rechtencontrole niet.

Talen

Negentien WordPress-taalvarianten worden met de plugin meegeleverd: Duits (Duitsland, formeel Duitsland en Zwitserland), Engels, Spaans (Spanje, Mexico, Argentinië, Chili, Colombia), Frans, Italiaans, Japans, Nederlands (Nederland en België), Pools, Portugees (Brazilië en Portugal), Russisch en Turks. De bewerkbare broncatalogi zijn inbegrepen, dus een vertaling kan op uw eigen site worden gecorrigeerd.

Turks en Engels zijn de twee die regel voor regel zijn nagelezen. De andere zijn compleet, maar niet allemaal hebben ze al een menselijke controle gehad; als een tekenreeks in uw taal vreemd overkomt, is dat de reden, en de catalogus is er om dat te verbeteren.

Grens tussen Free en Pro

De betrouwbare runtime hoort bij de gratis editie en daarmee vrijwel alles op deze pagina: het schema, alle achtendertig veldtypen, de toegankelijke renderer, servervalidatie en voorwaardelijke logica, formulieren met meerdere stappen inclusief samenvattingsstap en conversatiemodus, opslaan-en-doorgaan, lokale inzendingen met CSV-export en een auditspoor, beheerdersnotities en een goedkeuringsproces, de meldingswachtrij en het afleverlogboek, uitgaande met HMAC ondertekende webhooks, de volledige spamsuite, toegangsbeheer, de bestandskluis, frontend-weergaven, bewaar- en privacygereedschap, statistieken, AI-generatie, de importeurs voor zeven plugins en eenmalige betalingen zonder transactiekosten.

Pro voegt de benoemde dienstconnectoren toe: Mailchimp, HubSpot, Brevo, ActiveCampaign, Airtable, Notion, Google Sheets, Discord, Telegram en Slack, elk in de eigen vorm van die dienst, plus een PayPal-gateway, een op REST hooks gebouwde Zapier- en Make-connector, terugkerende betalingen, kortingscodes en deelbetalingen. Let op wat dit nog steeds betekent: de gratis editie POST al een ondertekende webhook naar elk adres, dus Zapier, Make en alles wat u zelf schrijft blijven bereikbaar zonder Pro — wat Pro wegneemt is het stuk ertussen: het abonnement, de veldkoppeling en de herhaalpoging die u anders zelf zou schrijven. De licentiedrempel is de eigen opstartcontrole van de module: zonder geldige licentie wordt geen connectorklasse geladen, geen taakfilter geregistreerd en kan er geen enkele externe aanroep plaatsvinden.

Een item op de roadmap wordt niet aangeprezen als een werkende mogelijkheid. Controleer de geïnstalleerde versie en de releasenotities voordat u een formulier rond een Pro-module ontwerpt.

Probleemoplossing en terugdraaien

De oude shortcode blijft leeg
Controleer of de bron-id een actieve migratietoewijzing heeft en of een andere plug-in niet de wpforms-shortcode bezit.
De inzending meldt een verlopen sessie
Vernieuw de pagina en verzend tegen de laatst gepubliceerde revisie.
Een melding staat te wachten
Open de status van de wachtrij en herstel de permanente configuratiefout, of laat bij een tijdelijke transportfout de geplande nieuwe poging toe.
De overschakeling heeft WPForms niet uitgeschakeld
Lees het gezondheidsresultaat. De veiligheidspoort heeft WPForms behouden of hersteld omdat de controle van weergave, verzending, inzending of taak is mislukt.
Een veld dat de bezoeker niet kon zien, kwam toch binnen
Dat is het punt waarop de server beslist. Voorwaarden worden bij inzending opnieuw geëvalueerd, dus een waarde die voor een verborgen veld is gepost, wordt daar weggegooid — controleer de voorwaarde zelf in plaats van de browser.
Turkse tekens zijn beschadigd in de CSV
Het bestand draagt een byte-order mark en is UTF-8. Een rekenblad dat is verteld het als iets anders te importeren, zal het nog steeds verkeerd tonen; open het rechtstreeks in plaats van via een importwizard met een al gekozen codering.
Een downloadlink zegt dat hij is verlopen
Links duren standaard vijftien minuten en zijn gebonden aan de persoon die erom heeft gevraagd. Genereer een nieuwe vanuit de inzending; een link kan niet aan een collega worden doorgestuurd.
Het AI-paneel is er niet
Er is geen verbinding geconfigureerd. Het paneel wordt verborgen in plaats van kapot getoond, en zolang het verborgen is, wordt er nergens iets naartoe gestuurd.
Een menu-item opent een leeg scherm
Sommige items in het menu zijn plaatshouders voor schermen die nog niet gebouwd zijn. Een leeg scherm is geen kapotte installatie.

Deel voor ondersteuning de plug-in-, WordPress- en PHP-versies plus de veilige foutcode. Verwijder veldwaarden, klantgegevens, sessietokens, nonces en licentiesleutels voordat u logboeken verstuurt.

Updates

Updates komen via WordPress zelf. De plugin vraagt onze winkel of er een nieuwere versie bestaat en geeft het antwoord door aan WordPress’ eigen updatestroom, zodat een nieuwe versie op het pluginscherm verschijnt met een gewone Bijwerken-knop in plaats van te wachten tot iemand handmatig een zip ophaalt. In de gratis editie draagt dat verzoek alleen de pakketnaam en de geïnstalleerde versie — geen siteadres, geen e-mailadres, geen licentiesleutel en geen plugin-inventaris. Omdat niets erin u identificeert, rust het vertrouwen op de handtekening: het antwoord is ondertekend met onze Ed25519-sleutel, en een antwoord dat niet is ondertekend, verkeerd is ondertekend, opnieuw is afgespeeld vanaf een oud tijdstempel of de download naar een andere host dan de onze wijst, wordt weggegooid zonder de site aan te raken.

Grenzen

Duidelijk gesteld, zodat niets op deze pagina op vertrouwen hoeft te worden aangenomen.

  • De betaalfuncties zijn niet geverifieerd tegen een live of sandbox handelaarsaccount. Ze zijn gebouwd volgens de documentatie van de providers en getest tegen een vervangende transportlaag.
  • Er is geen ongedaan maken of opnieuw uitvoeren in de bouwer. Revisies zijn de weg terug.
  • PDF-uitvoer hangt af van de site. Als er een PDF-bibliotheek is geïnstalleerd, gebruikt MevvForms die; zo niet, dan produceert het in plaats daarvan een afdrukbaar document en laat het afdrukken over aan de browser. Er wordt geen PDF-bibliotheek meegeleverd en er wordt er ook nergens een opgehaald.
  • Elk menu-item opent nu een echt scherm. Rapporten, integraties, import en export, instellingen, rollen en logboeken waren in eerdere versies tijdelijke aanduidingen; sinds 1.1.0 wordt elk door zijn eigen pakket bediend.
  • De kluis voor geüploade bestanden bevindt zich standaard binnen de uploadmap en wordt beschermd door weigerregels in plaats van door zijn locatie, tenzij u hem zelf buiten de webroot plaatst.
  • AI-sleutels worden opgeslagen zoals ze zijn getypt, niet versleuteld. Ze worden gemaskeerd op het scherm en buiten de altijd geladen opties gehouden, wat niet hetzelfde is als onleesbaar zijn.
  • Het toetsenbordequivalent van de bouwer is compleet maar klein. Knoppen dragen de gewone toetsen en een veld verplaatsen heeft één sneltoets; er is geen grotere toetsenkaart om te leren, en ook geen om te ontdekken.

Waar deze pagina zegt dat iets gemeten is, is het gemeten. Waar staat dat iets niet bewezen is, is dat geen bescheidenheid — het betekent dat de test nog niet bestaat, en u moet die bewering als onaf beschouwen.