In WordPress we have a lot of options to create contact forms. But I can’t seem to find the best solutions. I even think to create my own contact forms plugin.

My Requirements Are:

Responsive.Not only in form output/front-end. Administration panel need to work in mobile devices. Well, at least usable, I understand that some features might need to be hidden/disabled in small screen devices for usability and UX. But not broken.

Use WordPress UI:Seamless integration with WordPress, native-feel. I’m not a fan of app-like fancy UI. Professional. No excessive branding with cute icon/logo. If possible no cross-selling of add-ons/upgrade (or easy way to disable it).

Simple and easy to use:
User need to be able to use it without the need to learn proper form HTML markup.

Little to no learning curve:
No excessive features, I just need a contact form not a shopping cart, not a user registration form. If the code base is extendable and able to do all this via add-on that’s a plus. But it’s not necessary and not needed in the “core” plugins.

Theme and Template Friendly:
Can be added in a page template, any template file, no need to be in the “loop”. Simple shortcode to display the form should work with do_shortcode() function.

So, basically, something basic that I can use on my clients site and that’s it.

Of course anti spam features (maybe custom honey pot or integration with recaptcha/akismet) is also a requirements.

Here are several of my issue with current contact forms solutions (not in particular order):

WordPress plugin have a activation method, It’s very useful, and we can use it for various things.

One of the popular method in plugin, is “Activation Redirect”, this is a method used by a lot ( I mean **A LOT**) of popular plugins to redirect user to plugin settings page, setup page, or even plugin about page (of course, within the admin panel) when user activate plugin.

This is (probably) useful for user on-boarding purpose, annoy user, keep the user inform about the feature of the plugin or help them setup the pages required by the plugin or install additional plugins/add-on.

Note: I actually really hate it when plugin/theme author did this. But in some case it could be useful.

Usually plugin use register_activation_hook() function to do this. But theme don’t have similar method/function. However, there’s a workaround for that.