{"id":348644,"date":"2026-08-07T06:07:19","date_gmt":"2026-08-07T06:07:19","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/hafenstudios-leadlotse-form-lead-manager\/"},"modified":"2026-08-07T06:06:48","modified_gmt":"2026-08-07T06:06:48","slug":"leadlotse","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/leadlotse\/","author":23511618,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.4.3","stable_tag":"1.4.3","tested":"7.0.3","requires":"6.5","requires_php":"8.1","requires_plugins":null,"header_name":"Hafenstudios Leadlotse \u2013 Form & Lead Manager","header_author":"Hafenstudios","header_description":"Build forms, collect leads and handle double opt-in. GDPR tools included. No external services.","assets_banners_color":"129986","last_updated":"2026-08-07 06:06:48","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/hafenstudios.com\/leadlotse","header_author_uri":"https:\/\/hafenstudios.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":37,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"1.4.3":{"tag":"1.4.3","author":"hafenstudios","date":"2026-08-07 06:06:48"}},"upgrade_notice":{"1.4.3":"<p>Hardened input handling, longer prefixes for stored data (migrated automatically) and English source strings.<\/p>","1.4.0":"<p>Three form appearances, theme-aware styling, errors at the field, and a fix for submit labels that were silently dropped when saving.<\/p>"},"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3637410,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3637410,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3637410,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3637410,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":{"leadlotse\/form-embed":{"$schema":"https:\/\/schemas.wp.org\/trunk\/block.json","apiVersion":3,"name":"leadlotse\/form-embed","title":"Leadlotse Form","category":"widgets","icon":"feedback","description":"Embeds a Leadlotse form into the page.","keywords":["form","contact","lead","leadlotse"],"textdomain":"leadlotse","attributes":{"formId":{"type":"number","default":0}},"supports":{"html":false,"align":["wide"]},"editorScript":"leadlotse-form-embed-editor"}},"tagged_versions":["1.4.3"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3637410,"resolution":"1","location":"assets","locale":"","width":2560,"height":1600},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3637410,"resolution":"2","location":"assets","locale":"","width":2560,"height":1600},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3637410,"resolution":"3","location":"assets","locale":"","width":2560,"height":1600},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3637410,"resolution":"4","location":"assets","locale":"","width":2560,"height":1600},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3637410,"resolution":"5","location":"assets","locale":"","width":2560,"height":5934},"screenshot-6.png":{"filename":"screenshot-6.png","revision":3637410,"resolution":"6","location":"assets","locale":"","width":2560,"height":1600},"screenshot-7.png":{"filename":"screenshot-7.png","revision":3637410,"resolution":"7","location":"assets","locale":"","width":2560,"height":1600}},"screenshots":{"1":"Purpose gallery: pick a form by what it should achieve.","2":"Form builder with field list, live preview and settings side by side.","3":"Inbox with status filter, search and the detail panel of one entry.","4":"Setup checklist that walks through recipients, consent text and embedding.","5":"A rendered form in the three appearances: plain, card and compact.","6":"Consent settings of a form with the editable consent text.","7":"Mail sender settings with a test mail and deliverability hints."}},"plugin_section":[],"plugin_tags":[358,24592,601,131785,335],"plugin_category":[42],"plugin_contributors":[273845],"plugin_business_model":[],"class_list":["post-348644","plugin","type-plugin","status-publish","hentry","plugin_tags-contact-form","plugin_tags-double-opt-in","plugin_tags-forms","plugin_tags-gdpr","plugin_tags-leads","plugin_category-contact-forms","plugin_contributors-hafenstudios","plugin_committers-hafenstudios"],"banners":{"banner":"https:\/\/ps.w.org\/leadlotse\/assets\/banner-772x250.png?rev=3637410","banner_2x":"https:\/\/ps.w.org\/leadlotse\/assets\/banner-1544x500.png?rev=3637410","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/leadlotse\/assets\/icon-128x128.png?rev=3637410","icon_2x":"https:\/\/ps.w.org\/leadlotse\/assets\/icon-256x256.png?rev=3637410","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-1.png?rev=3637410","caption":"Purpose gallery: pick a form by what it should achieve."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-2.png?rev=3637410","caption":"Form builder with field list, live preview and settings side by side."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-3.png?rev=3637410","caption":"Inbox with status filter, search and the detail panel of one entry."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-4.png?rev=3637410","caption":"Setup checklist that walks through recipients, consent text and embedding."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-5.png?rev=3637410","caption":"A rendered form in the three appearances: plain, card and compact."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-6.png?rev=3637410","caption":"Consent settings of a form with the editable consent text."},{"src":"https:\/\/ps.w.org\/leadlotse\/assets\/screenshot-7.png?rev=3637410","caption":"Mail sender settings with a test mail and deliverability hints."}],"raw_content":"<!--section=description-->\n<p>Leadlotse starts from the goal, not from an empty canvas. You pick a purpose - contact, consultation, inquiry, newsletter, download, callback, quote or event - and get a form that already has sensible fields, a consent text and a confirmation email. Your first form is live in minutes.<\/p>\n\n<p>Every submission lands in a tidy inbox inside WordPress. No shared mailbox where inquiries drown. Each entry carries a status (new, in progress, done), and the plugin points it out when entries have been waiting too long for an answer.<\/p>\n\n<h4>What you get<\/h4>\n\n<ul>\n<li>Purpose templates in English and German instead of an empty form builder<\/li>\n<li>Form builder with live preview: fields, preview and settings on one screen<\/li>\n<li>Inbox with status, search and filters<\/li>\n<li>Conditional fields: show a field only when another one has a certain value<\/li>\n<li>Double opt-in for newsletter sign-ups, with a signed confirmation link<\/li>\n<li>Spam protection without a captcha: honeypot, time trap and rate limiting per IP and form<\/li>\n<li>Field types for text, email, phone, number, date, select, radio, checkbox, consent and hidden attribution values<\/li>\n<li>GDPR tools: consent records with the exact text and version, data minimisation, retention period, and hooks into the WordPress data export and erasure requests<\/li>\n<li>Works without JavaScript: the form falls back to a classic POST and no submission is lost<\/li>\n<li>Accessible markup: every field has a label, errors sit at the field and are wired up with aria-describedby and aria-invalid<\/li>\n<li>Gutenberg block and shortcode<\/li>\n<li>Your data stays on your server<\/li>\n<\/ul>\n\n<h4>No external services<\/h4>\n\n<p>Leadlotse processes submissions on your own server and sends email through the delivery path your WordPress installation already uses. It does not call any third-party API, loads no remote fonts, scripts or images, and collects no telemetry.<\/p>\n\n<h4>Who it is for<\/h4>\n\n<p>Small and medium businesses, local service providers, coaches and consultants who want to collect inquiries and lose none of them, without a large CRM or paid add-on services.<\/p>\n\n<p>Leadlotse is part of the Hafenstudios fleet; it works on its own and cooperates with the other fleet plugins once they are active. An extended edition with event registration, ticketing and messenger replies is available at hafenstudios.com.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin under Plugins, Add New, or install it from the plugin directory.<\/li>\n<li>Activate it.<\/li>\n<li>Open the Leadlotse menu, choose \"create first form\" and pick a purpose.<\/li>\n<li>Embed the form with the \"Leadlotse Formular\" block or the shortcode.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20call%20external%20services%3F\"><h3>Does it call external services?<\/h3><\/dt>\n<dd><p>No. Leadlotse processes submissions on your own server and uses your WordPress installation for sending email. There is no third-party API call, no remote asset and no telemetry.<\/p><\/dd>\n<dt id=\"can%20i%20use%20it%20in%20a%20gdpr-compliant%20way%3F\"><h3>Can I use it in a GDPR-compliant way?<\/h3><\/dt>\n<dd><p>Leadlotse brings the tools: a consent record that stores the exact wording and version that was shown, data minimisation, an optional retention period, double opt-in for newsletter sign-ups, and integration with the WordPress data export and erasure requests. The legal wording, for example your privacy policy, remains your responsibility.<\/p><\/dd>\n<dt id=\"do%20i%20need%20to%20write%20code%3F\"><h3>Do I need to write code?<\/h3><\/dt>\n<dd><p>No. You pick a purpose, adjust the fields and embed the form.<\/p><\/dd>\n<dt id=\"does%20the%20form%20work%20without%20javascript%3F\"><h3>Does the form work without JavaScript?<\/h3><\/dt>\n<dd><p>Yes. Without JavaScript the form submits over a classic POST and shows the same result message.<\/p><\/dd>\n<dt id=\"where%20do%20submissions%20go%3F\"><h3>Where do submissions go?<\/h3><\/dt>\n<dd><p>Into a custom database table, listed in the Leadlotse inbox. Notification and confirmation emails are sent through WordPress. Uninstalling can remove the table and the options again.<\/p><\/dd>\n<dt id=\"can%20i%20change%20how%20the%20form%20looks%3F\"><h3>Can I change how the form looks?<\/h3><\/dt>\n<dd><p>Yes. Choose one of three appearances per form, and the form inherits colours, radius and typography from your theme. To adjust something you set a CSS variable rather than overriding rules.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>1.4.3<\/h4>\n\n<ul>\n<li>Improved: every submitted value is sanitised centrally, before any extension sees it. The request snapshot handed to spam filters is now a sanitised excerpt of the request headers instead of the raw server environment.<\/li>\n<li>Improved: HTML returned by the leadlotse_form_fields filter is limited to input elements before it is printed.<\/li>\n<li>Improved: longer prefixes for stored data. The form post type, the entries table and the plugin transients now carry the plugin name; existing installations are migrated on update.<\/li>\n<li>Improved: source strings are English. German is delivered as a translation, and other languages can be contributed on translate.wordpress.org.<\/li>\n<\/ul>\n\n<h4>1.4.0<\/h4>\n\n<ul>\n<li>New: three appearances per form - plain (a bottom line instead of a box), card (border and shadow) and compact (single row, for newsletter sign-ups). Selected in the builder, the preview follows.<\/li>\n<li>New: the form inherits colours, radius and typography from your theme without a line of CSS. To change something you set a variable instead of a rule, for example .leadlotse-form { --ll-akzent: #0a6; }.<\/li>\n<li>New: a visible sending state on the submit button (ring, label, disabled) so nobody clicks twice on a slow connection.<\/li>\n<li>New: error messages sit at the field instead of only being collected at the top, including the ones from the browser, and are wired up with aria-invalid and aria-describedby. They disappear as soon as the input is valid.<\/li>\n<li>New: the consent field gets its own calm row instead of being small print between two fields.<\/li>\n<li>New: attribution values (ref and utm_*) survive a detour over other pages. Somebody who arrives on a blog post through ?ref=partner and only then clicks to the form is attributed correctly. This is remembered for the session only, without a cookie, and can be switched off.<\/li>\n<li>New: the empty state offers the three most common purposes as tiles and leads into the builder with one click.<\/li>\n<li>New: the label of the submit button is stored again. It was read when rendering but silently dropped when saving.<\/li>\n<li>New: every field id of a submission can be used as a {fieldid} placeholder in the subject and body of the notification and confirmation email, next to {name}, {first_name}, {form} and {site}.<\/li>\n<li>Fixed: if a form definition cannot be stored, the editor now reports an error instead of showing success while the change is gone. The value is read back after writing and compared.<\/li>\n<li>Improved: German field names are recognised. A field named \"vorname\" or \"nachname\" now yields a contact with a name; if no name field exists, the display name is built from first and last name.<\/li>\n<li>Improved: hidden fields store up to 500 instead of 200 characters, so long campaign ids are no longer truncated.<\/li>\n<li>Improved: table names in database queries use the %i identifier placeholder throughout.<\/li>\n<li>Improved: borders and error colours follow the page rather than the operating system and meet the contrast requirements in both light and dark.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>New: number field with an optional minimum and maximum.<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>New: mail sender settings page with a test mail and deliverability hints.<\/li>\n<li>Improved: stricter phone number validation.<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>First release: form builder, purpose templates in English and German, inbox, conditional fields, double opt-in, spam protection, GDPR tools, Gutenberg block and shortcode.<\/li>\n<\/ul>","raw_excerpt":"Build forms from purpose templates, collect leads in a WordPress inbox and confirm sign-ups by email. GDPR tools included.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/348644","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=348644"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/hafenstudios"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=348644"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=348644"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=348644"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=348644"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=348644"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=348644"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}