Customer Reviews

We’re proud of the reputation we’ve built over the last 30 years.

  • May 24th, 2022

    Bone Dry Roofing gave us a fair estimate for our new roof. They walked us through every step of the process, showed up on schedule, protected our gardens and property and the clean up after the work w..

    Irene Chapman
  • May 18th, 2022

    BoneDry replaced my sagging old roof and made it much better than when it was new from the builder. The attention to detail and doing it right make for a great value in roof replacement with no shady..

    TL Wiz
  • May 13th, 2022

    They did a fine job.

    Kathleen Davis
  • May 10th, 2022

    Excellent company. They were on time and got straight to work. They didn't waste any time messing around. Pricing was fair, and the workers that did the job were thorough and professional. Kept me upd..

    Mike Bray
  • April 4th, 2022

    BoneDry did an excellent job on our roof! They came to look at the roof and didn’t try to replace the entire roof, only what was needed. Easy to communicate with and work with!

    Amy Smith
  • March 23rd, 2022

    We had Bone Dry repair our roof for 2 leaks and replace the roof ridge. They were very timely considering all the bad weather we have had lately. They provided before and after pictures. Landon New wa..

    Janie Teter
  • February 11th, 2022

    Great looking roof installed by a very professional crew! They were on time and worked quickly to get our new roof on. I would definitely recommend them to anyone that has a roof that needs attention..

    James Millard
  • January 26th, 2022

    Very professional from start to finish. Lots of communication from the estimate to completion. During installation, I received text message updates and photos. They arrived when they said they would..

    Elizabeth Downing
  • December 1st, 2021

    Bone Dry Roofing are as professional as they come. They replace our roof in 2 1/2 days. The clean up was unbelievable they did such a wonderful quick job. I was so impressed. I recommend them to anyon..

    Phyllis Sutherland
  • November 26th, 2021

    I had a leak in my roof repaired by Bone Dry. A dead valley was leaking during rain storms. Michael came out to make an estimate within a day of me calling. The quote was very clear. The repair work b..

    Chris MacDonald
  • November 11th, 2021

    I had Bone Dry replace my roof and I cannot express how pleased I am with the experience! The process was very smooth as they kept me updated from start to finish. They were on time, professional and..

    Carolina Lopez
  • November 9th, 2021

    Very prompt & professional. They offer top quality service and are a pleasure to work with. Highly recommend.

    Sherry Vinegar
  • September 17th, 2021

    We liked them. They did 3 roof tearoff and replacements. It onlt took them 2 days. Excellent!

    Melissa Cox
  • September 3rd, 2021

    This company is amazing. I called one day and the next day I had someone inspect roof and later that day I got my estimate to replace roof. It took less than a week from the time I accepted their qu..

    Melanie Stevens
  • August 13th, 2021

    Everyone was great to work with. They were on time and stayed late to complete the job in one day. AJ provided pictures throughout the process and answered all of my questions. It was a pleasure work..

    Kent Snodgrass
  • August 11th, 2021

    Very professional and gave timily smartphone updates on progress, yes I would recommend Bone Dry Roofing to my family and friends...

    William Scott
  • July 11th, 2021

    Wilmoth was the best person to talk to!! Very informative, knowledgeable, and very concerning of the customer. Give this man a raise!!

    Tyson Robinson
  • June 28th, 2021

    I used a different reputable roofing company to install a new roof at my prior home. They did a great job, however there were no communication during the installation. The updates and pictures that..

    Linda Engle
  • June 16th, 2021

    We selected Bone Dry on competitive bids. They were lowest but did a very good job. The job site was well managed despite rain nearly every day. Decking & chimney repairs were done as needed without h..

    Richard McCall
  • June 14th, 2021

    Chase and his crew did an excellent job putting a new roof on my house! They were fast and very efficient. I would highly recommend them!

    Florence Newton
  • May 21st, 2021

    After having dealt with a roofing company that my insurance company recommended (which they no longer do because of my experience with the), I hired Bone Dry roofing. They have completed three roofin..

    Brenda Tollett


(function(cookieName, domain){ var traffic_source_COOKIE_TOKEN_SEPARATOR = ">>"; //separating between concatenated lead source var traffic_source_date_SEPARATOR = "|>"; var NONE = "(website)"; domain = domain || window.location.hostname; function getCookie(cookieName){ var name = cookieName + "="; var cookieArray = document.cookie.split(';'); //break cookie into array for(var i = 0; i < cookieArray.length; i++){ var cookie = cookieArray[i].replace(/^\s+|\s+$/g, ''); //replace all space with '' = delete it if (cookie.indexOf(name)==0){ return cookie.substring(name.length,cookie.length); // } } return null; } function getURLParameter(param){ var pageURL =; //get the query string parameters without the "?" var URLVariables = pageURL.split('&'); //break the parameters and values attached together to an array for (var i = 0; i -1) { if(end === -1) { end = utmzCookie.length; } cookieCampaignName = "utmz:" + utmzCookie.substring((start + UTMSRC.length), end); //get the value of the UTMZ, without the parameter name } } if(cookieCampaignName != "" && isNotNullOrEmpty(urlParamSRC)){ //if there is a campaign name AND there is SRC value traffic_source = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; //concateane the SRC with the existing campaign name // traffic_source = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + cookieCampaignName; // Optional: add the session time } else if(cookieCampaignName != ""){ //if there is campaign name traffic_source = cookieCampaignName; //just use it for the new cookie } else if(urlParamSRC != null) { //if there is not campaign name but we have SRC traffic_source = decodeURI(urlParamSRC); // decode URI of the SRC parameter // traffic_source = decodeURI(urlParamSRC) + currTime(); // Optional: add the session time } else if(document.referrer != ""){ //if there is not campaign, and no src, check if there is a referrer, var referrerHostName = removeProtocol(document.referrer); var GOOGLE = /; var YAHOO = /; var BING = /; if(GOOGLE.test(referrerHostName)){ traffic_source = "Google Search"; //traffic_source = "Google Search" + currTime(); // + Optional: Add the current session time. Choose one of them. } else if(YAHOO.test(referrerHostName)){ traffic_source = "Yahoo Search"; //traffic_source = "Yahoo Search" + currTime(); } else if(BING.test(referrerHostName)){ traffic_source = "Bing Search"; //traffic_source = "Bing Search" + currTime(); } else { traffic_source = referrerHostName; //traffic_source = referrerHostName + currTime(); } } else { traffic_source = NONE; } setCookie(cookieName, traffic_source); //set the cookie } else if(isNotNullOrEmpty(urlParamSRC)){ //if there is a cookie, add the SRC to the cookie, unless the same src already exists as the first token. var firstToken = getFirstTokenFromCookie(getCookie(cookieName)); if(firstToken !== "" && urlParamSRC !== firstToken) { var newTrafficSourceCookie = urlParamSRC + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); //concetenate new SRC with old cookie values // var newTrafficSourceCookie = urlParamSRC + currTime() + traffic_source_COOKIE_TOKEN_SEPARATOR + getCookie(cookieName); // Optional: add the time of current session setCookie(cookieName, newTrafficSourceCookie); } } })("traffic_source", ""); function getCookie(name) { //Gets the value of traffic_source var value = "; " + document.cookie; var parts = value.split("; " + name + "="); if (parts.length == 2) return parts.pop().split(";").shift(); } function addTrafficSourceToForm(){ //injects the traffic_source value to the form jQuery(".lead_source input").each(function() { this.value = getCookie("traffic_source"); console.log("Executing"); }); } addTrafficSourceToForm() //initates the process