This plugin hasn’t been tested with the latest 3 major releases of WordPress. It may no longer be maintained or supported and may have compatibility issues when used with more recent versions of WordPress.

Contact Form 7 Modules


Add Hidden Fields to Contact Form 7

The Contact Form 7 plugin has over 1 million active installations, yet the great plugin still lacks a simple feature: hidden fields. This plugin adds hidden fields to Contact Form 7 once and for all.

Inserting dynamic values

You can also choose to have the value of the hidden field dynamically populated in your form when you are contacted. To do so, choose the “Default value” to be:

  • post_title – Inserts the title of the post/page
  • post_category – The categories of the post or page
  • post_url – The URL of the post or page
  • post_author – The author of the post or page
  • custom_field-[Name] – The value of a post or page’s custom field. If you had a custom field “Foo”, you would use the following as the hidden field value: custom_field-Foo

The following values will be replaced if an user is logged in:

  • user_name: User Login
  • user_id: User ID
  • user_email: User Email Address
  • user_display_name: Display Name (Generally the first and last name of the user)
  • user_url: User Website

And you can also use it for user custom meta data using the format of user-{field}:

  • user-aim: AIM
  • user-jabber: Jabber / Google Talk
  • user-description: User Bio

You can also use a filter: hook into the wpcf7_hidden_field_value filter to modify the value of the hidden field using add_filter(). If you know the ID of the input, you can also use the wpcf7_hidden_field_value_[#ID] filter.

Now, when someone contacts you using your Contact Form 7 contact form, you can have lots more information about their visit – and you’ll see it when you receive the email that tells you you’ve been contacted.

Easily Send All Submitted Fields At Once

Save time setting up your form emails…and never miss a field!

One of the limitations of Contact Form 7 is that you need to manually add each field to generated emails. This means that if you update the form with a new field and forget to add it to your email message, you won’t receive it in your email. No longer..

Using the Send All Fields module, you simply need to add [all-fields] to your message, and you will receive every field submitted. If you use HTML formatting, the formatting even looks nice.

Visit the official Contact Form 7 Modules plugin page for more support & additional information


  • The Hidden fields tag generator
  • The [all-fields] Mail tag


  1. Upload plugin files to your plugins folder, or install using WordPress’ built-in Add New Plugin installer
  2. Activate the plugin
  3. Edit a form in Contact Form 7
  4. Choose “Hidden field” from the Generate Tag dropdown
  5. Follow the instructions on the page


Installation Instructions
  1. Upload plugin files to your plugins folder, or install using WordPress’ built-in Add New Plugin installer
  2. Activate the plugin
  3. Edit a form in Contact Form 7
  4. Choose “Hidden field” from the Generate Tag dropdown
  5. Follow the instructions on the page
How do I turn off formatting the key in the `[all-fields]` output?

Add the following to your theme’s functions.php file:

add_filter('wpcf7_send_all_fields_format_key', '__return_false');
How do I set non-standard user data as hidden field values?

Starting with Version 1.4, you can access user data, including meta data.

You need to set the default value as: user-{meta_key} where {meta_key} is the key of the meta field you want the value of.

To get the values of WordPress default profile fields, for example, you would use:

  • user-aim – AOL
  • user-jabber – Jabber / Google Talk
  • user-description – Biographical description
What is the plugin license?
  • This plugin is released under a GPL license.
How do I send empty values with the `[all-fields]` shortcode?

Add this to your functions.php file: add_filter('wpcf7_send_all_fields_send_empty_fields', '__return_true');

How do I modify the output of the `[all-fields]` shortcode?
  • wpcf7_send_all_fields_format_before – Before the loop of fields (<dl> for HTML output)
    • $value string Previous output
    • $format string Either “html” or “text”
  • wpcf7_send_all_fields_format_item – Change each item output. Passes four arguments:
    • $value string Previous output
    • $k string Field label
    • $v string Value of the field
    • $format string Either “html” or “text”
  • wpcf7_send_all_fields_format_after – After the loop of fields (</dl> for HTML output). Passes two arguments:
    • $value string Previous output
    • $format string Either “html” or “text”


August 22, 2017
Hey there, Lovely plugin this is! Just a small tweak will make it the best, Created this tag – [hidden hidden-122 “user_email”] Which displays in mail with [hidden-122] tag How do i use that [hidden-122] tag as a mail recipient I also tried ([hidden-122]) Help me out here .
October 26, 2016 1 reply
First of all, great idea (and plugin). But two points to improve, imo: 1 – Should be core to contact form 7. 2 – Must install and keep installed two plugins in order to use one. Anyway good job guys, really!
Read all 22 reviews

Contributors & Developers

“Contact Form 7 Modules” is open source software. The following people have contributed to this plugin.


“Contact Form 7 Modules” has been translated into 1 locale. Thank you to the translators for their contributions.

Translate “Contact Form 7 Modules” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.


2.0.1 & 2.0.2 on February 1, 2017

  • Confirmed compatibility with WordPress 4.7.2
  • Updated to work with Contact Form 7 4.6
    • Fixed: [hidden] shortcodes not being replaced in emails
    • Fixed: PHP warning related to deprecated function
  • Fixed: Removed use of deprecated get_currentuserinfo() function
  • Updated translations

2.0 on June 28, 2015

  • Requires Contact Form 7 4.2 or higher
  • Updated to work with latest Contact Form 7
  • Removed Contact Form 7 Newsletter plugin promotion

1.4.2 on March 25, 2014

  • Added: [all-fields] shortcode now skips sending data for empty fields
    • Added wpcf7_send_all_fields_send_empty_fields filter to override the setting. See the FAQ.
  • Added: [all-fields] shortcode output filters (see the FAQ item “How do I modify the output…”)
    • wpcf7_send_all_fields_format_before
    • wpcf7_send_all_fields_format_item
    • wpcf7_send_all_fields_format_after

1.4 & 1.4.1 on March 15, 2014

The below updates apply only to the Hidden Fields module.

  • Added: Support for retrieving other user data by using the field name user_{data you want}. See the FAQ “How do I set non-standard user data as hidden field values?”
  • Added: wpcf7_hidden_field_implode_glue filter. If you want to modify how arrays of data get combined into a string (default is CSV), use this filter.
  • Fixed: $post global no longer needs to be defined for user data to be successfully passed.
  • Fixed: Now supports multiple post custom_field data values, instead of only fetching one
  • Modified: Added callback function to format the hidden field instead of relying on depricated PHP
  • Modified: Improved include path for functions.php file
  • Modified: Added text to support additional localization


  • Hidden Fields: Fixed issue that broke the plugin with WordPress 3.8.


  • Hidden Fields: Fixed PHP notice caused by improper adding of script in administration
  • Hidden Fields: Fixed double inputs that were the exact same (as reported here)


  • Fixed: issue in Hidden Fields where the [hidden-###] shortcode no longer worked and only [post_title] format worked.
    • Added: Hidden fields now support both formats: [hidden-123] and [post_title] as long as they’re in the form itself.
  • Fixed: issue in Send All Fields where the HTML was showing as text.
  • Added wpcf7_send_all_fields_format_key filter to Send All Fields plugin to turn on or off formatting of the key (replacing example-key with Example Key in output). See “How do I turn off formatting the key in the [all-fields] output?” in the FAQ.


  • Fixed: Hidden field now supports new Contact Form 7 format; post fields will work again.
  • Fixed: Send All Fields no longer causes spinning form submission in WordPress 3.5
  • Added: access any of the data in $post object by using the variable name. Example: You want post_modified? Use [hidden hidden-123 "post_modified"]
  • Added: If an user is logged in, you can now use user_name, user_id, user_email, user_display_name replacement values
  • Added/Improved: post_author will now return the author’s Display Name. Use post_author_id for the post author’s ID.
  • Added: Inline instructions on the Hidden field module
  • Improved: In Send All Fields, the name of the field now has dashes replaced with spaces. This will show “your name”, rather than “your-name”. Thanks, @hitolonen


  • Removed _wpnonce field from [all-fields] output
  • Fixed a conflict when using “Send All Fields” module alongside “Hidden Fields” module (as reported here)


  • Added support for checkboxes with Send All Fields ([all-fields])


  • Hidden fields are now displayed inside a hidden <div> instead of Contact Form 7’s default <p>. This makes hidden fields more hidden 🙂
  • Added brand-new module: Send All Fields. Allows you to add a [all-fields] tag to your email message that includes every submitted field in one tag.



  • Added support for using post titles as hidden fields
  • Added support for using custom field values as hidden fields
  • Added wpcf7_hidden_field_value filter to hook into using add_filter()


  • Initial plugin release.