Happyforms – Form Builder for WordPress: Drag & Drop Contact Forms, Surveys, Payments & Multipurpose Forms

Best WordPress contact form, newsletter form and payment form builder without the sucky stuff — lost emails, pesky spam, leaky privacy and outsourced …

v1.26.14HappyformsUpdated 2026-05-27Added Feb 7, 201820k+ installs88% rating
22
Score
1,037
Errors
722
Warnings
+0
Change

Category Scores

Security0
Repo78
Performance100
Maintainability0

Top Issues by Category

security918
maintainability748
i18n68

Issues Details

1,759 issues found in latest scan

ERROR425
WordPress.Security.EscapeOutput.UnsafePrintingFunction

All output should be run through an escaping function (like esc_html_e() or esc_attr_e()), found '_e'.

ERROR370
WordPress.Security.EscapeOutput.OutputNotEscaped

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '"{$variable}: {$value}{$unit};\n"'.

WARNING311
Generic.PHP.DisallowAlternativePHPTags.MaybeASPShortOpenTagFound

Possible use of ASP style short opening tags detected; found: <%=

WARNING182
WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound

Global variables defined by a theme/plugin should start with the theme/plugin prefix. Found: "$allowed_tags".

ERROR142
missing_direct_file_access_protection

PHP file should prevent direct access. Add a check like: if ( ! defined( 'ABSPATH' ) ) exit;

WARNING83
Generic.PHP.DisallowAlternativePHPTags.MaybeASPOpenTagFound

Possible use of ASP style opening tags detected; found: <% for (var p = 0; p < parts.length; p ++)...

WARNING45
WordPress.Security.NonceVerification.Recommended

Processing form data without nonce verification.

ERROR30
WordPress.WP.I18n.MissingArgDomain

Missing $domain parameter in function call to __().

WARNING27
WordPress.Security.ValidatedSanitizedInput.InputNotSanitized

Detected usage of a non-sanitized input variable: $_GET[$this->action_archive]

WARNING24
WordPress.Security.ValidatedSanitizedInput.MissingUnslash

$_GET[$this->action_archive] not unslashed before sanitization. Use wp_unslash() or similar

ERROR16
WordPress.WP.I18n.MissingTranslatorsComment

A function call to __() with texts containing placeholders was found, but was not accompanied by a "translators:" comment on the line above to clarify the meaning of the placeholders.

ERROR16
WordPress.WP.I18n.NoEmptyStrings

The $text text string should have translatable content. Found: ''

WARNING11
WordPress.Security.NonceVerification.Missing

Processing form data without nonce verification.

WARNING7
WordPress.DB.DirectDatabaseQuery.DirectQuery

Use of a direct database call is discouraged.

WARNING7
WordPress.DB.DirectDatabaseQuery.NoCaching

Direct database call without caching detected. Consider using wp_cache_get() / wp_cache_set() or wp_cache_delete().

ERROR7
WordPress.Security.EscapeOutput.ExceptionNotEscaped

All output should be run through an escaping function (see the Security sections in the WordPress Developer Handbooks), found '$length'.

WARNING5
WordPress.Security.ValidatedSanitizedInput.InputNotValidated

Detected usage of a possibly undefined superglobal array index: $_GET['form_id']. Check that the array index exists before using it.

WARNING4
Internal.NoCodeFound

No PHP code was found in this file and short open tags are not allowed by this install of PHP. This file may be using short open tags but PHP does not allow them.

ERROR4
WordPress.DB.PreparedSQL.NotPrepared

Use placeholders and $wpdb->prepare(); found $query

ERROR4
WordPress.WP.EnqueuedResources.NonEnqueuedStylesheet

Stylesheets must be registered/enqueued via wp_enqueue_style()

WARNING3
WordPress.PHP.DevelopmentFunctions.error_log_error_log

error_log() found. Debug code should not normally be used in production.

ERROR3
WordPress.WP.I18n.InterpolatedVariableText

The $text parameter must not contain interpolated variables or expressions. Found: {$existing_part_class}

ERROR3
WordPress.WP.I18n.UnorderedPlaceholdersText

Multiple placeholders in translatable strings should be ordered. Expected "%1$s, %2$s", but got "%s, %s" in '%s %s imported successfully.'.

ERROR3
wp_function_not_compatible_with_requires_wp

Function "get_block_templates()" requires WordPress 5.8.0, but your plugin minimum supported version is WordPress 5.0.0.

WARNING2
WordPress.DB.SlowDBQuery.slow_db_query_meta_query

Detected usage of meta_query, possible slow query.

Latest Snapshot

Findings

1,759

Errors

1,037

Warnings

722

Score History

First score snapshot

First scan completed Jun 20, 2026

v1.26.14 · Plugin Check 2.0.0 · Model 2026.06-mvp-static-v2

Jun 20, 2026

v1.26.14

22

Latest

Findings
1,759
Errors
1,037
Warnings
722
Plugin Check
2.0.0
Model
2026.06-mvp-static-v2

Related Plugins