{"id":136172,"date":"2025-05-07T14:36:46","date_gmt":"2025-05-07T19:36:46","guid":{"rendered":"https:\/\/wpengine.com\/?post_type=resource&#038;p=136172"},"modified":"2025-05-07T14:36:52","modified_gmt":"2025-05-07T19:36:52","slug":"how-to-create-a-form-using-wordpress","status":"publish","type":"resource","link":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/","title":{"rendered":"How to Create a Form in WordPress"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Forms are the unsung heroes of user interaction on the web. Whether you\u2019re collecting feedback, generating leads, or allowing users to submit content, knowing how to create forms in WordPress will help bridge the gap between your audience and your website\u2019s goals. From a simple \u201cContact Us\u201d page to a multi-step survey, the right form can transform passive visitors into engaged participants.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Creating forms in WordPress doesn\u2019t have to mean settling for a one-size-fits-all solution. Thanks to WordPress\u2019s flexibility, you can create anything from a basic email capture to a sophisticated front end submission system, with no coding expertise required (unless you want to dive into the deep end).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">In this guide, we\u2019ll walk through practical methods to build forms in WordPress:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Plugins for drag-and-drop simplicity<\/li>\n\n\n\n<li>Advanced Custom Fields (ACF)<\/li>\n\n\n\n<li>Custom code for developers craving full control<\/li>\n<\/ul>\n\n\n\n\n\n<h2 class=\"wp-block-heading\">Common use cases for WordPress forms<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Forms serve as versatile tools for both site owners and visitors. Identifying your goal will help you choose the right method and avoid overcomplicating your setup. Below are some of the most common scenarios.&nbsp;<\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Contact forms\n<ul class=\"wp-block-list\">\n<li>The bread and butter of business websites. Let users ask questions, request quotes, or report issues without sharing your email publicly.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Surveys and feedback\n<ul class=\"wp-block-list\">\n<li>Gather opinions, conduct market research, or improve customer experience with multi-field forms (ratings, dropdowns, checkboxes).<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Registrations and sign-ups\n<ul class=\"wp-block-list\">\n<li>Event tickets, newsletter subscriptions, or membership sites. Integrate with tools like WooCommerce or LearnDash for paid access.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Lead generation\n<ul class=\"wp-block-list\">\n<li>Capture potential clients with landing page forms (e.g., &#8220;Download Our Free Guide&#8221;). Connect to email marketing platforms like Mailchimp or HubSpot.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>User-generated content\n<ul class=\"wp-block-list\">\n<li>Allow visitors to submit listings (e.g., job boards, directories), testimonials, or blog posts.<\/li>\n<\/ul>\n<\/li>\n\n\n\n<li>Payment and donations\n<ul class=\"wp-block-list\">\n<li>Sell products, collect donations, or accept bookings with payment gateway integrations.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading\">3 ways to create forms in WordPress<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In this section, we\u2019ll look at how to build forms using a dedicated plugin, how to create forms in WordPress using ACF, and how to build them from the ground up with HTML, CSS, and PHP.&nbsp;<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Form plugins<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Plugins are your best bet if you\u2019re looking for the simplest way to create forms. They eliminate the need for coding and offer ready-to-use solutions packed with features like spam protection, email integrations, and even payment processing. We\u2019ve assembled a few of the most popular form plugins below, but this is by no means an <a href=\"https:\/\/wordpress.org\/plugins\/search\/forms\/\">exhaustive list<\/a>.\u00a0<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.org\/plugins\/wpforms-lite\/\">WPForms<\/a> (free and premium versions) is a popular choice, with over 6 million active installations. Its drag-and-drop interface and 1,500+ templates simplify the process of building contact forms, surveys, and payment forms in minutes. For example, a small business owner could use WPForms to create a contact form with a file upload option, while an online store might leverage its Stripe integration for checkout forms.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXczYU4qNL4ZX9zIMPX3nCz1GyLLN6Q4I-27bPP8KCgUklCYnTB1_cl0oxNXjS84w-VaJSPgf6VVJrm7cgUE3VvBSYDhrm7Dy4jbcwGE0eiTOUa930TLgHLmSQYPrBJxHPLUZZtCsQ?key=68JagQED7zUMjcZiZKS1U0gu\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><a href=\"https:\/\/wordpress.org\/plugins\/contact-form-7\/\">Contact Form 7<\/a> (free) is a great choice for those who prefer lightweight, no-frills solutions. While it does require some manual setup using HTML shortcodes, it\u2019s highly customizable. Developers often favor it for basic contact pages where extra features aren\u2019t needed.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXdyO3RNYEStvIKy93_N1kwrHcQwAmPc5Q0CUwvCrx0Ecfh0nAOop4p7ZSohpoeOoTB6RMOLcLa7HfToyKlak6z5n0wn-AWHBOdCVNPeF9wfezsI1lRZfsfUuZthnrDDsxyywGFZig?key=68JagQED7zUMjcZiZKS1U0gu\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">For advanced needs, <a href=\"https:\/\/www.gravityforms.com\/\">Gravity Forms<\/a> (premium) stands out. It supports conditional logic, multi-page forms, and CRM integrations, making it a fit for complex projects. A nonprofit, for instance, could use Gravity Forms to create a donation form with recurring payments or connect it to Zapier for automated workflows.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXfKxt4_O2X4kSCh73OSyAmmwA22Ldc5iZ4VmR1Mmx3p_GCn_HMqboV2rSb_7BgTjcwoUoEX6lcElkef-idkgrFlbBvWAvIOyDA-XcfTUAvdrZjZkhIa5AWucY0C8vzAK_dmzsDNew?key=68JagQED7zUMjcZiZKS1U0gu\" alt=\"\" \/><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><br><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wordpress.org\/plugins\/formidable\/\">Formidable Forms<\/a> (free and premium) excels at data-driven forms. If you need to build calculators, directories, or detailed surveys, its front end display tools and integrations with payment services simplify the process.<br><\/p>\n\n\n\n<figure class=\"wp-block-image\"><img decoding=\"async\" src=\"https:\/\/lh7-rt.googleusercontent.com\/docsz\/AD_4nXe72Boz1rpFft7-jyACSZgdjoRbZpOdqTwMBKx81HlfbdqLepPL8Wu3oqE01pu8fOF_QWhYqHRfciGhGJZgLB_eWp2pTMuyysAw43T9pD2mbo9PA615V2VmQd-Q37fO40drtz4gKg?key=68JagQED7zUMjcZiZKS1U0gu\" alt=\"\" \/><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\">Building forms with Advanced Custom Fields (ACF)\u00a0<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Advanced Custom Fields (ACF) is a powerful WordPress plugin widely used to extend content management by adding custom fields to posts, pages, or user profiles. While ACF is often employed for structured editing, it can also be used to create forms in WordPress, making it a valuable tool for developers building custom submission workflows. This method is particularly useful for scenarios like user-generated content (e.g., directory listings, event submissions) or front end profile editing, where form data directly integrates with WordPress\u2019s database structure.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">ACF shines when your form needs to interact seamlessly with custom post types, taxonomies, or user meta data. For example, it allows users to submit blog drafts, update their profiles, or contribute listings to a directory\u2014all without accessing the admin dashboard. Its built-in validation ensures fields like emails or required inputs are handled properly, and forms naturally inherit your theme\u2019s styling for consistent design.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If you have experience using ACF, you can use their tutorial on how to <a href=\"https:\/\/www.advancedcustomfields.com\/resources\/create-a-front-end-form\/\">create a front end form<\/a> to get started. For those new to ACF, check out our free ebook, <a href=\"https:\/\/wpengine.com\/resources\/getting-started-with-acf\/\">Getting Started With ACF<\/a>.<\/p>\n\n\n\n<figure class=\"wp-block-embed is-type-video is-provider-youtube wp-block-embed-youtube wp-embed-aspect-16-9 wp-has-aspect-ratio\"><div class=\"wp-block-embed__wrapper\">\n<iframe loading=\"lazy\" title=\"ACF Chat Friday \u2013 August 2, 2024: ACF Forms\" width=\"1160\" height=\"653\" src=\"https:\/\/www.youtube.com\/embed\/XT6xnZ7NHGY?feature=oembed\" frameborder=\"0\" allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\" referrerpolicy=\"strict-origin-when-cross-origin\" allowfullscreen><\/iframe>\n<\/div><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Creating custom-coded forms in WordPress&nbsp;<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">For developers comfortable with PHP and HTML, building a custom contact form in WordPress offers complete control over functionality and design. This method avoids plugin dependencies and minimizes bloat, but requires attention to security and validation. Below is a step-by-step guide to creating a simple contact form.&nbsp;&nbsp;<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 1: Create the form\u2019s HTML<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">This HTML creates a user-facing contact form. Submissions will be sent to WordPress\u2019s secure form handler. Add this to a custom page template (e.g., `page-contact.php`), a theme file, or use the shortcode provided in Step 4.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>xml\n&lt;form id=\"custom-contact-form\" method=\"POST\" action=\"&lt;?php echo esc_url(admin_url('admin-post.php')); ?&gt;\"&gt;\n    &lt;input type=\"hidden\" name=\"action\" value=\"custom_contact_form\"&gt;\n    &lt;?php wp_nonce_field('custom_contact_form', 'cf_nonce'); ?&gt;\n\n    &lt;div class=\"form-group\"&gt;\n        &lt;label for=\"name\"&gt;Your Name*&lt;\/label&gt;\n        &lt;input type=\"text\" name=\"cf_name\" id=\"name\" required&gt;\n    &lt;\/div&gt;\n\n    &lt;div class=\"form-group\"&gt;\n        &lt;label for=\"email\"&gt;Your Email*&lt;\/label&gt;\n        &lt;input type=\"email\" name=\"cf_email\" id=\"email\" required&gt;\n    &lt;\/div&gt;\n\n    &lt;div class=\"form-group\"&gt;\n        &lt;label for=\"message\"&gt;Message*&lt;\/label&gt;\n        &lt;textarea name=\"cf_message\" id=\"message\" rows=\"6\" required&gt;&lt;\/textarea&gt;\n    &lt;\/div&gt;\n\n    &lt;!-- Honeypot anti-spam field (hidden) --&gt;\n    &lt;div style=\"position: absolute; left: -9999px;\"&gt;\n        &lt;input type=\"text\" name=\"cf_honeypot\" tabindex=\"-1\"&gt;\n    &lt;\/div&gt;\n\n    &lt;input type=\"submit\" name=\"cf_submit\" value=\"Send Message\"&gt;\n&lt;\/form&gt;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Step 2: Process form submissions<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">The PHP code below handles sanitization, validation, email sending, and error management. This can be added to your theme\u2019s `functions.php`, or included in a <a href=\"https:\/\/wpengine.com\/resources\/how-to-build-your-very-own-wordpress-plugin\/\">custom plugin<\/a>. In general, you should avoid editing `functions.php` directly unless you\u2019re using a child theme. <a href=\"https:\/\/wpengine.com\/resources\/how-to-create-a-wordpress-child-theme\/\">Create a child theme<\/a> first to prevent losing changes during theme updates.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php\n\/\/ Handle form submission\nadd_action('admin_post_custom_contact_form', 'handle_custom_contact_form');\nadd_action('admin_post_nopriv_custom_contact_form', 'handle_custom_contact_form');\n\nfunction handle_custom_contact_form() {\n    \/\/ Verify nonce\n    if (!isset($_POST&#091;'cf_nonce']) || !wp_verify_nonce($_POST&#091;'cf_nonce'], 'custom_contact_form')) {\n        wp_safe_redirect(home_url('\/?form_error=security'));\n        exit;\n    }\n\n    \/\/ Honeypot spam check\n    if (!empty($_POST&#091;'cf_honeypot'])) {\n        wp_safe_redirect(home_url('\/?form_error=spam'));\n        exit;\n    }\n\n    \/\/ Sanitize inputs\n    $name    = sanitize_text_field($_POST&#091;'cf_name'] ?? '');\n    $email   = sanitize_email($_POST&#091;'cf_email'] ?? '');\n    $message = sanitize_textarea_field($_POST&#091;'cf_message'] ?? '');\n\n    \/\/ Validate\n    $errors = &#091;];\n    if (empty($name)) $errors&#091;] = 'name';\n    if (empty($email) || !is_email($email)) $errors&#091;] = 'email';\n    if (empty($message)) $errors&#091;] = 'message';\n\n    if (!empty($errors)) {\n        wp_safe_redirect(home_url('\/?form_errors=' . implode(',', $errors)));\n        exit;\n    }\n\n    \/\/ Send email (secure headers)\n    $to = get_option('admin_email');\n    $subject = 'New message from ' . esc_html($name);\n    $headers = &#091;\n        'Content-Type: text\/html; charset=UTF-8',\n        'From: ' . get_option('blogname') . ' &lt;' . get_option('admin_email') . '&gt;',\n        'Reply-To: ' . esc_html($name) . ' &lt;' . sanitize_email($email) . '&gt;'\n    ];\n\n    $message_body = sprintf(\n        '&lt;p&gt;&lt;strong&gt;Name:&lt;\/strong&gt; %s&lt;br&gt;&lt;strong&gt;Email:&lt;\/strong&gt; %s&lt;br&gt;&lt;strong&gt;Message:&lt;\/strong&gt;&lt;\/p&gt;%s',\n        esc_html($name),\n        sanitize_email($email),\n        wp_kses_post(wpautop($message))\n    );\n\n    wp_mail($to, $subject, $message_body, $headers);\n\n    \/\/ Redirect to success page\n    wp_safe_redirect(home_url('\/thank-you\/'));\n    exit;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 3: Display errors and success<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">There are a few steps we should take to ensure your form handles feedback gracefully while staying secure.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">A nonce (\u201cnumber used once\u201d) acts like a temporary security pass. Generated via wp_nonce_field(), it ensures submissions come from <em>your<\/em> form\u2014not a forged request. It\u2019s worth noting that caching the nonce could cause it to expire and block legitimate submissions. If you\u2019re using a caching plugin, making sure to exclude the contact form\u2019s page to prevent this.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Caching provided by your host may already have some rules set up to exclude certain pages from being cached. If you\u2019re hosting with WP Engine, you may need to reach out to support to set up <a href=\"https:\/\/wpengine.com\/support\/cache\/#Custom_Cache_Exclusions\">custom cache exclusions<\/a>.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If caching must stay enabled on your contact page, you can use AJAX to fetch a fresh nonce dynamically via JavaScript on page load:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php\n\/\/ In your form template, fetch a nonce via AJAX\n&lt;script&gt;\ndocument.addEventListener('DOMContentLoaded', function() {\n    fetch('\/wp-admin\/admin-ajax.php?action=generate_nonce')\n        .then(response =&gt; response.text())\n        .then(nonce =&gt; {\n            document.getElementById('nonce-field').value = nonce;\n        });\n});\n&lt;\/script&gt;\n\n\/\/ In functions.php\nadd_action('wp_ajax_generate_nonce', 'generate_nonce_ajax');\nadd_action('wp_ajax_nopriv_generate_nonce', 'generate_nonce_ajax');\nfunction generate_nonce_ajax() {\n    wp_send_json_success(wp_create_nonce('custom_contact_form'));\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Next up: sanitization, where we scrub user inputs clean. Functions like `sanitize_text_field()` or `sanitize_email()` remove harmful code from form data, turning potential security risks into harmless plain text.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, the honeypot is a hidden field added to your form with CSS tricks. Humans won\u2019t see it, but spam bots often blindly fill it out. In your PHP code, a simple check like if (!empty($_POST[&#8216;cf_honeypot&#8217;])) flags these submissions as spam.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">These layers work silently in the background, keeping your form secure while staying invisible to real users.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php\n&lt;?php\nif (isset($_GET&#091;'form_errors'])) {\n    $errors = explode(',', $_GET&#091;'form_errors']);\n    echo '&lt;div class=\"form-error\"&gt;';\n    if (in_array('name', $errors)) echo '&lt;p&gt;Please enter a valid name.&lt;\/p&gt;';\n    if (in_array('email', $errors)) echo '&lt;p&gt;Please enter a valid email.&lt;\/p&gt;';\n    if (in_array('message', $errors)) echo '&lt;p&gt;Message cannot be empty.&lt;\/p&gt;';\n    echo '&lt;\/div&gt;';\n}\n\nif (isset($_GET&#091;'form_error'])) {\n    echo '&lt;div class=\"form-error\"&gt;';\n    if ($_GET&#091;'form_error'] === 'security') echo '&lt;p&gt;Security check failed. Please try again.&lt;\/p&gt;';\n    if ($_GET&#091;'form_error'] === 'spam') echo '&lt;p&gt;Spam detected.&lt;\/p&gt;';\n    echo '&lt;\/div&gt;';\n}\n?&gt;\n<\/code><\/pre>\n\n\n\n<h4 class=\"wp-block-heading\">Step 4: Shortcode integration<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Allow embedding the form in posts\/pages using [custom_contact_form]. Add to your child theme\u2019s functions.php:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>php\nfunction custom_contact_form_shortcode() {\n    ob_start();\n    ?&gt;\n    &lt;form id=\"custom-contact-form\" method=\"POST\" action=\"&lt;?php echo esc_url(admin_url('admin-post.php')); ?&gt;\"&gt;\n        &lt;input type=\"hidden\" name=\"action\" value=\"custom_contact_form\"&gt;\n        &lt;?php wp_nonce_field('custom_contact_form', 'cf_nonce'); ?&gt;\n        \n        &lt;div class=\"form-group\"&gt;\n            &lt;label for=\"name\"&gt;Your Name*&lt;\/label&gt;\n            &lt;input type=\"text\" name=\"cf_name\" id=\"name\" required&gt;\n        &lt;\/div&gt;\n\n        &lt;!-- Rest of your form HTML from Step 1 --&gt;\n        \n    &lt;\/form&gt;\n    &lt;?php\n    return ob_get_clean();\n}\nadd_shortcode('custom_contact_form', 'custom_contact_form_shortcode');\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Step 5: CSS styling<\/h4>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, we add some CSS to make the form more visually appealing.&nbsp;<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>css\n#custom-contact-form {\n    max-width: 600px;\n    margin: 2rem auto;\n    padding: 2rem;\n    background: #fff;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n}\n\n.form-group {\n    margin-bottom: 1.5rem;\n}\n\n.form-group label {\n    display: block;\n    font-weight: 600;\n    margin-bottom: 0.5rem;\n}\n\n.form-group input,\n.form-group textarea {\n    width: 100%;\n    padding: 0.8rem;\n    border: 1px solid #ddd;\n    border-radius: 4px;\n}\n\n.form-error {\n    background: #ffecec;\n    padding: 1rem;\n    margin-bottom: 1.5rem;\n    border: 1px solid #ffb3b3;\n    border-radius: 4px;\n}\n<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusion<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">In WordPress, creating forms hinges on balancing simplicity, functionality, and security. For most users, plugins provide the fastest, most reliable solution, offering drag-and-drop builders, spam protection, and integrations without requiring coding skills.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For developers or projects demanding deeper integration with WordPress data\u2014such as front end post submissions or user profile edits\u2014 ACF bridges the gap between structured content management and user interaction. Meanwhile, custom-coded forms remain a powerful choice for tailored solutions, though they demand rigorous attention to security and validation.&nbsp;&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">By leveraging the right tools and best practices, you can build forms that not only serve their functional purpose but also enhance engagement, trust, and conversions. Whether you\u2019re crafting a simple contact page or a dynamic submission portal, WordPress\u2019s flexibility ensures you\u2019re equipped to meet any challenge.&nbsp;<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><a href=\"https:\/\/wpengine.com\/\" target=\"_blank\" rel=\"noreferrer noopener\">WP Engine<\/a> is known for fast and reliable hosting services. If you\u2019re struggling to implement forms on your site, we also offer <a href=\"https:\/\/wpengine.com\/wordpress-support\/\" target=\"_blank\" rel=\"noreferrer noopener\">WordPress support<\/a> with our managed hosting plans.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Forms are the unsung heroes of user interaction on the web. Whether you\u2019re collecting feedback, generating leads, or allowing users to submit content, knowing how to create forms in WordPress will help bridge the gap between your audience and your website\u2019s goals. From a simple \u201cContact Us\u201d page to a multi-step survey, the right form<span class=\"tile__ellipses\">&hellip;<\/span><span class=\"tile__ellipses--animated\"><\/span><\/p>\n","protected":false},"author":1,"featured_media":136174,"template":"","resource-topic":[],"resource-role":[896],"resource-type":[916],"class_list":["post-136172","resource","type-resource","status-publish","has-post-thumbnail","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.9 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>How to Create a Form in WordPress | WP Engine\u00ae<\/title>\n<meta name=\"description\" content=\"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.\" \/>\n<meta name=\"robots\" content=\"noindex, follow\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"How to Create a Form in WordPress | WP Engine\u00ae\" \/>\n<meta property=\"og:description\" content=\"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/\" \/>\n<meta property=\"og:site_name\" content=\"WP Engine\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/wpengine\" \/>\n<meta property=\"article:modified_time\" content=\"2025-05-07T19:36:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/10\/How-to-Create-a-Form-Using-WordPress-In-4-Steps-Velocitize.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1100\" \/>\n\t<meta property=\"og:image:height\" content=\"500\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@wpengine\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/\",\"url\":\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/\",\"name\":\"How to Create a Form in WordPress | WP Engine\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/wpengine.com\/case-studies\/#website\"},\"datePublished\":\"2025-05-07T19:36:46+00:00\",\"dateModified\":\"2025-05-07T19:36:52+00:00\",\"description\":\"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.\",\"breadcrumb\":{\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/wpengine.com\/case-studies\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Resources\",\"item\":\"https:\/\/wpengine.com\/case-studies\/resources\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How to Create a Form in WordPress\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#website\",\"url\":\"https:\/\/wpengine.com\/case-studies\/\",\"name\":\"WP Engine\",\"description\":\"Managed Hosting for WordPress\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/wpengine.com\/case-studies\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/f5301455463371a10d1fc290e9ad0085\",\"name\":\"WP Engine\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d8770fe9625ca7c4601f13d9d0ab86565a6dac8cd6a77bfe2ada6d83c6837870?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d8770fe9625ca7c4601f13d9d0ab86565a6dac8cd6a77bfe2ada6d83c6837870?s=96&d=mm&r=g\",\"caption\":\"WP Engine\"},\"sameAs\":[\"https:\/\/wpengine.com\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"How to Create a Form in WordPress | WP Engine\u00ae","description":"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.","robots":{"index":"noindex","follow":"follow"},"og_locale":"en_US","og_type":"article","og_title":"How to Create a Form in WordPress | WP Engine\u00ae","og_description":"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.","og_url":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/","og_site_name":"WP Engine","article_publisher":"https:\/\/www.facebook.com\/wpengine","article_modified_time":"2025-05-07T19:36:52+00:00","og_image":[{"width":1100,"height":500,"url":"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/10\/How-to-Create-a-Form-Using-WordPress-In-4-Steps-Velocitize.jpg","type":"image\/jpeg"}],"twitter_card":"summary_large_image","twitter_site":"@wpengine","twitter_misc":{"Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/","url":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/","name":"How to Create a Form in WordPress | WP Engine\u00ae","isPartOf":{"@id":"https:\/\/wpengine.com\/case-studies\/#website"},"datePublished":"2025-05-07T19:36:46+00:00","dateModified":"2025-05-07T19:36:52+00:00","description":"WordPress forms collect user information from interested customers. Keep reading for a step-by-step guide on how to create a form using WordPress.","breadcrumb":{"@id":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/wpengine.com\/case-studies\/resources\/how-to-create-a-form-using-wordpress\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/wpengine.com\/case-studies\/"},{"@type":"ListItem","position":2,"name":"Resources","item":"https:\/\/wpengine.com\/case-studies\/resources\/"},{"@type":"ListItem","position":3,"name":"How to Create a Form in WordPress"}]},{"@type":"WebSite","@id":"https:\/\/wpengine.com\/case-studies\/#website","url":"https:\/\/wpengine.com\/case-studies\/","name":"WP Engine","description":"Managed Hosting for WordPress","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/wpengine.com\/case-studies\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/f5301455463371a10d1fc290e9ad0085","name":"WP Engine","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/wpengine.com\/case-studies\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d8770fe9625ca7c4601f13d9d0ab86565a6dac8cd6a77bfe2ada6d83c6837870?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d8770fe9625ca7c4601f13d9d0ab86565a6dac8cd6a77bfe2ada6d83c6837870?s=96&d=mm&r=g","caption":"WP Engine"},"sameAs":["https:\/\/wpengine.com"]}]}},"acf":[],"grid_image_url":"https:\/\/wpengine.com\/case-studies\/wp-content\/uploads\/2022\/10\/How-to-Create-a-Form-Using-WordPress-In-4-Steps-Grid.jpg","media-type":{"term_id":916,"name":"Article","slug":"article"},"role":"<strong>Roles:<\/strong> Developer","topic":false,"_links":{"self":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource\/136172","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource"}],"about":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/types\/resource"}],"author":[{"embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/users\/1"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/media\/136174"}],"wp:attachment":[{"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/media?parent=136172"}],"wp:term":[{"taxonomy":"resource-topic","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-topic?post=136172"},{"taxonomy":"resource-role","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-role?post=136172"},{"taxonomy":"resource-type","embeddable":true,"href":"https:\/\/wpengine.com\/case-studies\/wp-json\/wp\/v2\/resource-type?post=136172"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}