Skip to main content

The anatomy of angry customer feedback: how (and why) to respond



BTR Problem Solver
Photo by Yan Krukau

Receiving critical feedback online can sting, especially when business owners put so much thought, time, and effort into what they do. When customers reach the point of anger, it might be tempting to not respond or respond in anger yourself. However, according to Jason Feifer, editor in chief of Entrepreneur Magazine, you could be losing out on a valuable opportunity by doing so.

“You could just ignore them. Sure, nothing bad will happen. You could argue, but it doesn’t really get you anywhere,” he said.

Rather, Jason advises entrepreneurs and business leaders to break down the response and get to the heart of the issue. This can not only help you resolve the customer’s concerns but also retain their business, build trust, and show potential customers your commitment to quality service.

“I wanted to know, is there some way to just calm people down and maybe just get them to not take action, to stay subscribed, to stay listening? Are we able to retain angry people?”

Below, discover Jason’s method for achieving these results and a real example of a customer interaction that proved his theories.

Breaking down an angry response

While Jason doesn’t support people berating others, he understands the logic behind the anger they can feel. “When we create something, we are asking people to give us a little of their time. And time is their most valuable resource. Time is a fraction of their lives never to be regained. If they feel that their time isn’t well spent, that feels like robbery. That is personal.”

He has two theories as to why customers leave angry feedback.

Theory number one: More than anything in the world, people just want to feel heard. 

Customers want to be heard, valued, and understood. In fact, 64% of consumers prioritize spending their money with businesses they feel know them. Perhaps equally as important, one in three are willing to overlook a single negative experience if they feel a business is trying to understand them as a customer.

When Jason gets the sense that a customer just needs to vent, he doesn’t try to overcomplicate the conversation. “I reply as fast as possible, and I never argue with them. And I never ask for their business back. I just show them that I’ve heard them.”

Theory number two: Angry people do not expect a response.

Although customers want to be heard, they don’t always expect to be. Rising above low expectations can surprise customers and plant the idea that maybe your business does want to listen to them.

“Their low expectations fuel their anger,” Jason said. “They don’t think they’ll be heard; therefore, it’s like they’re showing up at a door that will never open. And what can you do if nobody will answer the door? Well, you make a ton of noise so at least they can hear you inside. That is why I swing the door open quickly. It startles them.”

How do you win back an angry customer?

One day, Jason received an email with the subject line “Waste.” The body of the email went on to insult Entrepreneur Magazine and used vulgar terms to complain about a recently published article, a profile of an entrepreneur they didn’t like. The writer concluded by saying, “I won’t be resubscribing.”

When deciding to respond, Jason considered what this customer was really looking for. Using his two theories above and the steps below, he managed to calm the customer down and retain his subscription.

1. Open up a dialogue to understand their point of view

Feedback can sometimes be a knee-jerk response. When you respond, you humanize the interaction and can even change the customer’s tone.

“If we are going to win over people who are upset, then we have to at least start by recognizing where they’re coming from,” Jason said.

The first part of his response read as follows:

“Thanks for the feedback, and I’m sorry that piece upset you. I’m always interested in what readers have to say, so if you don’t mind sharing additional feedback, I’d like to know: Have you been dissatisfied with other stories in the magazine, or was it simply your distaste for this one piece that has led you to the decision not to re-subscribe?”

2. Share your point of view

Next, Jason shared his perspective on the article in question without being defensive or asking the customer to reconsider unsubscribing:

“We work hard to make a magazine that we hope will be enlightening and informative and surprising for entrepreneurs. We know not everything will be beloved by all. I hope we have at least a few more issues to impress you before your subscription runs.”

3. Get to the heart of it

Each conversation will vary, but Jason has found that this method has been successful for him time and again. In this case, the customer in question responded to him, allowing him to dig deeper into the issue.

“He told me more about why he hated that particular article because I had prompted exactly that,” Jason said. Not only did he receive honest customer feedback, he found that the customer’s initial anger dissipated to a more conversational tone:

“I have gotten a good deal of value from Entrepreneur in the past. And sure, there are some articles that are amazing and some that don’t interest me as much, but no, no other article made me do an eye roll so high that I actually got dizzy.”

Suddenly, the customer was speaking to Jason as a human, not as a faceless company. It was Jason’s opportunity to really understand this customer’s thought process:

“Got it. Thanks for the additional feedback. I’m just always surprised and a little confused when someone sees one thing they don’t like and it leads them to cancel a subscription. It’s just not how I function as a consumer. If, say, I don’t like one thing that Netflix produced, I don’t cancel Netflix as a result, but I understand that everyone makes their decisions differently. Always helpful to learn how our readers are reacting.

“It was a little risky, but instead of confronting him directly, I put his reaction into the context of my own. And I never questioned his decision because I never wanted to get him on the defensive.”

In the end, the customer didn’t cancel. As Jason noted, “He was heated and probably didn’t expect me to engage him, and now he’s feeling a little sheepish.”

For better results, be the calming presence

By separating his personal feelings from the feedback, asking questions, and relating to the customer’s situation, Jason reached the crux of the matter: The customer just wanted to be heard. And when someone really listened, his anger deflated. A human connection was made.

“I have responded to almost every angry email that I have ever gotten,” Jason said. “And oftentimes, once I engage them by not making them feel defensive, by not insulting them, they reveal something, or they seem a little embarrassed to have come at my door with a battering ram when I was willing to just open it up.

“Here’s the thing: We live in a loud, noisy, often angry world, and we will get nowhere by joining that anger. When we hear people out, we can replace that anger with something else. We’ll start with basic decency and we’ll build from there.”

How can I apply this knowledge to my Yelp reviews?

Opening yourself up to criticism and feedback can be uncomfortable—but sometimes, it’s the best way to grow. For businesses, online reviews can be a powerful way to strengthen marketing efforts, customer service, and customer loyalty.

Here are several tips from Yelp’s Small Business Expert Emily Washcovick on how to leverage Jason’s advice when responding to your Yelp reviews.

Don’t be afraid to engage with an angry customer

“You’re allowed to be bothered when you get critical feedback, but what you don’t want to be is silent. You could ignore it or chalk it up to people just going online to complain and hide behind a keyboard. But in all honesty, that’s not the reality when it comes to Yelp.

“Nearly 75% of the reviews on the site are neutral to positive, and we have more 5-star reviews than 1, 2, and 3 star reviews combined. But when someone says something negative about you and your business, it stings. Instead of being upset and feeling helpless, you can catch them off guard by taking action.”

Respond to critical reviews to build trust

“Resolving a customer’s anger or frustration in a public forum can play to your benefit. A recent survey commissioned by Yelp found that 56% of respondents say an owner replying to customers’ reviews would make them trust the business more. And 87% of review readers say they’re more likely to look past a critical review if they see that the business has responded and adequately addressed the issue. 

“It’s also an opportunity to create and build trust with potential consumers who are checking you out. How you respond is a reflection of your customer service practices. And it can help you stand out.”

Create an open dialogue

“When people are angry enough that they write to you—be that an email or an online review—they’re emotionally invested. And oftentimes, their expectations were not met. But as Jason pointed out, they’re not necessarily complaining because they think someone will do anything. They’re just complaining because they want to be heard. By being responsive, especially within a timely manner, you can surprise and delight the person. You can turn their experience around and make them one of your loyal customers and fans.

“When you respond to a review publicly, you want to respond in a way that reflects your customer service practices to all future consumers. You don’t want to necessarily get into a back-and-forth dialogue with the reviewer. Start by thanking the reviewer for sharing their experience, then mention a thing or two they stated having issues with and how your business typically handles those things. Then you can provide a method for the customer to get in touch with you, or indicate that you have sent a direct message to connect further.

“Remember: Turning this person around is an incredible outcome to responding. But as a bare minimum, by responding and responding in a timely manner, you’re sending a signal to all future consumers showing you care.”


These lessons come from an episode of Behind the Review, Yelp & Entrepreneur Media’s weekly podcast. Listen below to hear from Jason, or visit the episode page to read more, subscribe to the show, and explore other episodes.

Did you find this post valuable?

Click on a star to rate it.

Since you found this post valuable...

Follow us on social media for more great business resources!

We're sorry you didn't find this post valuable.

How could we improve it?

The information above is provided for educational and informational purposes only. It is not intended to be a substitute for professional advice and may not be suitable for your circumstances. Unless stated otherwise, references to third-party links, services, or products do not constitute endorsement by Yelp.

Business resources, delivered to your inbox

Get the latest blog content, info on virtual events, and the occasional freebie.

  • This field is for validation purposes and should be left unchanged.

By continuing, you agree to Yelp’s Terms of Service and acknowledge Yelp’s Privacy Policy.

[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/businesses/the-anatomy-of-angry-customer-feedback-how-and-why-to-respond/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Phone</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>
[gravityform id="4" title="false" ajax="true"]
<div class='gf_browser_unknown gform_wrapper gform_legacy_markup_wrapper' id='gform_wrapper_4' ><div id='gf_4' class='gform_anchor' tabindex='-1'></div> <div class='gform_heading'> <span class='gform_description'></span> </div><form data-form-name='Newsletter Signup Popup' method='post' enctype='multipart/form-data' target='gform_ajax_frame_4' id='gform_4' action='/businesses/the-anatomy-of-angry-customer-feedback-how-and-why-to-respond/#gf_4' novalidate> <div class='gform_body gform-body'><ul id='gform_fields_4' class='gform_fields top_label form_sublabel_below description_below'><li id="field_4_1" class="gfield field_sublabel_below field_description_below hidden_label gfield_visibility_visible gf-email" data-field-class="gf-email" data-js-reload="field_4_1"><label class='gfield_label screen-reader-text' for='input_4_1' >youremail@address.com</label><div class='ginput_container ginput_container_email'> <input name='input_1' id='input_4_1' type='email' value='' class='large' placeholder='youremail@address.com' aria-invalid="false" /> </div></li><li id="field_4_2" class="gfield gform_validation_container field_sublabel_below field_description_below gfield_visibility_visible" data-js-reload="field_4_2"><label class='gfield_label' for='input_4_2' >Comments</label><div class='ginput_container'><input name='input_2' id='input_4_2' type='text' value='' autocomplete='new-password'/></div><div class='gfield_description' id='gfield_description_4_2'>This field is for validation purposes and should be left unchanged.</div></li></ul></div> <div class='gform_footer top_label'> <input type='submit' id='gform_submit_button_4' class='gform_button button' value='Submit' onclick='if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} ' onkeypress='if( event.keyCode == 13 ){ if(window["gf_submitting_4"]){return false;} if( !jQuery("#gform_4")[0].checkValidity || jQuery("#gform_4")[0].checkValidity()){window["gf_submitting_4"]=true;} jQuery("#gform_4").trigger("submit",[true]); }' /> <input type='hidden' name='gform_ajax' value='form_id=4&amp;title=&amp;description=1&amp;tabindex=0' /> <input type='hidden' class='gform_hidden' name='is_submit_4' value='1' /> <input type='hidden' class='gform_hidden' name='gform_submit' value='4' /> <input type='hidden' class='gform_hidden' name='gform_unique_id' value='' /> <input type='hidden' class='gform_hidden' name='state_4' value='WyJbXSIsImE0YjFiMmUxY2IxMWVhYTljM2FhNzdkODk4NDUzZmY0Il0=' /> <input type='hidden' class='gform_hidden' name='gform_target_page_number_4' id='gform_target_page_number_4' value='0' /> <input type='hidden' class='gform_hidden' name='gform_source_page_number_4' id='gform_source_page_number_4' value='1' /> <input type='hidden' name='gform_field_values' value='' /> </div> </form> </div> <iframe style='display:none;width:0px;height:0px;' src='about:blank' name='gform_ajax_frame_4' id='gform_ajax_frame_4' title='This iframe contains the logic required to handle Ajax powered Gravity Forms.'></iframe> <script> gform.initializeOnLoaded( function() {gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery('#gform_ajax_frame_4').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_4');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_4').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_4').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_4').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_4').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ jQuery(document).scrollTop(jQuery('#gform_wrapper_4').offset().top - mt); }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_4').val();gformInitSpinner( 4, 'https://blog.yelp.com/wp-content/plugins/gravityforms/images/spinner.svg' );jQuery(document).trigger('gform_page_loaded', [4, current_page]);window['gf_submitting_4'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}setTimeout(function(){jQuery('#gform_wrapper_4').replaceWith(confirmation_content);jQuery(document).scrollTop(jQuery('#gf_4').offset().top - mt);jQuery(document).trigger('gform_confirmation_loaded', [4]);window['gf_submitting_4'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_4').text());}, 50);}else{jQuery('#gform_4').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger('gform_post_render', [4, current_page]);} );} ); </script>