Recommended approach for setting up contact management?
Here are multiple options for implementing such contact form, as further details below.
Default contact form (D6 or D7)
This is the contact module that comes with Drupal 7 core (though disabled by default). Typically used by Drupal newbies, and commonly known to have quite a few limitations / issues that can be resolved using some of the contributed modules (mentioned below).
Webform (D6 or D7)
The Webform module is the traditional (and mature) solution used in quite a few (close to 500K) sites. Some details from its project page:

... for making forms and surveys in Drupal. After a submission, users may be sent an e-mail &quot;receipt&quot; as well as sending a notification to administrators. Results can be exported into Excel or other spreadsheet applications. Webform also provides some basic statistical review and has an extensive API for expanding its features.

Note: It also has 2 related charting modules, i.e. Webform Chart and Webform Charts, both integrate very well with the Webform module to provide charts about data created via the Webform module.
Entityform (D7 or D8)
The Entityform module is a fairly new solution used in &quot;only&quot; about 18K sites, and only has an RC1 release so far. Some details from its project page:

... enables you to create front-end forms (fieldable entities), which contain fields that you define! These forms use the standard Drupal fields. This means that out of the box, you can use any standard Drupal node field! As of the time this article was written, there were over three hundred &quot;field&quot; modules. And since Entityforms are &quot;Drupal entities&quot;, you will automatically be able to use future &quot;field&quot; modules!
The forms can be used to create custom surveys, petition, and personalized contact forms, and other customized form. (For those of you who have used Webforms, this module brings Webform's functionality into the &quot;standard&quot; Drupal field / entity world.)

Note: in D8 renamed to eForm (to avoid name confusion).
Contact forms in D8 core with the Contact Storage module (D8)
This is the contact module that comes with Drupal 8 core (enabled by default now).
Many more details about this can be found in the article about &quot;Goodbye Webform? Contact Forms Are In the Drupal 8 Core&quot;, which explains why you will also need the Contact Storage module:

The one key feature that's missing with the Contact module is the ability to store messages sent through the forms. This is odd, because Drupal 8 deals with contact messages as entities. You can add comments to them, for example. You just can't see them!
To solve this problem, you'll need a contributed module called Contact Storage. The author says they hope to have this in core for Drupal 8.1 and that would make a lot of sense, filling this functionality gap.

Some details from the Contact Storage project page:

... will provide storage for Contact messages which are fully-fledged entities in Drupal 8.
This plus core contact module aim to provide functionality equivalent to the base-features of Webform or Entity Form.
The goal is to firm up this functionality in contrib with view to move into core in 8.1.x or later.