WordPress plugin intelligence profile

Neutrope Lead Desk for Contact Form 7

Save Contact Form 7 submissions to your database and manage them as leads in the WordPress admin (list, detail, status, notes, CSV export).

WP PlugIndex snapshot

Current directory snapshot

Tested up to WordPress 7.1
Current version0.4.0
WordPress coverageTested up to WordPress 7.1
Minimum stackWP 6.0 · PHP 7.4
Directory statusactive
Last directory update26 Oct 20269d ago
Active installations10Adoption metric — not a quality score
WordPress.org ratingNo WordPress.org ratings yet
Official packageDirect from WordPress.org

Repository metrics are context, not quality scores. Active installations measure adoption and can strongly reflect a plugin’s age and historical popularity. Ratings, recent updates and “Tested up to” metadata also do not guarantee modern code, error-free operation, security, feature completeness or suitability for a particular site. Why active installs don’t tell the whole story →

WP PlugIndex currently records Neutrope Lead Desk for Contact Form 7 version 0.4.0 as active, updated 9d ago and tested up to WordPress 7.1.

Overview

About this plugin

Neutrope Lead Desk for Contact Form 7 captures every Contact Form 7 submission into a dedicated database table and provides a simple WordPress admin interface for managing those submissions as leads.

The free version is intentionally focused: it saves submissions reliably, gives you an admin list/detail UI, lets you change status, add internal notes, and export to CSV. It does this without pulling in external services, trackers, or upsell banners on unrelated screens.

0 is mainly a foundation release for add-ons: it adds documented, generic extension points so other plugins can add columns, filters and detail-screen panels without forking this one. Nothing in the plugin’s own behaviour changes because of them, and no database change is involved. See “Extending the plugin” below.

0 each entry also keeps an Activity Timeline (対応履歴) so you can see what has already been done about an inquiry — when it arrived, who changed its status and to what, when notes were added, and when it was moved to trash, restored, or marked as spam — instead of inferring the handling history from the current status alone.

Key features

  • Automatic capture of every Contact Form 7 submission into a dedicated table ( {prefix}nldcf7_entries )
  • The full submission payload is always stored as JSON, so nothing you asked users to type is lost
  • Mapped columns for name, email, phone, and company are extracted automatically using a configurable candidate list
  • Admin list screen with filtering by keyword, status, form, and date range, plus bulk actions (status change, trash, mark spam)
  • Trash is reversible: trashed entries stay in the database behind a Trash view with per-row and bulk Restore, so a mis-click is undone from the admin instead of from SQL
  • Detail screen with all submitted fields, submission metadata, status management, and internal team notes
  • Per-entry Activity Timeline on the detail screen, recording when the entry was received, every status change (from which status to which), internal-note activity, Trash and Restore, and spam-state changes — each with the acting user and a timestamp, newest first, paginated 50 events at a time
  • For entries captured before 0.2.0, the timeline is reconstructed from what the database actually recorded: the original received timestamp and your existing internal notes. Status, trash, and spam changes made before the upgrade were never stored anywhere, so they are not invented — the timeline says so plainly rather than guessing
  • Your existing notes remain the authoritative record. The timeline links to them; it does not replace, rewrite, or duplicate them
  • CSV export (UTF-8 with BOM, CRLF) with date/status/form/spam filters — streamed in chunks for large datasets
  • Attachment metadata capture (file name, MIME type, size). The files themselves remain with Contact Form 7’s default handling
  • Privacy-friendly defaults: IP capture is OFF by default
  • Opt-in data deletion on uninstall (off by default so accidental deletes don’t nuke your leads)
  • Extensibility via action/filter hooks: nldcf7_after_entry_saved, nldcf7_after_note_added, nldcf7_after_status_changed, nldcf7_after_entry_trashed, nldcf7_after_entry_restored, nldcf7_after_spam_changed, nldcf7_entry_data_before_insert, nldcf7_export_columns, nldcf7_export_row, nldcf7_statuses, nldcf7_event_labels, nldcf7_event_render, nldcf7_required_capability
  • Since 0.3.0, nine further extension points let an add-on place panels on the entry detail screen, add list columns and filter controls, keep its own filter state across list actions, and constrain the entries query — all documented under “Extending the plugin”

Requirements

  • WordPress 6.0 or later
  • PHP 7.4 or later
  • Contact Form 7 plugin installed and active

Does NOT include (outside the scope of the free version)

  • Sending external notifications (Slack, Chatwork, email digests)
  • Assignee / team routing
  • Auto-follow-up reminders
  • Analytics dashboards and reports beyond simple counters
  • Storing actual uploaded file contents (only metadata is captured)

These may be considered for a future Pro release. The free plugin is designed to be fully useful on its own.

Extending the plugin

0 adds nine extension points for add-on developers. They are

generic: this plugin knows nothing about what an add-on stores. All of them are

no-ops when nothing is listening, so a site with no add-on behaves exactly as

0.

nldcf7_entry_detail_main

Action. 0. Fires on the entry detail screen after this

plugin’s own cards in the main column, before the column closes.

do_action( 'nldcf7_entry_detail_main', array $entry )

$entry is the entry row as stored, passed by value. The listener prints its

own markup, including its own card wrapper, and is responsible for escaping it.

Output is not buffered or altered.

nldcf7_entry_detail_sidebar

Action. 0. The same contract, for the sidebar column.

Two

hooks exist so an add-on can place content in both columns of one screen.

do_action( 'nldcf7_entry_detail_sidebar', array $entry )

nldcf7_entry_list_columns

Filter. 0. Adds columns to the entries list.

apply_filters( 'nldcf7_entry_list_columns', array $columns )

Return the column map with your own keys appended; prefix them to avoid

collisions. Core columns cannot be removed, renamed or repurposed — every core

key is restored to its own label after the filter runs, and the checkbox column

is forced back to the front. Labels are plain text and are escaped on output.

nldcf7_entry_list_column_content

Filter. 0. Renders a cell for a column you added.

apply_filters( 'nldcf7_entry_list_column_content', string $html, string $column_name, array $item )

Return HTML for your own column, or the value you were given for anything else.

Escape your own output; the plugin then passes the result through

wp_kses_post() as a second layer, so ordinary post markup survives while

scripts and event handlers do not. A non-string return renders an empty cell.

nldcf7_entry_list_filters

Action. 0. Fires inside the list’s existing GET filter form,

before the Filter button, so a plain select or input submits alongside the

built-in filters.

do_action( 'nldcf7_entry_list_filters', array $current_args )

$current_args is this plugin's own sanitized filter state, for reference. You

own your field names, your values and your escaping. No nonce is involved: the

filter bar only reads.

nldcf7_entry_list_carried_args

Filter. 0. Keeps your own filter state across the All and

Trash views, the row actions, and the redirect after a row or bulk action.

apply_filters( 'nldcf7_entry_list_carried_args', array $args, array $core )

Add your own already-sanitized scalar values. The plugin re-checks the result

afterwards: reserved keys ( page, paged, action, action2, entry_id,

_wpnonce, _wp_http_referer, view, event_page, status_view ) are

stripped, keys are normalised, non-scalars are dropped, and both value length

and argument count are capped. Core values always win. Do not attempt to

forward the whole query string.

nldcf7_entry_query_args

Filter. 0. Adjusts the entries query using arguments the

repository already understands, without writing SQL.

apply_filters( 'nldcf7_entry_query_args', array $args )

The most useful is ids, an array of entry IDs to restrict the query to.

$args[‘context’] says who is asking: list for the entries screen, export

for CSV, default otherwise. Check it — both callers share the same

repository, so an unconditional constraint would also change what CSV exports.

nldcf7_entry_query_clauses

Filter. 0. Constrains the entries query using a table of your

own, resolved by the database rather than by loading matching IDs into PHP.

apply_filters( 'nldcf7_entry_query_clauses', array $parts, array $args )

$parts has four keys:

  • join — a JOIN clause string.
  • where — an array of condition strings, each using %s or %d placeholders.
  • prepare_args — the values for those placeholders, in order.
  • distinct — boolean, default false.

Values must go in prepare_args, never inside the condition strings; the plugin

passes them to $wpdb->prepare(). A single pre-built SQL string is not

accepted. If the placeholder count and the value count disagree, the whole

contribution is discarded. Table and column identifiers inside join are your

responsibility. Set distinct when your JOIN can match a row more than once: it

is applied to the row query and the count together, so the list total and

pagination stay correct. $args['context'] applies here too.

nldcf7_entry_list_items_prepared

Action. 0. Fires once per list page after the rows are known

and before any cell is rendered.

do_action( 'nldcf7_entry_list_items_prepared', array $items )

$items is the current page's rows only -- never the whole result set. Use it

to load everything your columns need in one query and keep it in a

request-local cache, instead of querying once per cell. It is read-only, has no

return value, and fires with an empty array when the page has no rows. It

belongs to the entries screen only and never fires during CSV export.

WordPress.org metadata

Plugin tags

Topics listed for this plugin in the WordPress.org directory.

  • contact form 7
  • lead management
  • cf7
  • inquiries
  • leads
Compatibility & maintenance

Compatibility & maintenance

Tested with WP 7.1

Marked as tested with the current WordPress 7.1 release.

Current WordPress releaseWordPress 7.1
WordPress.org Tested up to7.1
Minimum requirementsWordPress 6.0 · PHP 7.4
Update activity26 Oct 20269d ago

“Tested up to” is directory metadata supplied by the plugin author. WP PlugIndex does not turn an older declaration into a claim that the plugin is incompatible.

Changes recorded by WP PlugIndex

Recent tracked changes

Version0.3.20.4.0
Version0.3.10.3.2
WordPress compatibility7.17.1.3
Version0.3.00.3.1
Tracking & source

WP PlugIndex tracks public WordPress.org directory metadata and records selected version, compatibility and availability changes as they are detected.

Plugin watchlist

Watch this plugin

Sign in to your WP PlugIndex account or create a free account. Free accounts can watch up to 5 plugins and see what changed.

Watch limit

Watchlist limit reached

You have reached your current active watch limit.