Docs & Support

Learn about all the Formidable features and get support from our amazing customer success team.

Entries & ReportsReports, Graphs, and Statistics
Show Field Totals and Form Statistics

Show Field Totals and Form Statistics

— Premium Feature —

Use this shortcode to display field totals and form statistics in a page, post, View, or anywhere else shortcodes are accepted.

Usage

Insert the following shortcode on a page, post, View, or in any field in your form.

[frm-stats id=x type=count]

Replace x with the ID or key of the field you would like to display statistics for Replace count with the type of statistics to display (all the different types are listed below)

Formidable Forms makes advanced site building simple. Launch forms, directories, dashboards, and custom WordPress apps faster than ever before.

Required Parameters

  • id - ID or key of the field you would like to display statistics for
  • type - Specify the type of statistic you would like returned. If not specified, this defaults to total.
    • total: Adds up all the numeric values
    • count: Counts the number of entries
    • average or mean: Displays the average of numeric values
    • median: Displays the median of numeric values
    • star: Displays the average value in the format of a star rating graphic
    • maximum: Gets the maximum value from a set of values
    • minimum: Gets the minimum value from a set of values
    • unique: Counts the number of unique entries
    • deviation: Displays the standard deviation of numeric values

Optional Parameters

  • user_id

    Include only entries from a specific user in the form statistic. This must be an integer or 'current'. To get a user ID integer, go into Users, select a user, and the user ID number will be in the address bar. Example: [frm-stats id=x type=count user_id=current]

  • entry

    Get a total for a specific entry or entries. You may use entry IDs or keys. Example: [frm-stats id=x type=star entry="250,252,255"]. In a View you can use [frm-stats id=x type=star entry="[id]"]

  • parent_id

    You can get stats about the Repeaters of a particular parent entry using the parent_id param. Set parent_id to the id or key of the parent entry, and use a field in the Repeater for the stats. The parent_id param is especially useful in a View of the parent, where you can set parent_id to [id].

    [frm-stats id="x" type="total" parent_id="120"]

    In a View:

    [frm-stats id="x" type="total" parent_id="[id]"]
  • limit

    Set a maximum number of entries to use for this stat. Example: [frm-stats id=x type=count limit=5]

  • thousands_sep

    Set the thousands separator for the displayed total. Example: [frm-stats id=x type=count thousands_sep=","]

  • decimal

    Determine the maximum number of decimal places to show. This option doesn't add trailing zeros. Example: [frm-stats id=x type=total decimal=2]

  • dec_point

    Determine which character should be used as the decimal point in the displayed number. By default, this will be a period. Example: [frm-stats id=x type=total dec_point=","]

  • drafts

    By default, the frm-stats shortcode does not count draft entries. You can choose to include only drafts, or both drafts and entries. This shortcode will count only drafts in the statistic:

    [frm-stats id=x drafts=1]

    This shortcode will count both drafts and completed entries in the statistic:

    [frm-stats id=x drafts=both]
  • created_at_greater_than

    Only include entries created after a specific or dynamic date. For example, you may total entries created in the last month with created_at_greater_than="-1 month" or use a specific date like created_at_greater_than="2016-07-31". When using a specific date, it must be in the Y-m-d format.

    [frm-stats id="x" type="total" created_at_greater_than="Y-m-d"]
  • created_at_less_than

    Only include entries created before a specific or dynamic date. For example, you may total entries created before today with created_at_less_than="-1 day" or use a specific date like created_at_less_than="2016-05-31". When using a specific date, it must be in the Y-m-d format.

    [frm-stats id="x" type="total" created_at_less_than="-1 month"]
  • filter by a field

    Filter your form statistic by another field's value. Review the filtering options below.

Field filters

Only include entries where a field in the same form is equal to, not equal to, greater than (or equal to), less than (or equal to), or contains a specific value.

Note: you can use multiple field filters in the same shortcode to get more refined statistics. However, you can't use the exact same filter twice in the same stat. So you could have 50_greater_than=10 and 50_less_than=20 in the same stat, but not 50="silver" and 50="gold".

If a field has separate values, the field filter will use the saved value.

  • Equals

    Only include entries where a field is equal to a specific value. For example, you may get a total for field x when field 25 equals "Yes":

    [frm-stats id=x type=total 25="Yes"]

    Replace 25 with the ID of any field in the form. Replace "Yes" with any value.

  • Not equal

    Only include entries where a field is NOT equal to a specific value.

    [frm-stats id=x type=total 25_not_equal="Yes"]

    Replace 25 with the ID of any field in the form. Replace "Yes" with any value.

  • Greater than

    Only include entries where a field is greater than a specific value. This works well with numbers:

    [frm-stats id=x type=total 25_greater_than="10"]

    and also with dates:

    [frm-stats id=x type=total 25_greater_than="2015-03-01"]

    You may also use a dynamic date string:

    [frm-stats id=x type=total 25_greater_than="-1 week"]

    Replace 25 with the ID of a field in the form.

  • Greater than or equal to

    Only include entries where a field is greater than or equal to a specific value. This works well with numbers:

    [frm-stats id=x type=total 25_greater_than_or_equal_to="10"]

    and also with dates:

    [frm-stats id=x type=total 25_greater_than_or_equal_to="2015-03-01"]

    You may also use a dynamic date string:

    [frm-stats id=x type=total 25_greater_than_or_equal_to="-1 week"]

    Replace 25 with the ID of a field in the form.

  • Less than

    Only include entries where a field is less than a specific value. This works well with numbers:

    [frm-stats id=x type=total 25_less_than="10"]

    and also with dates:

    [frm-stats id=x type=total 25_less_than="2015-03-01"]

    You may also use a dynamic date string:

    [frm-stats id=x type=total 25_less_than="NOW"]

    Replace 25 with the ID of a field in the form.

  • Less than or equal to

    Only include entries where a field is less than or equal to a specific value. This works well with numbers:

    [frm-stats id=x type=total 25_less_than_or_equal_to="10"]

    and also with dates:

    [frm-stats id=x type=total 25_less_than_or_equal_to="2015-03-01"]

    You may also use a dynamic date string:

    [frm-stats id=x type=total 25_less_than_or_equal_to="NOW"]

    Replace 25 with the ID of a field in the form.

  • Contains

    Only include entries where a field contains a substring or value.

    [frm-stats id=x type=total 25_contains="Activity"]

    Replace 25 with the ID of any field in the form. Replace "Activity" with any value.

  • Does not contain

    Total entries where a field does NOT contain a substring or value.

    [frm-stats id=x type=total 25_does_not_contain="Activity"]

    Replace 25 with the ID of any field in the form. Replace "Activity" with any value.

  • Dynamic values

    To filter stats based on a parameter, use [get param="param_name"] as a dynamic value in your field filter.

    [frm-stats id=x type=total 25_greater_than="[get param=param_name]"]

    Replace 25 with the ID of any field in the form. Replace param_name with your parameter name.

Conditional stats

Use the frm-condition shortcode to conditionally show something based on the value.

Limitations

Currently, stats can only be filtered by fields in the same form. This means that stats for Repeaters can't be filtered by fields in their parent entries. Similarly, stats for parent entries can't be filtered by fields in their Repeaters.

Examples

Count entries for a specific value

If you want to count how often a specific value is submitted in a form, you can add a filter to the [frm-stats] shortcode. A common use for this is when you have a course registration form and want to count the number of students enrolled in each course.

  1. Create a new form called Add a Course Form. This form will hold all the course name/description data to be retrieved in the lookup field.
  2. Add a text field called Course name. Set this field to unique. Add a paragraph field called Course description. Stats - Add Course Form
  3. Import a CSV with all of the course name/description data into the Add a Course Form and make sure that the CSV headings match the fields. You can manually create entries if you don't have a CSV to import.
  4. Create a second form called the Registration Form. This will be the form the students will interact with and use to sign up for a course. You can add any fields that you want.
  5. Add a Lookup dropdown or radio field for the Course Name. Set it up to Get options from: Add a Course Form → Course Name field.Stats - Lookup Course Name
  6. Create a new View called Course List View. Select either a Grid or Table View as the View type.
  7. In the Use Entries from Form dropdown, select Add a Course Form as your datasource. Stats - Use Entries Datasource
  8. In the View, create three columns: Course Name, Course Description, and Number of Students. Insert the corresponding field IDs for each column.
  9. Under the Number of Students column, create a stat to count the number of students who signed up for each course.
    [frm-stats id=378 type=count 378="[376]"]

    Stats - View Content Shortcode

    • Replace 378 with the ID/key of the Course Name lookup field from the Registration Form.
    • Replace 376 with the ID/key of the Course Name field from the Add a Course Form.
  10. That's it! When you preview the Course List View or publish it, it will count the number of students who signed up for each course.Stats - Count students per course

PHP Alternative

echo FrmProStatisticsController::stats_shortcode(array('id' => x, 'type' => 'count', 'user_id' => 'current'));

All of the parameters listed above can be used in this function as well.

Total entry count across all forms

This shortcode will get the total entry count across all forms for the current user. Add this function to your theme functions.php or to a new plugin, and add the shortcode [entry-count] in your page.

add_shortcode('entry-count','my_entry_count');
function my_entry_count($atts){
    global $user_ID;
    $ids = FrmDb::get_col( 'frm_items', array('user_id' => $user_ID));
    return count($ids);
}

Combined total for two fields

This creates a new shortcode [fields-stats] for use on your page. Your shortcode will look like this:

[fields-stats ids="9208,9235" type=count]

Replace 9208 and 9235 with the IDs of the fields you want to total. Note: You need to include the type parameter in the shortcode to display the total.

add_shortcode('fields-stats','my_fields_stats');
function my_fields_stats($atts){
    $defaults = array(
      'ids' => false,
    );
    $atts = array_merge($defaults, $atts);
    $ids = explode( ',', $atts['ids'] );
    unset( $atts['ids'] );

    $total = 0;
    foreach ( $ids as $id ) {
      $atts['id'] = $id;
      $total += FrmProStatisticsController::stats_shortcode( $atts );
    }
    return $total;
}

Subtract one simple stat from another

This creates a new shortcode that allows you to subtract one stat from the other. The stats need to be the same type (e.g. total or count) and not have any filters or use any other parameters that would be specific to one stat but not the other. Usage: [subtract-fields total=358 removed=359 type=total]. Replace 358 with the id of the field that holds the initial total and 359 with the id of the field that holds the amount being subtracted from the total.

add_shortcode('subtract-fields','frm_subtract_fields');
function frm_subtract_fields ($atts){
    $defaults = array(
        'total' => false,
        'removed'=> false,
    );
    $atts = array_merge($defaults, $atts);
                       
    $total_id = $atts['total'];
    unset ($atts['total']);
    $removed_id = $atts['removed'];;
    unset ($atts['removed']);
 
    $atts['id'] = $total_id;;
    $total = FrmProStatisticsController::stats_shortcode( $atts );
    $atts['id'] = $removed_id;
    $removed = FrmProStatisticsController::stats_shortcode( $atts );
 
    return $total - $removed;
}

Percentage of a specific field value

After inserting this function in a new plugin or in your theme functions.php, add the shortcode [frm-percent id=x value="Option 1"] on your page.

add_shortcode('frm-percent', 'frm_stats_percent');
function frm_stats_percent($atts){
    $defaults = array(
    'id' => false, 'user_id' => false,
    'value' => false, 'round' => 100, 'limit' => ''
    );
    extract(shortcode_atts($defaults, $atts));
    if (!$id) return;
    $type = 'count';
    $value_count = FrmProStatisticsController::stats_shortcode(compact('id', 'type', 'value', 'limit'));
    $total_count = FrmProStatisticsController::stats_shortcode(compact('id', 'type', 'limit'));
    return round((($value_count / $total_count) * 100), $round);
}

Create a custom shortcode: simple remaining places

Sometimes, it makes sense to create your own customized shortcode to retrieve a specific value you want. In this example, the number of spaces remaining at an event is calculated using the stats shortcode. You can use [remaining] to display this number wherever you like on your site.

add_shortcode( 'remaining', 'ff_simple_remaining_places' );
function ff_simple_remaining_places( $atts ) {
    $places_taken     = FrmProStatisticsController::stats_shortcode( array(
        'id'   => 361,
        'type' => 'count'
    ) );//change 361 to the id of the field you want to count
    $remaining_places = 15 - $places_taken;//change 15 to the total number of spaces at the event
 
    return $remaining_places;
}

Replace 361 with the id of the field you want to count. Replace 15 with the total spaces for the event. Note: if you like, you can replace "count" with "total" if more than one person can sign up for the event on one form.

Was this article helpful? *

This article may contain affiliate links. Once in a while, we earn commissions from those links. But we only recommend products we like, with or without commissions.

In this article

    We have a small, but amazing team of dedicated people who are committed to helping you achieve your goals and project requirements.


    Copyright © 2025 Strategy11, LLC. Formidable Forms® is a registered trademark Strategy11, LLC.

    Complete your purchase
    Special offer unlocked.
    Get 55% OFF!
    Complete Purchase
    Join 400,000+ using Formidable Forms to create form-focused solutions fast. Get Formidable Forms