{"id":46738,"date":"2025-11-05T08:59:37","date_gmt":"2025-11-05T13:59:37","guid":{"rendered":"https:\/\/docs.gravityforms.com\/?p=46738"},"modified":"2025-11-05T08:59:45","modified_gmt":"2025-11-05T13:59:45","slug":"state-validation","status":"publish","type":"post","link":"https:\/\/docs.gravityforms.com\/state-validation\/","title":{"rendered":"State Validation"},"content":{"rendered":"\n<pre class=\"wp-block-rocketgenius-editor-comments\"><span class=\"dashicons dashicons-admin-comments\"><\/span><b>Dario:<\/b>&nbsp;https:\/\/github.com\/gravityforms\/support-backlog\/issues\/1311<\/pre>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-overview\">Overview<\/h2>\n\n\n\n<p>State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a <strong>state<\/strong> is generated based on the configuration and allowed values of supported fields. <\/p>\n\n\n\n<p>Upon submission, Gravity Forms validates the submitted values against the stored state. If the submitted value does not match the original configuration, the submission is rejected. State validation is bypassed when <strong><a href=\"https:\/\/docs.gravityforms.com\/allow-field-to-be-populated-dynamically\/\" target=\"_blank\" rel=\"noreferrer noopener\">dynamic population<\/a><\/strong> is enabled for a field.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-how-it-works\">How It Works<\/h2>\n\n\n\n<ol start=\"1\" class=\"wp-block-list\">\n<li><strong>Form Display<\/strong><br>Gravity Forms generates a state object containing valid values for supported fields.<\/li>\n\n\n\n<li><strong>Form Submission<\/strong><br>During field validation, each submitted value is compared against its stored state to confirm it hasn\u2019t been modified client-side.<\/li>\n\n\n\n<li><strong>Validation Result<\/strong><br>Matching values \u2192 field passes validation.<br>Modified or unexpected values \u2192 field fails validation.<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"h-supported-fields\">Supported Fields<\/h2>\n\n\n\n<p>The following field types support state validation:<\/p>\n\n\n\n<figure class=\"wp-block-table is-style-stripes\"><table><thead><tr><th><strong>Field Group<\/strong><\/th><th><strong>Supported Fields<\/strong><\/th><th><strong>Supported Types<\/strong><\/th><\/tr><\/thead><tbody><tr><td><strong>Standard Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/checkboxes\/\" target=\"_blank\" rel=\"noreferrer noopener\">Checkboxes<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/consent-field\/\" target=\"_blank\" rel=\"noreferrer noopener\">Consent<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/image-choices\/\" target=\"_blank\" rel=\"noreferrer noopener\">Image Choice<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/multiple-choice\/\" target=\"_blank\" rel=\"noreferrer noopener\">Multiple Choice<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/radio-buttons\/\" target=\"_blank\" rel=\"noreferrer noopener\">Radio Buttons<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/drop-down\/\" target=\"_blank\" rel=\"noreferrer noopener\">Drop Down<\/a><\/td><td>\u2013<\/td><\/tr><tr><td><strong>Product Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/product\/\" target=\"_blank\" rel=\"noreferrer noopener\">Product<\/a><\/td><td>Single Product, Drop Down, Radio Buttons, Hidden<\/td><\/tr><tr><td><strong>Product Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/option\/\" target=\"_blank\" rel=\"noreferrer noopener\">Option<\/a><\/td><td>Checkboxes, Drop Down, Radio Buttons<\/td><\/tr><tr><td><strong>Product Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/quantity\/\" target=\"_blank\" rel=\"noreferrer noopener\">Quantity<\/a><\/td><td>Drop Down<\/td><\/tr><tr><td><strong>Product Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/shipping\/\" target=\"_blank\" rel=\"noreferrer noopener\">Shipping<\/a><\/td><td>Drop Down, Radio Buttons<\/td><\/tr><tr><td><strong>Product Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/total\/\" target=\"_blank\" rel=\"noreferrer noopener\">Total<\/a><\/td><td>\u2013<\/td><\/tr><tr><td><strong>Post Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/post-category\/\" target=\"_blank\" rel=\"noreferrer noopener\">Post Category<\/a><\/td><td>Checkboxes, Radio Buttons, Drop Down<\/td><\/tr><tr><td><strong>Post Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/post-custom-field\/\" target=\"_blank\" rel=\"noreferrer noopener\">Post Custom Field<\/a><\/td><td>Checkboxes, Radio Buttons, Drop Down<\/td><\/tr><tr><td><strong>Post Fields<\/strong><\/td><td><a href=\"https:\/\/docs.gravityforms.com\/post-tags\/\" target=\"_blank\" rel=\"noreferrer noopener\">Post Tags<\/a><\/td><td>Checkboxes, Radio Buttons, Drop Down<\/td><\/tr><tr><td><strong>Add-On Fields<\/strong><\/td><td>Any Add-On field extending <a href=\"https:\/\/docs.gravityforms.com\/checkboxes\/\" target=\"_blank\" rel=\"noreferrer noopener\">Checkboxes<\/a>, <a href=\"https:\/\/docs.gravityforms.com\/radio-buttons\/\" target=\"_blank\" rel=\"noreferrer noopener\">Radio Buttons<\/a>, or <a href=\"https:\/\/docs.gravityforms.com\/drop-down\/\" target=\"_blank\" rel=\"noreferrer noopener\">Drop Down<\/a><\/td><td>Same as extended field type<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<pre class=\"wp-block-rocketgenius-editor-comments\"><span class=\"dashicons dashicons-admin-comments\"><\/span><b>Dario:<\/b>&nbsp;<br><br>Since Gravity Forms 3.0<br>Additional fields supporting state validation include:<br><br><strong>Field<\/strong><br><strong>Supported Inputs<\/strong><br><a href=\"https:\/\/docs.gravityforms.com\/address\/\">Address<\/a><br>State, Country<br><a href=\"https:\/\/docs.gravityforms.com\/name\/\">Name<\/a><br>Prefix<br><a href=\"https:\/\/docs.gravityforms.com\/hidden-field\/\">Hidden<\/a><br>\u2014<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.<\/p>\n","protected":false},"author":52,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"_autodraft_ids":[],"jetpack_post_was_ever_published":false,"_sb_is_suggestion_mode":false,"_sb_show_suggestion_boards":false,"_sb_show_comment_boards":false,"_sb_suggestion_history":"","_sb_update_block_changes":"","_is_real_time_mode":false,"_realtime_collaborators":"","footnotes":"","cf_checklist_status":["Alt Text for All Images","Content Word Count","Internal Links","Category Assigned","Tags Assigned"]},"categories":[257],"tags":[18785,19119,19496,19497],"class_list":["post-46738","post","type-post","status-publish","format-standard","hentry","category-security","tag-spam","tag-validation","tag-state","tag-security","wpautop"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.4) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>State Validation - Gravity Forms Documentation<\/title>\n<meta name=\"description\" content=\"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/docs.gravityforms.com\/state-validation\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"State Validation\" \/>\n<meta property=\"og:description\" content=\"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/docs.gravityforms.com\/state-validation\/\" \/>\n<meta property=\"og:site_name\" content=\"Gravity Forms Documentation\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-05T13:59:37+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-11-05T13:59:45+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/docs.gravityforms.com\/wp-content\/uploads\/2023\/08\/gf-docs-default-v3.png\" \/>\n\t<meta property=\"og:image:width\" content=\"544\" \/>\n\t<meta property=\"og:image:height\" content=\"288\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Dario\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@gravityforms\" \/>\n<meta name=\"twitter:site\" content=\"@gravityforms\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Dario\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/\"},\"author\":{\"name\":\"Dario\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#\\\/schema\\\/person\\\/acf2ff624683e2d7264ba969921fd50e\"},\"headline\":\"State Validation\",\"datePublished\":\"2025-11-05T13:59:37+00:00\",\"dateModified\":\"2025-11-05T13:59:45+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/\"},\"wordCount\":233,\"publisher\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#organization\"},\"keywords\":[\"spam\",\"validation\",\"state\",\"security\"],\"articleSection\":[\"Privacy, Security and Compliance\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/\",\"url\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/\",\"name\":\"State Validation - Gravity Forms Documentation\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#website\"},\"datePublished\":\"2025-11-05T13:59:37+00:00\",\"dateModified\":\"2025-11-05T13:59:45+00:00\",\"description\":\"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/state-validation\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/docs.gravityforms.com\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"State Validation\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#website\",\"url\":\"https:\\\/\\\/docs.gravityforms.com\\\/\",\"name\":\"Gravity Forms Documentation\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/docs.gravityforms.com\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#organization\",\"name\":\"Gravity Forms\",\"url\":\"https:\\\/\\\/docs.gravityforms.com\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/docs.gravityforms.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/gravity-forms-2020-logo-stacked.png\",\"contentUrl\":\"https:\\\/\\\/docs.gravityforms.com\\\/wp-content\\\/uploads\\\/2020\\\/01\\\/gravity-forms-2020-logo-stacked.png\",\"width\":392,\"height\":515,\"caption\":\"Gravity Forms\"},\"image\":{\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/gravityforms\",\"http:\\\/\\\/@gravityforms.com\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/docs.gravityforms.com\\\/#\\\/schema\\\/person\\\/acf2ff624683e2d7264ba969921fd50e\",\"name\":\"Dario\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g\",\"caption\":\"Dario\"},\"url\":\"https:\\\/\\\/docs.gravityforms.com\\\/author\\\/darion\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"State Validation - Gravity Forms Documentation","description":"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/docs.gravityforms.com\/state-validation\/","og_locale":"en_US","og_type":"article","og_title":"State Validation","og_description":"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.","og_url":"https:\/\/docs.gravityforms.com\/state-validation\/","og_site_name":"Gravity Forms Documentation","article_published_time":"2025-11-05T13:59:37+00:00","article_modified_time":"2025-11-05T13:59:45+00:00","og_image":[{"width":544,"height":288,"url":"https:\/\/docs.gravityforms.com\/wp-content\/uploads\/2023\/08\/gf-docs-default-v3.png","type":"image\/png"}],"author":"Dario","twitter_card":"summary_large_image","twitter_creator":"@gravityforms","twitter_site":"@gravityforms","twitter_misc":{"Written by":"Dario","Est. reading time":"2 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/docs.gravityforms.com\/state-validation\/#article","isPartOf":{"@id":"https:\/\/docs.gravityforms.com\/state-validation\/"},"author":{"name":"Dario","@id":"https:\/\/docs.gravityforms.com\/#\/schema\/person\/acf2ff624683e2d7264ba969921fd50e"},"headline":"State Validation","datePublished":"2025-11-05T13:59:37+00:00","dateModified":"2025-11-05T13:59:45+00:00","mainEntityOfPage":{"@id":"https:\/\/docs.gravityforms.com\/state-validation\/"},"wordCount":233,"publisher":{"@id":"https:\/\/docs.gravityforms.com\/#organization"},"keywords":["spam","validation","state","security"],"articleSection":["Privacy, Security and Compliance"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/docs.gravityforms.com\/state-validation\/","url":"https:\/\/docs.gravityforms.com\/state-validation\/","name":"State Validation - Gravity Forms Documentation","isPartOf":{"@id":"https:\/\/docs.gravityforms.com\/#website"},"datePublished":"2025-11-05T13:59:37+00:00","dateModified":"2025-11-05T13:59:45+00:00","description":"State validation enhances form security by ensuring submitted field values have not been altered client-side. When a form is displayed, a state is generated based on the configuration and allowed values of supported fields.","breadcrumb":{"@id":"https:\/\/docs.gravityforms.com\/state-validation\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/docs.gravityforms.com\/state-validation\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/docs.gravityforms.com\/state-validation\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/docs.gravityforms.com\/"},{"@type":"ListItem","position":2,"name":"State Validation"}]},{"@type":"WebSite","@id":"https:\/\/docs.gravityforms.com\/#website","url":"https:\/\/docs.gravityforms.com\/","name":"Gravity Forms Documentation","description":"","publisher":{"@id":"https:\/\/docs.gravityforms.com\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/docs.gravityforms.com\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/docs.gravityforms.com\/#organization","name":"Gravity Forms","url":"https:\/\/docs.gravityforms.com\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/docs.gravityforms.com\/#\/schema\/logo\/image\/","url":"https:\/\/docs.gravityforms.com\/wp-content\/uploads\/2020\/01\/gravity-forms-2020-logo-stacked.png","contentUrl":"https:\/\/docs.gravityforms.com\/wp-content\/uploads\/2020\/01\/gravity-forms-2020-logo-stacked.png","width":392,"height":515,"caption":"Gravity Forms"},"image":{"@id":"https:\/\/docs.gravityforms.com\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/x.com\/gravityforms","http:\/\/@gravityforms.com"]},{"@type":"Person","@id":"https:\/\/docs.gravityforms.com\/#\/schema\/person\/acf2ff624683e2d7264ba969921fd50e","name":"Dario","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/b04dae864801947724ed88af0a96d38fc6068202143a3524df343d2858de9023?s=96&d=mm&r=g","caption":"Dario"},"url":"https:\/\/docs.gravityforms.com\/author\/darion\/"}]}},"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/pdGaEa-c9Q","_links":{"self":[{"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/posts\/46738","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/users\/52"}],"replies":[{"embeddable":true,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/comments?post=46738"}],"version-history":[{"count":10,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/posts\/46738\/revisions"}],"predecessor-version":[{"id":46782,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/posts\/46738\/revisions\/46782"}],"wp:attachment":[{"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/media?parent=46738"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/categories?post=46738"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/docs.gravityforms.com\/wp-json\/wp\/v2\/tags?post=46738"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}