It should be trivial to contact customer support. The best way is to have an email address like firstname.lastname@example.org prominently visible on every page of your website. Don’t use web forms and don’t make people select arbitrary options before contacting support. Under no circumstances expect customers to create an account on your website before they can contact you.
This should be obvious if you have any sympathy at all for your customers. It would seem spiteful to require a customer, desperate enough to contact customer support, to jump through hoops just to contact you. Plain old decency towards your fellow coinhabitants on this little planet should make you understand that.
This is the point where most people will say something like “but we don’t have the capacities to deal with all those emails from our customers. We must put some obstacles in their way to avoid them from flooding our inbox.” And at first that sounds absolutely reasonable. Now, in my opinion you should just hire more people to deal with support if you can’t handle the volume. However I understand this is not possible if your business model requires you to serve large amounts of customers with limited staff. But reducing the number of support request by making contact harder does not solve the problem, it merely hides the issue. The problems of people that can’t find a way to contact you don’t magically disappear. These people will probably get angry, they might abandon your product, and you’d be none the wiser because they can’t contact you!
The most dangerous part of this is that you have no control over which customers you turn down. Requiring user accounts or filling web forms with half a dozen required forms will make many people change their mind about contacting you. But you have absolutely no way of controlling who will get through. Do you prevent people who waste your time from contacting you? Or do you risk losing your most loyal customers because they can’t get help once they need it after happily paying you for years?
I’d like to draw your attention to a very significant group of users that you are sure to scare away: potential new users. Often, when people first try a product, they will run into bugs or issues because they will use your product in unexpected ways. These potential customers usually do not care the slightest about your product. They’re just evaluating it and they will happily conclude that your entire product is crap if they run into the tiniest flaw during initial testing. It is essential that these people get help as quickly and simple as possible, or you lose your possibly only chance to make them your customers.
Note that I’m only talking about making it easy for customers to contact you. I didn’t say that you need to actually provide support for every issue. It’s absolutely reasonable to tell a customer that their request is too complex or too specific to be handled by customer support. You may tell them that they need to get paid support to answer their specific question. I’d even go as far as to say that you don’t even need to answer every request; for example if someone sends you an insulting email, there’s absolutely no reason for you to respond.
The important part is that it is now your decision which customers to help. If you are overwhelmed, you get to pick and choose which support requests are important enough to follow up on. If you scare customers away with pointless bureaucracy before they contact you, you have no say in which support requests you end up with. You’ll probably end up with only obnoxious people contacting you. But if you filter requests after people contact you, you’re in control. You can make active decisions.
The reason why it’s so important to let customers contact you is simple: it’s the most direct way of customer feedback. No amount of usability testing or customer surveys are going to tell you about how customers use your software in the real world. You’ll only get a glimpse of real problems by listening to customer support requests. Support requests are the quickest way to discover rough edges and pain points. In my experience, most support requests deal with the same topics again and again. This means that dealing with them is pretty simple; you can prepare responses to most common queries and don’t need to spend a lot of time per request.
But the real opportunity is of course to fix the common pain points underlying the most common support topics. For example, I often got support requests from customers asking how to activate their license. The answer was simple; just double click the license file. I added instructions to the purchase confirmation email, I added instructions on my website and in the documentation. People still asked me. Nobody seemed to get this intuitive way of activating my app. So finally, I put a button labelled “Activate” in a prominent position. It seemed inelegant, but after that, I was never asked about activation again. By paying attention to customer support, I was able to remove a pain point for many users, that would never have occurred to me on my own. I had thought it was completely obvious how to activate my app.
If you fix enough of those pain points, customer support requests will go down; not because people don’t contact you, but because people don’t have any problems anymore!