.lead_source { display: none; } window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-GDZ39L3LGJ'); (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "h93pc51uvy"); window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-GDZ39L3LGJ'); (function(c,l,a,r,i,t,y){ c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)}; t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i; y=l.getElementsByTagName(r)[0];y.parentNode.insertBefore(t,y); })(window, document, "clarity", "script", "h93pc51uvy");

Blog

Storm Damage? Call Your Roofer Before Your Insurance Company

When a storm hits and leaves your roof damaged, addressing the issue promptly is essential to avoid further complications. However, before jumping on the phone with your insurance company, it’s crucial to make the right call—to your trusted roofer! In this blog post, we’ll walk you through the importance of contacting a professional roofer before … Continued

View Post

How to Find a Reliable Roofer to Fix Hail Damage

Dealing with hail damage to roof and gutters can be a stressful experience, but finding a reliable roofing contractor shouldn’t be. As a homeowner, it’s essential to address hail damage promptly to prevent further complications and maintain the integrity of your home. This blog post will guide you through the process of identifying hail damage and finding … Continued

View Post

An Overview of Roof Ventilation Systems

Roof ventilation plays a crucial role in maintaining your home’s overall health and efficiency. However, many homeowners overlook its importance and underestimate how it can prolong a roof’s lifespan. In this post, trusted local roofer Bone Dry Roofing gives you an overview of roof ventilation systems.

View Post

Gutter Guards 101

Gutters can quickly become clogged with leaves, debris and pests – compelling reasons to have gutter guards. These handy additions to your gutters help keep them clean and functioning properly. Let’s explore everything you need to know about gutter guards, from the different types available to the benefits they offer in this post by top roofer … Continued

View Post

We Build More than Roofs, We Build People

On Saturday, April 15, 2023, Bone Dry Roofing (BDR), headquartered in Indianapolis, serving homeowners and businesses across the Midwest, as well as Colorado, and Florida, supported the SkillsUSA State Championship competition at the Indiana State Fairgrounds. BDR contributed to the event by supplying materials for the roofing competition for Mia Pudilo, a high school junior … Continued

View Post

Common Factors That Increase Roof Replacement Costs

Your roof protects your home and everything inside it from the elements. Over time, it may deteriorate or sustain damage to the point where it will require replacement. However, this investment is not in any means a simple upgrade. In this post, Bone Dry Roofing discusses the factors that can increase the cost for roof … Continued

View Post

Roof Replacements: Do They Increase Property Value?

Should I replace roof before selling? Many homeowners and roofers can attest that a new roof can increase a home’s market value. In this post, top roofer Bone Dry Roofing shows how roof replacements can improve your resell price.

View Post

Common Types of Roof Damage to Look for After Winter

Winter weather can often wreak havoc on your roof, which is why it pays to be mindful of the common types of winter roof damage and understand how they may affect your home. With a quick assessment, some basic maintenance and professional help, you can better preserve and protect your home and roof from damage in the … Continued

View Post

Choosing a Roofing Contractor: 6 Red Flags To Look For

If you’re a homeowner looking for roofing services, you must do your due diligence and thoroughly research any potential contractor. No matter how attractive the initial offer may seem, there are some common “red flags” that you should look out for before hiring a roofer. Find out these six key warning signs before choosing a roof … Continued

View Post

How to Choose the Best Roof Color for Your Home

Choosing the right roof color makes your home look beautiful and increases its curb appeal, but it can be challenging with the many options available today. In this post, Bone Dry Roofing will list the steps to find the best color for your roof.

View Post
(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 = window.location.search.substring(1); //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 = /www.google/; var YAHOO = /search.yahoo/; var BING = /www.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", ".bonedry.com"); 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