21roofinggroup.com Open in urlscan Pro
35.212.103.235  Public Scan

URL: https://21roofinggroup.com/
Submission: On July 15 via automatic, source certstream-suspicious — Scanned from CA

Form analysis 6 forms found in the DOM

GET https://21roofinggroup.com/

<form role="search" method="get" class="et-search-form" action="https://21roofinggroup.com/">
  <label for="wpa_label_s" class="wpa-screen-reader-text">Search</label><input type="search" class="et-search-field" placeholder="Search …" value="" name="s" id="wpa_label_s">
</form>

<form class="psai-app-form" data-init-panel="cec34e58-afc5-499c-a927-a5b3c83d776f">
  <div class="psai-app-step">
    <div class="psai-app-heading" style="font-size:30px;text-align:center;background-color:#ffffff;color:#1e3a63;padding:20px;margin-left:-30px;margin-right:-30px;margin-top:-30px;font-weight:bold">Get An Instant Damage Report On Any Roof</div>
    <div style="text-align:center"><img src="https://scciwidgetops.blob.core.windows.net/fieldimage/50c63c2c-644b-4c6c-be24-99e7901e4b91.jpg" width="150" height="150"></div>
    <div class="psai-app-textblock" style="font-size:14px;text-align:center;color:#333333;font-weight:bold">Just enter your address to see the history of events your roof has endured from damaging winds to 3 inch hail.</div>
    <div class="psai-app-form-group" data-required="True" data-type="name"><label for="name-input" style="display:none">Full Name</label> <input id="name-input" class="psai-app-form-control" type="text" name="name" placeholder="Full Name"></div>
    <div class="psai-app-form-group" data-required="True" data-type="email"><label for="email-input" style="display:none">Email</label> <input id="email-input" class="psai-app-form-control" type="email" name="email" placeholder="Email"></div>
    <div class="psai-app-form-group" data-required="True" data-type="phone"><label for="phone-input" style="display:none">Phone</label> <input id="phone-input" class="psai-app-form-control" type="tel" name="phone" placeholder="Phone"></div>
    <div class="psai-app-form-group address-suggest-container" data-required="True" data-type="address"><label for="address-input" style="display:none">Full Address</label> <input id="address-input" class="psai-app-form-control address-input"
        type="text" name="address" placeholder="Address" autocomplete="none"> <input type="hidden" id="house-number" name="housenumber" autocomplete="none"> <input type="hidden" id="street" name="street" autocomplete="none"> <input type="hidden"
        id="city" name="city" autocomplete="none"> <input type="hidden" id="state" name="state" autocomplete="none"> <input type="hidden" id="zipcode" name="zipcode" autocomplete="none"> <input type="hidden" id="country" name="country"
        autocomplete="none"> <input type="hidden" id="latitude" name="latitude" autocomplete="none"> <input type="hidden" id="longitude" name="longitude" autocomplete="none">
      <div class="here-address-container">
        <div class="inner" style="display: none;"></div>
      </div>
    </div><input id="check" name="spamCheck" style="display:none;visibility:hidden"> <button type="button" class="psai-app-button psai-app-button-block" style="font-size:14px;background-color:#1e3a63;font-weight:bold;border-radius:10px"
      data-action="partial" data-next-panel="fd5bfc35-1082-456c-92fd-6a49a2734c65">GET INSTANT REPORT</button>
  </div>
</form>

<form>
  <div>
    <div class="nf-before-form-content"><nf-section>
        <div class="nf-form-fields-required">Fields marked with an <span class="ninja-forms-req-symbol">*</span> are required</div>
      </nf-section></div>
    <div class="nf-form-content "><nf-fields-wrap><nf-field>
          <div id="nf-field-1-container" class="nf-field-container textbox-container  label-above ">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-1-wrap" class="field-wrap textbox-wrap" data-field-id="1">
                <div class="nf-field-label">
                  <label for="nf-field-1" id="nf-label-field-1" class=""> Name <span class="ninja-forms-req-symbol">*</span>
                  </label>
                </div>
                <div class="nf-field-element">
                  <input type="text" value="" class="ninja-forms-field nf-element" id="nf-field-1" name="nf-field-1-textbox" autocomplete="on" aria-invalid="false" aria-describedby="nf-error-1" aria-labelledby="nf-label-field-1" aria-required="true"
                    required="">
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-1" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-2-container" class="nf-field-container email-container  label-above one-half first ">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-2-wrap" class="field-wrap email-wrap" data-field-id="2">
                <div class="nf-field-label">
                  <label for="nf-field-2" id="nf-label-field-2" class=""> Email <span class="ninja-forms-req-symbol">*</span>
                  </label>
                </div>
                <div class="nf-field-element">
                  <input type="email" value="" class="ninja-forms-field nf-element" id="nf-field-2" name="email" autocomplete="email" aria-invalid="false" aria-describedby="nf-error-2" aria-labelledby="nf-label-field-2" aria-required="true"
                    required="">
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-2" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-5-container" class="nf-field-container phone-container  label-above one-half  textbox-container">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-5-wrap" class="field-wrap phone-wrap textbox-wrap" data-field-id="5">
                <div class="nf-field-label">
                  <label for="nf-field-5" id="nf-label-field-5" class=""> Phone </label>
                </div>
                <div class="nf-field-element">
                  <input type="tel" value="" class="ninja-forms-field nf-element" id="nf-field-5" name="phone" autocomplete="tel" aria-invalid="false" aria-describedby="nf-error-5" aria-labelledby="nf-label-field-5">
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-5" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-6-container" class="nf-field-container address-container  label-above one-half first ">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-6-wrap" class="field-wrap address-wrap" data-field-id="6">
                <div class="nf-field-label">
                  <label for="nf-field-6" id="nf-label-field-6" class=""> Address </label>
                </div>
                <div class="nf-field-element">
                  <input type="text" value="" class="ninja-forms-field nf-element" id="nf-field-6" name="address" autocomplete="street-address" aria-invalid="false" aria-describedby="nf-error-6" aria-labelledby="nf-label-field-6">
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-6" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-7-container" class="nf-field-container city-container  label-above one-half ">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-7-wrap" class="field-wrap city-wrap" data-field-id="7">
                <div class="nf-field-label">
                  <label for="nf-field-7" id="nf-label-field-7" class=""> City </label>
                </div>
                <div class="nf-field-element">
                  <input type="text" value="" class="ninja-forms-field nf-element" id="nf-field-7" name="city" autocomplete="address-level2" aria-invalid="false" aria-describedby="nf-error-7" aria-labelledby="nf-label-field-7">
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-7" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-3-container" class="nf-field-container textarea-container  label-above ">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-3-wrap" class="field-wrap textarea-wrap" data-field-id="3">
                <div class="nf-field-label">
                  <label for="nf-field-3" id="nf-label-field-3" class=""> Message <span class="ninja-forms-req-symbol">*</span>
                  </label>
                </div>
                <div class="nf-field-element">
                  <textarea id="nf-field-3" name="nf-field-3" aria-invalid="false" aria-describedby="nf-error-3" class="ninja-forms-field nf-element" autocomplete="on" aria-labelledby="nf-label-field-3" aria-required="true" required=""></textarea>
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-3" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-8-container" class="nf-field-container recaptcha-container  label-above  textbox-container">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-8-wrap" class="field-wrap recaptcha-wrap textbox-wrap" data-field-id="8">
                <div class="nf-field-label">
                  <label for="nf-field-8" id="nf-label-field-8" class="">
                  </label>
                </div>
                <div class="nf-field-element">
                  <input id="nf-field-8" name="nf-field-8" class="ninja-forms-field nf-element" type="hidden" value="">
                  <div class="g-recaptcha" data-callback="nf_recaptcha_response_8" data-theme="light" data-sitekey="6LeL5EIiAAAAACN9_hoI_g_Td2ZO4pvkNZEfGBoU" data-fieldid="8">
                    <div style="width: 304px; height: 78px;">
                      <div><iframe title="reCAPTCHA" width="304" height="78" role="presentation" name="a-ju3s3c3v83s6" frameborder="0" scrolling="no"
                          sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox allow-storage-access-by-user-activation"
                          src="https://www.google.com/recaptcha/api2/anchor?ar=1&amp;k=6LeL5EIiAAAAACN9_hoI_g_Td2ZO4pvkNZEfGBoU&amp;co=aHR0cHM6Ly8yMXJvb2Zpbmdncm91cC5jb206NDQz&amp;hl=en&amp;v=-80zvSY9h4i8O-ocN2P5qTJk&amp;theme=light&amp;size=normal&amp;cb=jzmphzfwo1mo"></iframe>
                      </div><textarea id="g-recaptcha-response" name="g-recaptcha-response" class="g-recaptcha-response" aria-hidden="true" aria-label="Silent reCaptcha security check" aria-readonly="true"
                        style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>
                    </div>
                  </div>
                </div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-8" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field><nf-field>
          <div id="nf-field-4-container" class="nf-field-container submit-container  label-above  textbox-container">
            <div class="nf-before-field"><nf-section>
              </nf-section></div>
            <div class="nf-field">
              <div id="nf-field-4-wrap" class="field-wrap submit-wrap textbox-wrap" data-field-id="4">
                <div class="nf-field-label"></div>
                <div class="nf-field-element">
                  <input id="nf-field-4" class="ninja-forms-field nf-element " type="submit" value="Submit">
                </div>
                <div class="nf-error-wrap"></div>
              </div>
            </div>
            <div class="nf-after-field"><nf-section>
                <div class="nf-input-limit"></div>
                <div id="nf-error-4" class="nf-error-wrap nf-error" role="alert"></div>
              </nf-section></div>
          </div>
        </nf-field></nf-fields-wrap></div>
    <div class="nf-after-form-content"><nf-section>
        <div id="nf-form-errors-1" class="nf-form-errors" role="alert"><nf-errors></nf-errors></div>
        <div class="nf-form-hp"><nf-section>
            <label id="nf-label-field-hp-1" for="nf-field-hp-1" aria-hidden="true"> If you are a human seeing this field, please leave it empty. <input id="nf-field-hp-1" name="nf-field-hp" class="nf-element nf-field-hp" type="text" value=""
                aria-labelledby="nf-label-field-hp-1">
            </label>
          </nf-section></div>
      </nf-section></div>
  </div>
</form>

POST /#gf_25

<form method="post" enctype="multipart/form-data" target="gform_ajax_frame_25" id="gform_25" action="/#gf_25" data-formid="25" novalidate="">
  <input type="hidden" class="gforms-pum" value="{&quot;closepopup&quot;:false,&quot;closedelay&quot;:0,&quot;openpopup&quot;:false,&quot;openpopup_id&quot;:0}">
  <div class="gform-body gform_body">
    <ul id="gform_fields_25" class="gform_fields top_label form_sublabel_below description_below validation_below">
      <li id="field_25_1" class="gfield gfield--type-text gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_25_1"><label
          class="gfield_label gform-field-label" for="input_25_1">Name<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_text"><input name="input_1" id="input_25_1" type="text" value="" class="medium" aria-required="true" aria-invalid="false"> </div>
      </li>
      <li id="field_25_11" class="gfield gfield--type-text gfield--width-full gf_right_half field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_25_11"><label
          class="gfield_label gform-field-label" for="input_25_11">Address</label>
        <div class="ginput_container ginput_container_text"><input name="input_11" id="input_25_11" type="text" value="" class="medium" aria-invalid="false"> </div>
      </li>
      <li id="field_25_17" class="gfield gfield--type-text gfield--width-full gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_25_17">
        <label class="gfield_label gform-field-label" for="input_25_17">City &amp; State<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_text"><input name="input_17" id="input_25_17" type="text" value="" class="medium" aria-required="true" aria-invalid="false"> </div>
      </li>
      <li id="field_25_3" class="gfield gfield--type-phone gfield--width-full gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"
        data-js-reload="field_25_3"><label class="gfield_label gform-field-label" for="input_25_3">Phone Number<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_phone"><input name="input_3" id="input_25_3" type="tel" value="" class="medium" aria-required="true" aria-invalid="false"></div>
      </li>
      <li id="field_25_2" class="gfield gfield--type-email gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_25_2"><label
          class="gfield_label gform-field-label" for="input_25_2">Email<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_email">
          <input name="input_2" id="input_25_2" type="email" value="" class="medium" aria-required="true" aria-invalid="false">
        </div>
      </li>
      <li id="field_25_13" class="gfield gfield--type-text gfield--width-full gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"
        data-js-reload="field_25_13"><label class="gfield_label gform-field-label" for="input_25_13">Age of Roof<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_text"><input name="input_13" id="input_25_13" type="text" value="" class="medium" aria-required="true" aria-invalid="false"> </div>
      </li>
      <li id="field_25_14" class="gfield gfield--type-select gfield--width-full gf_right_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"
        data-js-reload="field_25_14"><label class="gfield_label gform-field-label" for="input_25_14">Current Roof Type<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_select"><select name="input_14" id="input_25_14" class="medium gfield_select" aria-required="true" aria-invalid="false">
            <option value=""></option>
            <option value="3-Tab Shingles">3-Tab Shingles</option>
            <option value="Architectural Shingles">Architectural Shingles</option>
            <option value="Metal Roofing">Metal Roofing</option>
            <option value="I don't know">I don't know</option>
          </select></div>
      </li>
      <li id="field_25_15" class="gfield gfield--type-select gfield--width-full gf_left_half gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"
        data-js-reload="field_25_15"><label class="gfield_label gform-field-label" for="input_25_15">Roof Estimate Type<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_select"><select name="input_15" id="input_25_15" class="medium gfield_select" aria-required="true" aria-invalid="false">
            <option value=""></option>
            <option value="Architectural Asphalt Shingles">Architectural Asphalt Shingles</option>
            <option value="Metal Roofing">Metal Roofing</option>
            <option value="Synthetic Shingles">Synthetic Shingles</option>
            <option value="3-Tab Shingles">3-Tab Shingles</option>
            <option value="Other">Other</option>
          </select></div>
      </li>
      <li id="field_25_16"
        class="gfield gfield--type-radio gfield--type-choice gfield--width-full gf_right_half gf_list_2col gfield_contains_required field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible"
        data-js-reload="field_25_16"><label class="gfield_label gform-field-label">Will you need financing<span class="gfield_required"><span class="gfield_required gfield_required_asterisk">*</span></span></label>
        <div class="ginput_container ginput_container_radio">
          <ul class="gfield_radio" id="input_25_16">
            <li class="gchoice gchoice_25_16_0">
              <input name="input_16" type="radio" value="Yes (Greensky)" id="choice_25_16_0">
              <label for="choice_25_16_0" id="label_25_16_0" class="gform-field-label gform-field-label--type-inline">Yes (Greensky)</label>
            </li>
            <li class="gchoice gchoice_25_16_1">
              <input name="input_16" type="radio" value="No" id="choice_25_16_1">
              <label for="choice_25_16_1" id="label_25_16_1" class="gform-field-label gform-field-label--type-inline">No</label>
            </li>
          </ul>
        </div>
      </li>
      <li id="field_25_6" class="gfield gfield--type-captcha field_sublabel_below gfield--no-description field_description_below hidden_label field_validation_below gfield_visibility_visible" data-js-reload="field_25_6"><label
          class="gfield_label gform-field-label" for="input_25_6">CAPTCHA</label>
        <div id="input_25_6" class="ginput_container ginput_recaptcha gform-initialized" data-sitekey="6LeL5EIiAAAAACN9_hoI_g_Td2ZO4pvkNZEfGBoU" data-theme="light" data-tabindex="59" data-badge="">
          <div style="width: 304px; height: 78px;">
            <div><iframe title="reCAPTCHA" width="304" height="78" role="presentation" name="a-nnarb52sflmz" frameborder="0" scrolling="no"
                sandbox="allow-forms allow-popups allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups-to-escape-sandbox allow-storage-access-by-user-activation"
                src="https://www.google.com/recaptcha/api2/anchor?ar=1&amp;k=6LeL5EIiAAAAACN9_hoI_g_Td2ZO4pvkNZEfGBoU&amp;co=aHR0cHM6Ly8yMXJvb2Zpbmdncm91cC5jb206NDQz&amp;hl=en&amp;v=-80zvSY9h4i8O-ocN2P5qTJk&amp;theme=light&amp;size=normal&amp;cb=t28jr1irm33s"
                tabindex="59"></iframe></div><textarea id="g-recaptcha-response-1" name="g-recaptcha-response" class="g-recaptcha-response"
              style="width: 250px; height: 40px; border: 1px solid rgb(193, 193, 193); margin: 10px 25px; padding: 0px; resize: none; display: none;"></textarea>
          </div><iframe style="display: none;"></iframe>
        </div>
      </li>
      <li id="field_25_12" class="gfield gfield--type-hidden gfield--width-full gform_hidden field_sublabel_below gfield--no-description field_description_below field_validation_below gfield_visibility_visible" data-js-reload="field_25_12">
        <div class="ginput_container ginput_container_text"><input name="input_12" id="input_25_12" type="hidden" class="gform_hidden" aria-invalid="false" value="https://21roofinggroup.com/"></div>
      </li>
    </ul>
  </div>
  <div class="gform_footer top_label"> <input type="submit" id="gform_submit_button_25" class="gform_button button et_pb_button" value="Send"
      onclick="if(window[&quot;gf_submitting_25&quot;]){return false;}  if( !jQuery(&quot;#gform_25&quot;)[0].checkValidity || jQuery(&quot;#gform_25&quot;)[0].checkValidity()){window[&quot;gf_submitting_25&quot;]=true;}  "
      onkeypress="if( event.keyCode == 13 ){ if(window[&quot;gf_submitting_25&quot;]){return false;} if( !jQuery(&quot;#gform_25&quot;)[0].checkValidity || jQuery(&quot;#gform_25&quot;)[0].checkValidity()){window[&quot;gf_submitting_25&quot;]=true;}  jQuery(&quot;#gform_25&quot;).trigger(&quot;submit&quot;,[true]); }">
    <input type="hidden" name="gform_ajax" value="form_id=25&amp;title=&amp;description=&amp;tabindex=49&amp;theme=legacy">
    <input type="hidden" class="gform_hidden" name="is_submit_25" value="1">
    <input type="hidden" class="gform_hidden" name="gform_submit" value="25">
    <input type="hidden" class="gform_hidden" name="gform_unique_id" value="">
    <input type="hidden" class="gform_hidden" name="state_25" value="WyJ7XCIxNlwiOltcIjQ5YjhlOTNjNDNhZjE5OWQ3YzBkMmY3OGNjMjMwYmRhXCIsXCI5OGYwZDlmYzdjMzZjYjc3YTIxMzNmYmZlMTlmY2ViN1wiXX0iLCI0NWQ0OWQwZGI2YzEzMjVjYmM1YmEzOGRjMTlmNzJkNCJd">
    <input type="hidden" class="gform_hidden" name="gform_target_page_number_25" id="gform_target_page_number_25" value="0">
    <input type="hidden" class="gform_hidden" name="gform_source_page_number_25" id="gform_source_page_number_25" value="1">
    <input type="hidden" name="gform_field_values" value="">
  </div>
  <input type="hidden" name="pum_form_popup_id" value="217098">
</form>

<form class="psai-app-form" data-init-panel="5de113f9-5da1-4f34-bca1-1fc3cb20a009">
  <div class="psai-app-step">
    <div class="psai-app-heading" style="font-size:24px;text-align:center;background-color:#ffffff;color:#1e3a63;padding:20px;margin-left:-30px;margin-right:-30px;margin-top:-30px;font-weight:bold">Get An Instant Damage Report On Your Roof</div>
    <div style="text-align:center"><img src="https://scciwidgetops.blob.core.windows.net/fieldimage/73aa919a-7c63-4716-a874-f1e54aba84d3.jpg" width="150" height="150"></div>
    <div class="psai-app-textblock" style="font-size:14px;text-align:center;color:#333333;font-weight:bold">Just enter your address to see the history of events your roof has endured from damaging winds to 3 inch hail.</div>
    <div class="psai-app-form-group" data-required="True" data-type="name"><label for="name-input" style="display:none">Full Name</label> <input id="name-input" class="psai-app-form-control" type="text" name="name" placeholder="Full Name"></div>
    <div class="psai-app-form-group" data-required="True" data-type="email"><label for="email-input" style="display:none">Email</label> <input id="email-input" class="psai-app-form-control" type="email" name="email" placeholder="Email"></div>
    <div class="psai-app-form-group" data-required="True" data-type="phone"><label for="phone-input" style="display:none">Phone</label> <input id="phone-input" class="psai-app-form-control" type="tel" name="phone" placeholder="Phone"></div>
    <div class="psai-app-form-group address-suggest-container" data-required="True" data-type="address"><label for="address-input" style="display:none">Full Address</label> <input id="address-input" class="psai-app-form-control address-input"
        type="text" name="address" placeholder="Address" autocomplete="none"> <input type="hidden" id="house-number" name="housenumber" autocomplete="none"> <input type="hidden" id="street" name="street" autocomplete="none"> <input type="hidden"
        id="city" name="city" autocomplete="none"> <input type="hidden" id="state" name="state" autocomplete="none"> <input type="hidden" id="zipcode" name="zipcode" autocomplete="none"> <input type="hidden" id="country" name="country"
        autocomplete="none"> <input type="hidden" id="latitude" name="latitude" autocomplete="none"> <input type="hidden" id="longitude" name="longitude" autocomplete="none">
      <div class="here-address-container">
        <div class="inner" style="display: none;"></div>
      </div>
    </div><input id="check" name="spamCheck" style="display:none;visibility:hidden"> <button type="button" class="psai-app-button psai-app-button-block" style="font-size:14px;background-color:#1e3a63;font-weight:bold;border-radius:10px"
      data-action="partial" data-next-panel="b2871639-4ec1-4994-83a0-61a43b15ff36">GET INSTANT REPORT</button>
  </div>
</form>

<form class="psai-app-form" data-init-panel="f9d27283-54d9-4db8-b248-aa5d25cb25bb">
  <div class="psai-app-step">
    <div class="psai-app-heading" style="font-size:30px;text-align:center;background-color:#ffffff;color:#1e3a63;padding:20px;margin-left:-30px;margin-right:-30px;margin-top:-30px;font-weight:bold">Find Out Your Roof's Health Instantly!</div>
    <div style="text-align:center"><img src="https://scciwidgetops.blob.core.windows.net/fieldimage/11741f12-1a97-4ae1-bad6-7fe7216faeef.jpg" width="150" height="150"></div>
    <div class="psai-app-textblock" style="font-size:14px;text-align:center;color:#333333;font-weight:bold">Know If and When Your Roof Was Hit by Extreme Weather</div>
    <div style="text-align:center"><img src="https://scciwidgetops.blob.core.windows.net/fieldimage/5e835a65-45e8-48ee-8daf-a062b2d72d26.jpg" width="375" height="214"></div>
    <div class="psai-app-textblock" style="font-size:14px;text-align:center;color:#333333;font-weight:bold">Just enter your address to see the history of events your roof has endured from damaging winds to 3 inch hail.</div><input id="check"
      name="spamCheck" style="display:none;visibility:hidden"> <button type="button" class="psai-app-button psai-app-button-block" style="font-size:14px;background-color:#1e3a63;font-weight:bold;border-radius:10px" data-action=""
      data-next-panel="566d968a-e230-4dde-a2fc-e6ec37240fa6">Find Out Now</button>
  </div>
</form>

Text Content

Same Day Online Roof Replacement Estimate Contact Us: 980-277-4421


 * About Us
   * The Company
     * Servicing
       * Cornelius NC
       * Mooresville NC
       * Lake Norman
       * Ballantyne
       * Myers Park
       * Southpark
   * Our Team
 * Services
   * Roofing
     * Roof Repair
     * Roof Installation
     * Roof Replacement
   * Gutters
     * Rain Gutters
     * Downspouts
     * Gutter Guards
   * Siding
     * Siding Installation
   * Storm Damage
     * Storm Damage Repair
   * Free Roof Maintenance Evaluation
 * Our Reviews
 * Products
   * GAF Shingles
   * Atlas Shingles
   * F-Wave Shingles
 * Pay Your Bill Online!
 * Gallery
 * Financing
 * Contact Us


Select Page
 * About Us
   * The Company
     * Servicing
       * Cornelius NC
       * Mooresville NC
       * Lake Norman
       * Ballantyne
       * Myers Park
       * Southpark
   * Our Team
 * Services
   * Roofing
     * Roof Repair
     * Roof Installation
     * Roof Replacement
   * Gutters
     * Rain Gutters
     * Downspouts
     * Gutter Guards
   * Siding
     * Siding Installation
   * Storm Damage
     * Storm Damage Repair
   * Free Roof Maintenance Evaluation
 * Our Reviews
 * Products
   * GAF Shingles
   * Atlas Shingles
   * F-Wave Shingles
 * Pay Your Bill Online!
 * Gallery
 * Financing
 * Contact Us

Search


YOUR LOCAL
ROOFING

Company


CHARLOTTE'S
MOST RELIABLE

Roofing Company


FROM
ROOFING TO SIDING
TO GUTTERS

We Are the team to call
to protect your home


GAF MASTER ELITE

Certified

PreviousNext
1234


YOUR LOCAL
ROOFING

Company


YOU’LL FIND 21 REASONS TO MAKE US YOUR ROOFING COMPANY OF CHOICE IN CHARLOTTE!

Whether your roof was damaged by wind or hail or is simply worn out from old
age, you want to make sure your home is protected with quality roofing again
quickly and efficiently. At 21 Roofing Group, we will be happy to repair your
roof to buy you more time, or if a replacement is advised, we can handle that,
too.

Get An Instant Damage Report On Any Roof

Just enter your address to see the history of events your roof has endured from
damaging winds to 3 inch hail.
Full Name
Email
Phone
Full Address

GET INSTANT REPORT



BEST QUALITY & WARRANTY

in the market


ROOFING

It is not an understatement to say your roof protects your entire home. When
your roof is not working properly, you risk the framework of your house

Learn More


ROOF REPAIR

If you are experiencing a new leak or any other issues from your roof, it is
very possible that the damage can be repaired rather than having to replace the
roof.

Learn More


GUTTERS

As a homeowner you may not even realize how important gutters and gutter guards
are to your home. Well-installed and managed gutters will divert water from your
home and foundation
Learn More


SIDING

There are many appealing factors to having siding installed on your home. Not
the least of which is the ease of the upkeep. Siding is easy to clean, is
scratch resistant and never needs painting

Learn More



TESTIMONIALS


THEY DID AN EXCEPTIONAL JOB.

21 Roofing Group replaced our roof and the roof for two other townhomes in
Magnolia Park and did an exceptional job on all of them. Tony and Ivy did a
great job with getting us the quote, handling the scheduling and following up to
ensure everything went well. 

-Michael B.


I HIGHLY RECOMMEND USING THEM FOR YOUR ROOFING NEEDS.

21 Roofing Group replaced our roof / gutters and a skylight in February of 2020
and did a terrific job. Prompt, professional and clean. I mean it, they clean up
the job site very well after a messy job. I highly recommend using them for your
roofing needs.

-Mitch C.


THE CREW WERE SPECTACULAR!

They replaced our roof today, fabulous from start to end, Tony, Ivy and the crew
were spectacular! They have done at least 3 other roofs in Magnolia Park. Highly
recommend them!

-Leslie W.


THEY WORKED VERY LONG DAYS AND WORKED VERY HARD!

21 Roofing Group replaced our roof. Replaced soffit and fascia and installed new
gutters. They did a fantastic job! My house looks brand new again! Thank you to
Erik, Tony and Pedro as well as Ivy in the office and the whole crew! Everyone
was super nice! They worked very long days and worked very hard! You don’t see
that kind of work ethic anymore! I would recommend them highly!

-Kim P.


WOULD RECOMMEND.

21 Roofing Group did an excellent job on our house. Their staff was friendly and
their service top notch. We paid about what I would expect for a total roof
replacement. They tended to the job right away and got it done with quality and
efficiency. There were no issues with trash/debris being left on our property
and no disturbances to our personal schedules. Would recommend.

-Matthew M.


THEY DID EXCELLENT WORK.

We had our roof replaced by Louie &amp; team at 21 Roofing Group in the fall of
2018. Louie’s team did excellent work and I enjoyed working with him. I had many
interviews with other companies, but after reviewing, we chose 21 Roofing Group.
Good price and friendly service, and they did excellent work.

-Michael L.


GREAT SERVICE AND GREAT PRICING.

I am a realtor and have used 21 Roofing Group several times. They are very
honest about being able to do repairs instead of just an entire new roof. They
also do repairs, replace vent boots, etc. Great service and great pricing.

-Tom T.


WHAT AN AMAZING EXPERIENCE.

What an amazing experience. As a real estate professional, I have many vendors
to choose from. I went with 21 Roofing Group for a leak in my garage. I needed a
patch job completed on my roof due to a broken truss, as they informed me. They
came out, photographed the damage, did the repair, sending me pics and progress
reports. I came home to a new roof and no more leaks! I highly recommend this
company!

-Tom T.


VERY PROFESSIONAL COMPANY.

Impressed by Tony who came out as promised within 24 hours of my call. They
fixed both structural concerns & the roof area around the chimney on a home we
were selling in Statesville. The work was done a week after we accepted the bid.
Would definitely recommend and use them again.

-Lorillee K.


HIGHLY RECOMMEND!

We are a 19 building condominium in the Sedgefield neighborhood. We have used
21Roofing for repairs on several of our buildings and the replacement of 6
complete roofs. Their pricing is very attractive and the quality of their work
is most satisfactory. They have been very responsive when we’ve had emergency
issues arise. The crews they use are very respectful of our property and
homeowners. They communicate well and show up on time. They are efficient and
get the job done quickly. Most importantly, their crews do a thorough cleaning
of the work space before leaving.

-Sanford M.


VERY PROFESSIONAL AND CAME OUT QUICKLY TO ACCESS THE ISSUE AND PERFORM THE
REPAIRS.

21 Roofing Group is my go-to roofer going forward.

-Diane E.


MY NEW ROOF LOOKS GREAT AND I HIGHLY RECOMMEND 21 ROOFING GROUP.

21 Roofing Group showed efficiency from the the first contact for an estimate to
the final detail. Everyone was friendly, professional and attentive to details.

-Leigh S.


WE ARE VERY HAPPY WITH THEIR WORK.

We contacted 21 Roofing Group about some roofing issues in a home we recently
moved into: a leaking skylight in a screened porch and water damage around a
dormer. Although the latter issue had been identified in an inspection by
another company, we weren’t happy with the timeliness or quality of
communications from that roofer. So we called 21 roofing group based on on-line
reviews. Tony promptly came to our house and conducted a very thorough
inspection of our roof, going well beyond the issues we had called about. He
climbed on the roof, used a drone, and entered the attic crawl space through a
narrow entrance we hadn’t previously been aware of. He took many photographs and
was able to document a number of issues missed by our original inspector. Among
these was incorrect installation of the roofing on two flat areas of the roof
(one over the screened porch) and gutters and downspouts that were too small
given the size of the roof. To make a long story short, we contracted with 21
roofing group to replace the flat sections of roofing, install new gutters and
downspouts and repair the damaged area around the dormer. After the work began,
the crew concluded that the flat roof over the screened porch could be repaired
rather than replaced, at a substantial savings. All of the work was performed
promptly and meticulously. The leaks have stopped, the gutters no longer
overflow, and we are confident that numerous issues have been resolved or staved
off. Communications by Tony and others within the company were always prompt,
clear, and helpful. We are very happy with their work, expect to use their
services again when our roof needs reshingling, and will enthusiastically
recommend them to others.

-Don C.

PreviousNext
Read More


CERTIFIED

21 Roofing Group is a licensed and insured General Contractor in both North and
South Carolina. At 21 Roofing Group, we are Master Elite Certified with GAF,
something only 3% of roofers in the U.S. can claim. We are also certified
contractors with Atlas Roofing and HAAG Certified Inspectors. This means we
offer the highest and best warranties in the industry, guaranteed!




OUR APPROACH

> At 21 Roofing Group, our experienced team assists you in navigating crucial
> decisions for your project. Through strategic questioning, we tailor optimal
> solutions to meet your needs. As skilled and qualified roofing and gutter
> contractors, we employ cutting-edge techniques for efficient and high-quality
> craftsmanship, delivering results that align with customer expectations and
> include impressive warranties.

Learn More



WHETHER YOU REQUIRE ROOFING, GUTTERS, OR SIDING

we can handle the critical issues that come with your home’s exterior, and we
understand the importance of completing each job on time while giving you the
best quality and warranty in the market.




STORM DAMAGE

Storms in the Carolinas can be sudden and severe. Damage to your home and
property can happen in seconds and you need a contractor who can put things back
together quickly and efficiently. Whether it is the effects of wind and hail or
damage to your roof, gutters or siding caused by downed trees or limbs, 21
Roofing Group is your go to source for complete storm damage repair.

Learn More



FROM THE MOMENT YOU CALL ON
US FOR SOLUTIONS

you will find our roofing company staff to be courteous and respectful, and we
will go the extra mile to make you a very satisfied customer. For all your
roofing needs in Charlotte, North Carolina, make 21 Roofing Group your first
choice.

Call Us: 980-277-4421



STATEVILLE




TROUTMAN




SHERRILLS FORD




MOORESVILLE




DENVER




CORNELIUS




KANNAPOLIS




CALDWELL




CONCORD




IRON STATION




LOWESVILLE




HUNTERSVILLE




STANLEY




DALLAS




MT HOLLY




HARRISBURG




ROCKY RIVER




NEWELL




GASTONIA




BELMONT




MINT HILL




CLOVER




LAKE WYLIE




PINEVILLE




MATTHEWS




INDIAN TRAIL




TEGA CAY




FORT MILL




INDIAN LAND




WESLEY CHAPEL




MONROE




ROCK HILL




WAXAHAW




CHARLOTTE



21 Roofing is guaranteed to bring our knowledge to bear when it comes to your
project. Our employees are held to the strictest standards in both installation
and clean-up after the project.
Find Us On The Web

Sitemap

CONTACT 21 ROOFING GROUP:

980-277-4421

Licensed in North & South Carolina

SERVICE AREAS

North Carolina: Charlotte, Marvin, Waxhaw, Matthews, Wesley Chapel, Monroe,
Indian Trail, Mint Hill, Gastonia, Belmont, Cornelius, Huntersville,
Mooresville, Lake Norman, Denver, Concord
South Carolina: Indian Land, Fort Mill, Lancaster, Rock Hill, Tega Cay, Clover

CERTIFICATIONS





Fields marked with an * are required
Name *


Email *


Phone


Address


City


Message *




If you are a human seeing this field, please leave it empty.

 * Roofing Contractor
 * Roofer
 * Roofing Blog
 * Roofing Company

© 2024 21 Roofing Group, Charlotte, NC (980) 277-4421 Same Day Online Roof
Replacement Estimate

Call Map

X
CALL US
(980) 277-4421
Contact Us
X
OUR LOCATION

View in Maps
(980) 277-4421
Contact Us
Privacy Policy


ROOF REPLACEMENT ESTIMATE

 * Name*
   
 * Address
   
 * City & State*
   
 * Phone Number*
   
 * Email*
   
 * Age of Roof*
   
 * Current Roof Type*
   3-Tab ShinglesArchitectural ShinglesMetal RoofingI don't know
 * Roof Estimate Type*
   Architectural Asphalt ShinglesMetal RoofingSynthetic Shingles3-Tab
   ShinglesOther
 * Will you need financing*
    * Yes (Greensky)
    * No

 * CAPTCHA
   
 * 


×
×
Close
Schedule An Appointment

×
Get An Instant Damage Report On Your Roof

Just enter your address to see the history of events your roof has endured from
damaging winds to 3 inch hail.
Full Name
Email
Phone
Full Address

GET INSTANT REPORT

Close
Got Weather Damage?

×
Find Out Your Roof's Health Instantly!

Know If and When Your Roof Was Hit by Extreme Weather

Just enter your address to see the history of events your roof has endured from
damaging winds to 3 inch hail.
Find Out Now


Notifications