PHPackages                             dl/honeypotformfield - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Security](/categories/security)
4. /
5. dl/honeypotformfield

ActiveNeos-package[Security](/categories/security)

dl/honeypotformfield
====================

Spam protection using a honeypot field for the Neos form builder

3.0.0(11mo ago)884.5k↓10.6%2[1 PRs](https://github.com/daniellienert/honeypotformfield/pulls)MITPHP

Since Dec 26Pushed 11mo ago1 watchersCompare

[ Source](https://github.com/daniellienert/honeypotformfield)[ Packagist](https://packagist.org/packages/dl/honeypotformfield)[ RSS](/packages/dl-honeypotformfield/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (9)Dependencies (1)Versions (17)Used By (0)

Honeypot Field for Neos.Form and Neos.Form.Builder
==================================================

[](#honeypot-field-for-neosform-and-neosformbuilder)

[![Latest Stable Version](https://camo.githubusercontent.com/8c63bab5ed5709c78f61b008623a1c9d6824e860ec8d351324a158efdc9d2828/68747470733a2f2f706f7365722e707567782e6f72672f646c2f686f6e6579706f74666f726d6669656c642f762f737461626c65)](https://packagist.org/packages/dl/honeypotformfield) [![Total Downloads](https://camo.githubusercontent.com/96e61eee387aa3a9383ccc7fe266d0b5e3a5cb681bb088da4d90ea87877bbe1f/68747470733a2f2f706f7365722e707567782e6f72672f646c2f686f6e6579706f74666f726d6669656c642f646f776e6c6f616473)](https://packagist.org/packages/dl/honeypotformfield) [![License](https://camo.githubusercontent.com/88e12fc50f632ea5d394ac6c73249b6541eff93120427a305ab2b12884d618ac/68747470733a2f2f706f7365722e707567782e6f72672f646c2f686f6e6579706f74666f726d6669656c642f6c6963656e7365)](https://packagist.org/packages/dl/honeypotformfield)

This package adds an HoneypotField element, which can be used within your forms. This element is rendered hidden and should never be filled out by a real form user.

A spam detection finisher checks if the form contains such honeypot fields. If any of that fields are filled out, additional field values are introduced which can be used in the following finishers to handle spam.

Installation
------------

[](#installation)

```
composer require dl/honeypotformfield

```

Usage
=====

[](#usage)

Using the flow form configuration
---------------------------------

[](#using-the-flow-form-configuration)

```
type: 'Neos.Form:Form'
identifier: 'my-form'
renderables:
  items:
    type: 'Neos.Form:Page'
    identifier: 'my-page'
    renderables:
      name:
        type: 'Neos.Form:SingleLineText'
        identifier: 'name'
      honeyPot:
        type: 'DL.HoneypotFormField:HoneypotField'
        identifier: 'full_name'

finishers:
  spamDetection:
    identifier: 'DL.HoneypotFormField:SpamDetectionFinisher'
```

Using the Neos Form Builder
---------------------------

[](#using-the-neos-form-builder)

**Requires the suggested package neos/form-builder.**

1. Add honeypot form fields (at least one - as many as you like)
2. Add the Spam detection finisher before the finishers, that should use the spam markers.

[![Usage of honeypot field and detection finisher](Documentation/Images/HoneypotElements.png)](Documentation/Images/HoneypotElements.png)

The finisher adds the following new formFields to the formState:

FieldNameValueUsagespamDetectedbool true / false when the submitted form is detected as spam`{formState.formValues.spamDetected}`spamMarkerContains `[SPAM]` if detected. Can be used in eMails`{formState.formValues.spamMarker}`spamFilledOutHoneypotFieldsContains the filled honeypot fields`{formState.formValues.spamFilledOutHoneypotFields}`### Mark sent mails as spam

[](#mark-sent-mails-as-spam)

These fields can then be used for example to mark mails as spam:

[![Use the spam marker in email header](Documentation/Images/UseSpamMarker.png)](Documentation/Images/UseSpamMarker.png)

Settings
========

[](#settings)

### Cancel mail sending on spam detection

[](#cancel-mail-sending-on-spam-detection)

When the `cancelSubsequentFinishersOnSpamDetection` setting is set to `true`, subsequent finishers are not executed when the form was detected as spam.

[![Use the spam marker in email header](Documentation/Images/CancelFinisherExecution.png)](Documentation/Images/CancelFinisherExecution.png)

Here the confirmation message is shown but mail sending is cancelled.

### Configuration:

[](#configuration)

```
DL:
  HoneypotFormField:
    cancelSubsequentFinishersOnSpamDetection: true
```

Log form content when detected as spam
--------------------------------------

[](#log-form-content-when-detected-as-spam)

In order to debug the spam detection and to see what kind of spam is coming in, you can enable the logging of the complete form content with setting `logSpamFormData` to true.

### Configuration:

[](#configuration-1)

```
DL:
  HoneypotFormField:
    logSpamFormData: true
```

###  Health Score

46

—

FairBetter than 93% of packages

Maintenance50

Moderate activity, may be stable

Popularity37

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity69

Established project with proven stability

 Bus Factor1

Top contributor holds 92.3% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~156 days

Recently: every ~484 days

Total

16

Last Release

356d ago

Major Versions

0.1.0 → 1.0.02018-12-30

1.3.0 → 2.0.02019-11-01

2.1.2 → 3.0.02025-05-27

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/642226?v=4)[Daniel Lienert](/maintainers/daniellienert)[@daniellienert](https://github.com/daniellienert)

---

Top Contributors

[![daniellienert](https://avatars.githubusercontent.com/u/642226?v=4)](https://github.com/daniellienert "daniellienert (24 commits)")[![crydotsnake](https://avatars.githubusercontent.com/u/39345336?v=4)](https://github.com/crydotsnake "crydotsnake (1 commits)")[![gerdemann](https://avatars.githubusercontent.com/u/690536?v=4)](https://github.com/gerdemann "gerdemann (1 commits)")

---

Tags

formneosneoscmsprotectionspamFormsHoneypotNeosspamprotectionformbuilder

### Embed Badge

![Health badge](/badges/dl-honeypotformfield/health.svg)

```
[![Health](https://phpackages.com/badges/dl-honeypotformfield/health.svg)](https://phpackages.com/packages/dl-honeypotformfield)
```

###  Alternatives

[msurguy/honeypot

Honeypot spam prevention

4381.2M12](/packages/msurguy-honeypot)[laragear/poke

Keep your forms alive, avoid TokenMismatchException by gently poking your Laravel app

2211.5k](/packages/laragear-poke)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
