neea-marketplace-prod.pub.prod.kube.enervee.com
Open in
urlscan Pro
52.25.72.68
Public Scan
Submitted URL: http://neea-marketplace-prod.pub.prod.kube.enervee.com/
Effective URL: https://neea-marketplace-prod.pub.prod.kube.enervee.com/
Submission: On November 27 via api from US — Scanned from US
Effective URL: https://neea-marketplace-prod.pub.prod.kube.enervee.com/
Submission: On November 27 via api from US — Scanned from US
Form analysis
10 forms found in the DOM<form class="form ng-pristine ng-valid" id="autocompleteForm">
<div class="item item-full item-search">
<div class="item-wrapper">
<div id="search-input-label" class="sr-only ng-binding">Type a product name...</div> <i class="mp mp-search-thick" aria-hidden="true"></i> <input class="search-input ng-pristine ng-untouched ng-valid ng-empty"
enervee-autofocus="vm.isAutocompleteOpen" form="autocompleteForm" type="text" id="searchBox" autocomplete="off" placeholder="Search by brand, make, or model..." data-hint-placeholder="base:search:input_placeholder"
aria-labelledby="search-input-label" aria-live="polite" ng-model="vm.searchTerm" ng-change="vm.debounceSearch()" ng-enter="vm.submitSearch()">
</div>
</div> <!-- ngIf: vm.showPleaseEnterTextPopover -->
</form>
Name: enterEmailForm —
<form class="form ng-pristine ng-valid-email ng-invalid ng-invalid-required" name="enterEmailForm" novalidate="">
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': enterEmailForm.email.$touched && enterEmailForm.email.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust"
data-section-key="base:modals:your_email_address_text" class="ng-binding ng-isolate-scope">your email address</ng-transclude> </span> <input type="email" aria-label="Enter email address" aria-describedby="signup-email-error-messages"
name="email" ng-model="user.email" ng-disabled="emailIsReadonly" required="" class="ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required">
<ul id="signup-email-error-messages" ng-messages="enterEmailForm.email.$error" ng-show="enterEmailForm.email.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_email_address_text" class="ng-binding ng-isolate-scope">Please enter your email
address</ng-transclude> </li> <!-- ngMessage: email -->
</ul>
</label> </div>
</div> <disclosure-statement class="col-xs-12 pdc-create-account ng-isolate-scope compliance-disclosure" data-cms-key="create_account"><!-- ngIf: vm.disclosuresEnabled -->
<div ng-if="vm.disclosuresEnabled" class="ng-scope"> <i class="mp mp-compliance" aria-hidden="true"></i>
<div class="disclosure"> <ng-transclude ng-bind-html="content | trust" data-section-key="compliance:create_account" data-cms-context="vm.partnerContext" class="ng-binding ng-isolate-scope">Your email and password will be used to allow you to
sign in securely and access your data. We record certain usage data for security, support, and reporting purposes.
<a href="https://www.enervee.com/privacy" target="_blank" rel="noreferrer noopener">See how your data is managed.</a></ng-transclude> </div>
</div><!-- end ngIf: vm.disclosuresEnabled -->
</disclosure-statement>
<div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-submit" ng-disabled="enterEmailForm.$invalid" ng-click="submitEmailModalForm(user, '#modal-enter-email')" disabled="disabled"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:submit_button_text" class="ng-binding ng-isolate-scope">Submit</ng-transclude> </button> </div>
</div>
</form>
Name: createPasswordForm —
<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength ng-valid-password-match" name="createPasswordForm" novalidate="">
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{ 'has-error' : createPasswordForm.newPassword.$touched && (createPasswordForm.newPassword.$invalid || createPasswordForm.newPassword.$error.message) }"> <label class="btn-group">
<span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:your_password_text" class="ng-binding ng-isolate-scope">your password</ng-transclude> </span> <input type="password"
aria-label="Enter password" aria-describedby="signup-password-error-messages" name="newPassword" ng-model="password.newPassword" ng-minlength="12" ng-change="validateFormField(createPasswordForm.newPassword)" required=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
<ul id="signup-password-error-messages" ng-messages="createPasswordForm.newPassword.$error" ng-show="createPasswordForm.newPassword.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
</li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: createPasswordForm.newPassword.$error.message -->
</ul>
</label> </div>
</div>
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{ 'has-error' : createPasswordForm.confirmPassword.$touched && (createPasswordForm.confirmPassword.$invalid || createPasswordForm.confirmPassword.$error.message) }"> <label
class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:retype_your_password_text" class="ng-binding ng-isolate-scope">Retype your password</ng-transclude> </span> <input
type="password" aria-label="Confirm password" name="confirmPassword" aria-describedby="signup-confirm-password-error-messages" ng-model="password.confirmPassword" ng-minlength="12" match-password="newPassword"
ng-model-options="{ allowInvalid: true }" ng-change="validateFormField(createPasswordForm.confirmPassword)" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength ng-valid-password-match">
<ul id="signup-confirm-password-error-messages" ng-messages="createPasswordForm.confirmPassword.$error" ng-show="createPasswordForm.confirmPassword.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:retype_your_password_text" class="ng-binding ng-isolate-scope">Retype your password</ng-transclude> </li>
<!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngMessage: minlength --> <!-- ngMessage: backendValidation --> <!-- ngIf: createPasswordForm.confirmPassword.$error.message -->
</ul>
</label> </div>
</div>
<div class="col-xs-12"> <button type="button" class="btn btn-full btn-large btn-accent" ng-disabled="createPasswordForm.$invalid || passwordModalBusy" ng-show="!showAccountProblemOptions"
ng-click="submitCreatePasswordModalForm(password, '#modal-create-password')" disabled="disabled"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:save_password_text" ng-show="!passwordModalBusy"
class="ng-binding ng-isolate-scope">Save password</ng-transclude>
<loaders ng-show="passwordModalBusy" class="ng-isolate-scope ng-hide">
<div class="loader" ng-class="{small: isSmall}"> <!-- ngIf: !blockArray -->
<div class="loader-style-local ng-scope" ng-if="!blockArray">
<div class="loader-graphic"> <svg class="score-spinner" xmlns="http://www.w3.org/2000/svg" width="240" height="240" viewBox="0 0 240 240" version="1.1">
<title>Loading</title>
<g style="fill-rule:evenodd">
<path class="inner"
d="M202.835 89.368C198.193 76.923 190.826 65.821 181.469 56.778 165.239 41.098 143.025 31.598 118.68 32.013 110.565 32.153 104.094 38.847 104.234 46.962 104.374 55.077 111.063 61.543 119.178 61.409 135.413 61.134 150.228 67.46 161.044 77.914 171.861 88.372 178.69 102.959 178.965 119.189L178.968 119.189C178.979 119.856 178.979 120.526 178.967 121.198 178.833 129.313 185.299 136.002 193.414 136.142 201.529 136.282 208.223 129.811 208.363 121.696 208.557 110.324 206.587 99.417 202.835 89.368L202.835 89.368Z">
</path>
</g>
</svg> </div> <!-- ngIf: displayText -->
</div><!-- end ngIf: !blockArray --> <!-- ngIf: blockArray -->
</div>
</loaders>
</button> </div>
</div>
</form>
Name: enterPasswordForm —
<form class="form ng-pristine ng-invalid ng-invalid-required" name="enterPasswordForm">
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': enterPasswordForm.password.$touched && enterPasswordForm.$invalid || enterPasswordForm.password.$error.invalid}"> <label class="btn-group"> <span class="label">
<ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:your_password_text" class="ng-binding ng-isolate-scope">your password</ng-transclude> </span> <input type="password" aria-label="Enter password"
aria-describedby="login-password-error-messages" name="password" ng-model="user.password" ng-focus="resetFormField(enterPasswordForm.password.$error)" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="login-password-error-messages" ng-messages="enterPasswordForm.password.$error" ng-show="enterPasswordForm.password.$touched || enterPasswordForm.password.$error.invalid" role="alert" class="errors ng-active ng-hide">
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
</li> <!-- ngMessage: invalid -->
</ul>
</label> </div>
</div>
<div class="col-xs-12 small">
<a ng-click="forgotPasswordEmail('#modal-enter-password')" href=""> <b> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:forgot_your_password_text" class="ng-binding ng-isolate-scope">Forgot your password?</ng-transclude> </b> </a>
</div>
<div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="enterPasswordForm.$invalid" ng-click="submitPasswordForm(user, '#modal-enter-password')" disabled="disabled"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:log_in_text" class="ng-binding ng-isolate-scope">Log in</ng-transclude> </button> </div>
</div>
</form>
Name: changePasswordForm —
<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength" name="changePasswordForm" novalidate="">
<div role="alert" ng-show="successMessage" style="width:100%;margin-bottom:20px;text-align:center" class="ng-binding ng-hide"> </div>
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.old_password.$touched && changePasswordForm.old_password.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:change_password_current_pwd" class="ng-binding ng-isolate-scope">current password</ng-transclude> </span> <input type="password" aria-label="Enter current password"
aria-describedby="change-password-current-error-messages" name="old_password" ng-model="old_password" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="change-password-current-error-messages" ng-messages="changePasswordForm.old_password.$error" ng-show="changePasswordForm.old_password.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
</li> <!-- ngMessage: invalid -->
</ul>
</label> </div>
</div>
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.new_password1.$touched && changePasswordForm.new_password1.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:change_password_new_pwd" class="ng-binding ng-isolate-scope">new password</ng-transclude> </span> <input type="password" aria-label="Enter new password"
aria-describedby="change-password-new-error-messages" name="new_password1" ng-model="new_password1" ng-minlength="12" ng-change="validateFormField(changePasswordForm.new_password1)" required=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
<ul id="change-password-new-error-messages" ng-messages="changePasswordForm.new_password1.$error" ng-show="changePasswordForm.new_password1.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
</li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: changePasswordForm.new_password1.$error.message -->
</ul>
</label> </div>
</div>
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': changePasswordForm.new_password2.$touched && changePasswordForm.new_password2.$invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:change_password_confirm_new_pwd" class="ng-binding ng-isolate-scope">confirm new password</ng-transclude> </span> <input type="password"
aria-describedby="change-password-confirm-new-error-messages" aria-label="Confirm new password" name="new_password2" ng-model="new_password2" ng-minlength="12" ng-change="validateFormField(changePasswordForm.new_password2)" required=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength">
<ul id="change-password-confirm-new-error-messages" ng-messages="changePasswordForm.new_password2.$error" ng-show="changePasswordForm.new_password2.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: minlength -->
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:please_enter_your_password_text" class="ng-binding ng-isolate-scope">Please enter your password</ng-transclude>
</li> <!-- ngMessage: passwordMatch --> <!-- ngMessage: serverPasswordMissMatch --> <!-- ngIf: changePasswordForm.new_password2.$error.message -->
</ul>
</label> </div>
</div>
<div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="changePasswordForm.$invalid" ng-click="submitChangePasswordModal(old_password, new_password1, new_password2)" disabled="disabled"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:submit_text" class="ng-binding ng-isolate-scope">Submit<br></ng-transclude> </button> </div>
</div>
</form>
Name: deleteAccountForm —
<form class="form ng-pristine ng-invalid ng-invalid-required" name="deleteAccountForm" novalidate="">
<div class="errors" role="alert" ng-hide="successMessage" style="margin-bottom:20px"> <!-- ngRepeat: errorMessage in errorMessages --> </div>
<div class="alert alert-success ng-binding ng-hide" role="alert" ng-show="successMessage"> </div>
<div class="row" ng-hide="successMessage">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': deleteAccountForm.password.$touched && deleteAccountForm.password.$invalid}"> <label class="btn-group"> <span class="label"> password </span> <input type="password"
placeholder="Enter password" aria-label="Enter password" name="password" ng-model="password.deleteAccountPassword" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required"> </label> </div>
</div>
<div class="col-xs-12"> <button type="submit" class="btn btn-full btn-large btn-accent" ng-disabled="deleteAccountForm.$invalid" ng-click="deleteAccount(password.deleteAccountPassword)" disabled="disabled"> Submit </button> </div>
</div>
</form>
Name: rebateFormModal —
<form name="rebateFormModal" class="form ng-pristine ng-valid ng-valid-email ng-valid-required"> <!-- ngIf: allowInstantRebate -->
<div ng-show="allowEmailRebate" class="item item-full ng-hide">
<div class="item item-full is-input has-label" ng-hide="is_authenticated"> <label class="btn-group"> <span class="label"> your email address </span> <input type="email" name="emailAddress" ng-model="userEmail"
ng-required="allowEmailRebate && !allowEasyRebate" class="ng-pristine ng-untouched ng-valid ng-empty ng-valid-email ng-valid-required"> </label> </div>
<div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitEmail()" ng-disabled="rebateFormModal.emailAddress.$invalid"> <ng-transclude ng-bind-html="content | trust"
data-section-key="base:modals:email_me_rebate_info_button_text" class="ng-binding ng-isolate-scope">Email Me Rebate Information</ng-transclude> </button> </div>
<div ng-show="emailSent && allowEasyRebate" class="ng-hide">
<div class="item item-full align-center"> <a ng-click="showUploadReceipt = !showUploadReceipt" class="small rebate" href=""> Have your receipt? Upload it now </a> </div>
<div ng-show="showUploadReceipt" class="ng-hide">
<p>Upload your receipt below:</p>
<div class="item item-full"> <label class="is-file-upload"> <!-- ngIf: !receipt.name --><span ng-if="!receipt.name" class="sr-only ng-scope">Receipt</span><!-- end ngIf: !receipt.name --> <input type="file"
class="input-large hidden ng-pristine ng-untouched ng-valid ng-empty" ngf-select="" ng-model="receipt" name="receipt" ngf-pattern="'image/*,application/pdf'" ngf-accept="'image/*,application/pdf'" ngf-max-size="2MB"
accept="image/*,application/pdf"> <span class="btn btn-full btn-rebate btn-large ng-binding"> </span> </label> </div>
<div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitReceipt()" ng-disabled="!receipt || !is_authenticated" disabled="disabled"> <!-- ngIf: !is_authenticated --><span
ng-if="!is_authenticated" class="ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:login_to_submit_your_receipt" class="ng-binding ng-isolate-scope">Login To Submit Your Receipt</ng-transclude>
</span><!-- end ngIf: !is_authenticated --> <!-- ngIf: is_authenticated --> </button> </div> <!-- ngIf: formError -->
</div>
</div>
</div>
<div ng-show="allowEasyRebate && !allowEmailRebate" class="item item-full ng-hide">
<div ng-show="is_authenticated" class="item item-full ng-hide">
<p>Upload your receipt below:</p> <label class="is-file-upload"> <!-- ngIf: !receipt.name --><span ng-if="!receipt.name" class="sr-only ng-scope">Receipt</span><!-- end ngIf: !receipt.name --> <input type="file"
class="input-large hidden ng-pristine ng-untouched ng-valid ng-empty" ngf-select="" ng-model="receipt" name="receipt" ngf-pattern="'image/*,application/pdf'" ngf-accept="'image/*,application/pdf'" ngf-max-size="2MB"
accept="image/*,application/pdf"> <span class="btn btn-full btn-large btn-rebate ng-binding"> </span> </label>
</div>
<div class="item item-full"> <button type="button" class="btn btn-full btn-rebate btn-large" ng-click="submitReceipt()" ng-disabled="!receipt || is_authenticated" disabled="disabled"> <!-- ngIf: !is_authenticated --><span
ng-if="!is_authenticated" class="ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:login_to_submit_your_receipt" class="ng-binding ng-isolate-scope">Login To Submit Your Receipt</ng-transclude>
</span><!-- end ngIf: !is_authenticated --> <!-- ngIf: is_authenticated --> </button> </div> <!-- ngIf: formError --> <!-- ngIf: !receipt -->
<div ng-if="!receipt" class="item item-full ng-scope">
<p>Still looking? Save this info for later:</p>
<a ng-click="emailInfo()" href=""> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:email_me_rebate_info_link_text" class="ng-binding ng-isolate-scope">I'm not ready! Email me rebate information.</ng-transclude> </a>
</div><!-- end ngIf: !receipt -->
</div> <!-- ngIf: !allowEasyRebate && !allowEmailRebate && !allowInstantRebate -->
<div ng-if="!allowEasyRebate && !allowEmailRebate && !allowInstantRebate" class="item item-full ng-scope">
<a class="btn btn-full btn-rebate btn-large" target="_blank" ng-click="handleClickedRebateLink($event)"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:get_rebate_info_button_text" class="ng-binding ng-isolate-scope">Get Rebate Info</ng-transclude> <i class="mp mp-external-link" aria-hidden="true"></i> </a>
</div><!-- end ngIf: !allowEasyRebate && !allowEmailRebate && !allowInstantRebate -->
</form>
Name: vm.redirectForm — POST
<form name="vm.redirectForm" method="post" add-form-submit="" action="" target="_self" data-eid="form-checkout" class="ng-pristine ng-valid"> <input type="hidden" name="cart_id" ng-value="vm.redirectFormData.cartId" autocomplete="off"> <input
type="hidden" name="utility_id" ng-value="vm.redirectFormData.utilityId" autocomplete="off"> </form>
Name: vm.updateZipcodeForm —
<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-minlength ng-valid-maxlength" name="vm.updateZipcodeForm" novalidate="">
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label" ng-class="{'has-error': vm.updateZipcodeForm.zipcode.$touched && vm.updateZipcodeForm.zipcode.$error.invalid}"> <label class="btn-group"> <span class="label"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:update_zipcode_input_label" class="ng-binding ng-isolate-scope">ZIP</ng-transclude> </span> <input type="text" inputmode="numeric" minlength="" maxlength="" aria-label="ZIP"
name="zipcode" aria-describedby="edit-zipcode-error-messages" ng-model="vm.zipcode" data-eid="update-zipcode-input" required=""
class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-minlength ng-valid-maxlength"> <!-- ngIf: vm.updateZipcodeForm.zipcode.$error.message --> </label> </div>
</div>
</div>
<div class="visible-sm visible-md visible-lg">
<div class="row multi-button">
<div class="col-xs-12 col-sm-6"> <button type="button" class="btn btn-large btn-default btn-full" data-eid="update-zipcode-cancel-button" ng-click="vm.onCancel()" data-dismiss="modal" aria-label="Close"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> </div>
<div class="col-xs-12 col-sm-6"> <button type="submit" class="btn btn-large btn-storefront btn-full" data-eid="update-zipcode-submit-button" ng-click="vm.onSubmit()"> <ng-transclude ng-bind-html="content | trust"
data-section-key="base:modals:confirm_text" class="ng-binding ng-isolate-scope">Confirm</ng-transclude> </button> </div>
</div>
</div>
<div class="visible-xs">
<div class="row">
<div class="col-xs-12 col-sm-6"> <button type="submit" class="btn btn-large btn-storefront btn-full" data-eid="update-zipcode-submit-button" ng-click="vm.onSubmit()"> <ng-transclude ng-bind-html="content | trust"
data-section-key="base:modals:confirm_text" class="ng-binding ng-isolate-scope">Confirm</ng-transclude> </button> </div>
</div>
<div class="row">
<div class="col-xs-12 col-sm-6"> <button type="button" class="btn btn-large btn-default btn-full" data-eid="update-zipcode-cancel-button" ng-click="vm.onCancel()" data-dismiss="modal" aria-label="Close"> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> </div>
</div>
</div>
</form>
Name: vm.shippingForm —
<form class="form ng-pristine ng-invalid ng-invalid-required ng-valid-pattern ng-valid-email" name="vm.shippingForm" novalidate="">
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:first_name" class="ng-binding ng-isolate-scope">First
Name</ng-transclude> </span> <input type="text" aria-label="First Name" aria-describedby="first-name" name="first_name" ng-model="vm.shippingData.customer.first_name" data-eid="shipping-address-modal-first-name"
ng-click="vm.fieldTouched('first_name')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="shipping-address-modal-first-name" ng-messages="vm.shippingForm.first_name.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.first_name.$touched" role="alert" class="errors ng-active ng-hide">
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:first_name" class="ng-binding ng-isolate-scope">First Name</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: customerInvalid -->
</ul>
</label> </div>
</div>
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:last_name" class="ng-binding ng-isolate-scope">Last
Name</ng-transclude> </span> <input type="text" aria-label="Last-Name" aria-describedby="last-name" name="last_name" ng-model="vm.shippingData.customer.last_name" data-eid="shipping-address-modal-last-name"
ng-click="vm.fieldTouched('last_name')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="shipping-address-modal-last-name" ng-messages="vm.shippingForm.last_name.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.last_name.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:last_name" class="ng-binding ng-isolate-scope">Last Name</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: last_name_invalid -->
</ul>
</label> </div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:phone_number" class="ng-binding ng-isolate-scope">Phone
Number</ng-transclude> </span> <input type="tel" aria-label="Phone Number" aria-describedby="phone-number" name="phone_number" ng-model="vm.shippingData.customer.phone_number" data-eid="shipping-address-phone-number"
ng-pattern="/^\d{10}$/" ng-click="vm.fieldTouched('phone_number')" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern">
<ul id="shipping-address-modal-phone-number" ng-messages="vm.shippingForm.phone_number.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.phone_number.$touched" role="alert" class="errors ng-active ng-hide">
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:phone_number" class="ng-binding ng-isolate-scope">Phone Number</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: pattern -->
</ul>
</label> </div>
</div>
</div>
<div class="row form-row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:email"
class="ng-binding ng-isolate-scope">Email</ng-transclude> </span> <input type="email" aria-label="Email" aria-describedby="email" name="email" ng-model="vm.shippingData.customer.email" data-eid="shipping-address-modal-email"
ng-click="vm.fieldTouched('email')" required="" class="ng-pristine ng-untouched ng-empty ng-valid-email ng-invalid ng-invalid-required">
<ul id="shipping-address-modal-email" ng-messages="vm.shippingForm.email.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.email.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:email" class="ng-binding ng-isolate-scope">Email</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: email --> <!-- ngMessage: email_invalid -->
</ul>
</label> </div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_1"
class="ng-binding ng-isolate-scope">Address Line 1</ng-transclude> </span> <input type="text" aria-label="address-line-1" aria-describedby="address-line-1" name="address_line_1" ng-model="vm.shippingData.address.address_line_1"
data-eid="shipping-address-modal-address-line-1" ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="shipping-address-modal-address-line-1" ng-messages="vm.shippingForm.address_line_1.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.address_line_1.$touched" role="alert" class="errors ng-active ng-hide">
<!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_1" class="ng-binding ng-isolate-scope">Address Line 1</ng-transclude>
<ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
</ul>
</label> </div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:address_line_2"
class="ng-binding ng-isolate-scope">Address Line 2</ng-transclude> </span> <input type="text" aria-label="address-line-2" aria-describedby="address-line-2" name="address_line_2" ng-model="vm.shippingData.address.address_line_2"
data-eid="shipping-address-modal-address-line-2" ng-readonly="vm.isPrepopulated" ng-click="vm.fieldTouched('address')" class="ng-pristine ng-untouched ng-valid ng-empty">
<ul id="shipping-address-modal-address-line-2" ng-messages="vm.shippingForm.address_line_2.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.address_line_2.$touched" role="alert" class="errors ng-inactive ng-hide">
<!-- ngMessage: address_invalid --> </ul>
</label> </div>
</div>
</div>
<div class="row">
<div class="col-xs-12">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:city"
class="ng-binding ng-isolate-scope">City</ng-transclude> </span> <input type="text" aria-label="city" aria-describedby="city" name="city" ng-model="vm.shippingData.address.city" data-eid="shipping-address-modal-city"
ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<ul id="shipping-address-modal-city" ng-messages="vm.shippingForm.city.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.city.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:city" class="ng-binding ng-isolate-scope">City</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
</ul>
</label> </div>
</div>
</div>
<div class="row">
<div class="col-xs-6">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:state"
class="ng-binding ng-isolate-scope">State</ng-transclude> </span> <select required="" name="state" ng-options="state.value as state.title for state in vm.states" ng-model="vm.shippingData.address.state"
ng-click="vm.fieldTouched('address')" data-eid="shipping-address-state" ng-disabled="vm.isPrepopulated" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<option value="?" selected="selected"></option>
<option label="AL" value="string:AL">AL</option>
<option label="AK" value="string:AK">AK</option>
<option label="AZ" value="string:AZ">AZ</option>
<option label="AR" value="string:AR">AR</option>
<option label="CA" value="string:CA">CA</option>
<option label="CO" value="string:CO">CO</option>
<option label="CT" value="string:CT">CT</option>
<option label="DE" value="string:DE">DE</option>
<option label="FL" value="string:FL">FL</option>
<option label="GA" value="string:GA">GA</option>
<option label="HI" value="string:HI">HI</option>
<option label="ID" value="string:ID">ID</option>
<option label="IL" value="string:IL">IL</option>
<option label="IN" value="string:IN">IN</option>
<option label="IA" value="string:IA">IA</option>
<option label="KS" value="string:KS">KS</option>
<option label="KY" value="string:KY">KY</option>
<option label="LA" value="string:LA">LA</option>
<option label="ME" value="string:ME">ME</option>
<option label="MD" value="string:MD">MD</option>
<option label="MA" value="string:MA">MA</option>
<option label="MI" value="string:MI">MI</option>
<option label="MN" value="string:MN">MN</option>
<option label="MS" value="string:MS">MS</option>
<option label="MO" value="string:MO">MO</option>
<option label="MT" value="string:MT">MT</option>
<option label="NE" value="string:NE">NE</option>
<option label="NV" value="string:NV">NV</option>
<option label="NH" value="string:NH">NH</option>
<option label="NJ" value="string:NJ">NJ</option>
<option label="NM" value="string:NM">NM</option>
<option label="NY" value="string:NY">NY</option>
<option label="NC" value="string:NC">NC</option>
<option label="ND" value="string:ND">ND</option>
<option label="OH" value="string:OH">OH</option>
<option label="OK" value="string:OK">OK</option>
<option label="OR" value="string:OR">OR</option>
<option label="PA" value="string:PA">PA</option>
<option label="RI" value="string:RI">RI</option>
<option label="SC" value="string:SC">SC</option>
<option label="SD" value="string:SD">SD</option>
<option label="TN" value="string:TN">TN</option>
<option label="TX" value="string:TX">TX</option>
<option label="UT" value="string:UT">UT</option>
<option label="VT" value="string:VT">VT</option>
<option label="VA" value="string:VA">VA</option>
<option label="WA" value="string:WA">WA</option>
<option label="WV" value="string:WV">WV</option>
<option label="WI" value="string:WI">WI</option>
<option label="WY" value="string:WY">WY</option>
</select>
<ul id="shipping-address-modal-state" ng-messages="vm.shippingForm.state.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.state.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:state" class="ng-binding ng-isolate-scope">State</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: address_invalid -->
</ul>
</label> </div>
</div>
<div class="col-xs-6">
<div class="item item-full is-input has-label"> <label class="btn-group"> <span class="label"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:zip"
class="ng-binding ng-isolate-scope">ZIP</ng-transclude> </span> <input type="text" aria-label="ZIP" aria-describedby="zip" name="zip_code" ng-model="vm.shippingData.address.zip_code" data-eid="shipping-address-zip"
ng-pattern="/(^\d{5}$)|(^\d{5}-\d{4}$)/" ng-click="vm.fieldTouched('address')" ng-readonly="vm.isPrepopulated" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern">
<ul id="shipping-address-modal-zip" ng-messages="vm.shippingForm.zip_code.$error" ng-show="vm.shippingForm.$submitted ||vm.shippingForm.zip_code.$touched" role="alert" class="errors ng-active ng-hide"> <!-- ngMessage: required -->
<li ng-message="required" class="error ng-scope"> <ng-transclude ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:zip" class="ng-binding ng-isolate-scope">ZIP</ng-transclude> <ng-transclude
ng-bind-html="content | trust" data-section-key="base:modals:shipping_address:errors:required" class="ng-binding ng-isolate-scope">is required</ng-transclude> </li> <!-- ngMessage: pattern address_invalid -->
</ul>
</label> </div>
</div>
</div> <!-- ngRepeat: reportingForm in vm.reportingFormArray --> <!-- ngIf: vm.termsAndConditions --> <!-- ngIf: vm.formErrorMessage -->
<div class="row full-width">
<div class="compliance-disclosure"> <svg class="compliance-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1008 1008">
<path d="M311 486l-59 59 167 170 337-337-59-59-278 276zm-185-23V211L504 41l378 170v252c0 116-35 224-108 321-73 96-162 157-270 183-108-26-197-87-270-183-73-97-108-205-108-321z"></path>
</svg>
<div class="disclosure"> <ng-transclude ng-bind-html="content | trust" data-section-key="application_form:compliance_disclosure" data-eid="shipping-form-compliance-disclosure" class="ng-binding ng-isolate-scope">We use your information (such as
name and address) for verifying your eligibility. We record certain usage data for security, support, and reporting purposes.
<a href="https://www.enervee.com/privacy" target="_blank" rel="noreferrer noopener">See how your data is managed.</a></ng-transclude> </div>
</div>
</div>
<div class="row align-right">
<div class="col-xs-12"> <button type="button" data-eid="shipping-address-cancel-btn" class="btn btn-link text-muted" ng-click="vm.onCancel('cancel')" data-dismiss="modal"> <ng-transclude ng-bind-html="content | trust"
data-section-key="base:modals:cancel_text" class="ng-binding ng-isolate-scope">Cancel</ng-transclude> </button> <button type="submit" data-eid="shipping-address-submit-btn" ng-click="vm.onSubmit()" class="btn btn-accent">
<!-- ngIf: !vm.isSubmitting --><ng-transclude ng-bind-html="content | trust" ng-if="!vm.isSubmitting" data-section-key="base:modals:next_text"
class="ng-binding ng-scope ng-isolate-scope">Next</ng-transclude><!-- end ngIf: !vm.isSubmitting -->
<loaders ng-show="vm.isSubmitting" class="ng-isolate-scope ng-hide">
<div class="loader" ng-class="{small: isSmall}"> <!-- ngIf: !blockArray -->
<div class="loader-style-local ng-scope" ng-if="!blockArray">
<div class="loader-graphic"> <svg class="score-spinner" xmlns="http://www.w3.org/2000/svg" width="240" height="240" viewBox="0 0 240 240" version="1.1">
<title>Loading</title>
<g style="fill-rule:evenodd">
<path class="inner"
d="M202.835 89.368C198.193 76.923 190.826 65.821 181.469 56.778 165.239 41.098 143.025 31.598 118.68 32.013 110.565 32.153 104.094 38.847 104.234 46.962 104.374 55.077 111.063 61.543 119.178 61.409 135.413 61.134 150.228 67.46 161.044 77.914 171.861 88.372 178.69 102.959 178.965 119.189L178.968 119.189C178.979 119.856 178.979 120.526 178.967 121.198 178.833 129.313 185.299 136.002 193.414 136.142 201.529 136.282 208.223 129.811 208.363 121.696 208.557 110.324 206.587 99.417 202.835 89.368L202.835 89.368Z">
</path>
</g>
</svg> </div> <!-- ngIf: displayText -->
</div><!-- end ngIf: !blockArray --> <!-- ngIf: blockArray -->
</div>
</loaders>
</button> </div>
</div>
</form>
Text Content
back Search for a product Type a product name... Searching... We didn't find a match Are we missing something? Let us know! * Kitchen * Cooktops , products available for checkout * Dishwashers , products available for checkout * Freezers , products available for checkout * Ovens , products available for checkout * Ranges , products available for checkout * Range Hoods , products available for checkout * Refrigerators , products available for checkout * Electronics * Monitors , products available for checkout * Projectors , products available for checkout * Sound Bars , products available for checkout * Televisions , products available for checkout * Home & Office * Air Purifiers , products available for checkout * Connected Homes , products available for checkout * Dehumidifiers , products available for checkout * EV Chargers , products available for checkout * Light Bulbs , products available for checkout * Power Strips , products available for checkout * Heating, Cooling, and Water Heating * Air Conditioners , products available for checkout * Electric Water Heaters * Evaporative Coolers , products available for checkout * Gas Water Heaters , products available for checkout * Thermostats , products available for checkout * Lawn & Garden * Lawn Mowers , products available for checkout * Leaf Blowers , products available for checkout * Pool Heaters * Pool Pumps * Trimmers , products available for checkout * Laundry * Dryers , products available for checkout * Washers , products available for checkout * Safety & Preparedness * Portable Power Stations , products available for checkout * Water * Shower Heads Direct Purchase your email address * Please enter your email address Your email and password will be used to allow you to sign in securely and access your data. We record certain usage data for security, support, and reporting purposes. See how your data is managed. Submit By proceeding, you are agreeing to the Northwest Marketplace Terms and Conditions and Privacy Policy. COMPLETE YOUR ACCOUNT your password * Please enter your password Retype your password * Retype your password Save password Loading * Use a different email Change Locations Changing locations will empty and reset the cart. You will need to add the items again to check availability in your area. Do you want to continue? Continue Welcome! Don't have an account? Create an account. If you have an existing account, please enter your password below. your password * Please enter your password Forgot your password? Log in * Use a different email Reset your password We've sent a password reset link to Back to login Not your email? Enter your current and new password current password * Please enter your password new password * Please enter your password confirm new password * Please enter your password Submit Welcome! To access your account, we first need for you to activate it and set a password. Email me my activation link Not your email? Enter your password to delete your account password Submit Welcome to the Northwest Marketplace The Northwest Marketplace is a regional utility collaborative brought to you by the Northwest Energy Efficiency Alliance. Customers across Idaho, Montana, Oregon, and Washington can find and shop energy-saving products—and enjoy the benefits of energy efficiency. previous next 1. slide 1 of 1, currently active Got it! your email address Email Me Rebate Information Have your receipt? Upload it now Upload your receipt below: Receipt Login To Submit Your Receipt Upload your receipt below: Receipt Login To Submit Your Receipt Still looking? Save this info for later: I'm not ready! Email me rebate information. Get Rebate Info Start new order? All items in your cart from will be replaced by this item from . Each transaction can only include products from the same retailer. Keep existing cart Start new order Loading Select a fulfillment partner The retailer you choose will process and ship your order as well as handle any returns. Price Transparency Guarantee No last minute surprises or expenses—see the full cost, including installation, materials, and labor that others may not include. Instant Online Quote: No pre-installation contractor visit required. Your Installation Includes: * Labor to install new appliance by a CSLB licensed contractor * All permitting necessary * Haul-away and recycle of old water heater * Materials to install new appliance, including: * Recirculating pump (if applicable) * All necessary fittings * Thermostatic mixing valve * Hot and cold flex lines * Earthquake scrapes * Drip pan * Isolation valves (service) Best-in-Class Warranties: * The Water Heater Warehouse warranty includes: * 2 year warranty on combined PARTS and LABOR * The Manufacturer warranty includes: * Up to 25 year warranty on heat exchanger * 5 year warranty on parts * 1 year warranty on labor Continue Shopping Cancel Close Your cart Please note: your cart will expire after 3 days. Your cart is empty Continue Loading We need to verify your eligibility as a resident of Idaho, Montana, Oregon, or Washington. After you’ve been verified, you can continue to payment. Make easy monthly payments over 60 months for as low as 9.02% APR /month based on a purchase price of for as low as 9.02% APR for 60 months. Available on products starting at $200 and up to a total purchase of $5,000. Easy credit. Minimum credit score of 580*. Low rates. Much lower than standard credit cards.1 State-backed. Applying does not affect your credit score.† Loans through Eco Financing are made by Lewis & Clark Bank, Member FDIC, only available in CA and NY. Pre-qualification will not impact your credit score. In order to get final approval for your loan, a hard credit pull will be conducted which will impact your credit score. Disclosure: *© Eco Financing "as low as" Annual Percentage Rate (APR) is effective as of 1/1/2023, is based on creditworthiness, underwriting factors, and information obtained by third party companies. It is our best rate which includes an incentive rate discount for setting up automatic monthly loan payments at loan origination and is subject to loan approval. Monthly payment per $1,000 for 12 months at 9.99% is $87.91. A sample payment for a $1,000 for 60 months at 9.99% is $21.24. These payment examples are for illustration purposes only. Your actual payment may vary. All Eco Financing loan programs, rates, terms, and conditions are subject to change without prior notice. Minimum Experian Vantage Score 4.0 of 580 to qualify. Other underwriting factors apply. Eco Financing by Enervee loan programs are owned and funded by Lewis & Clark Bank, Member FDIC. †Applying will not impact your credit score. Once a loan is approved and monies are received, it will, like all loans, impact your credit score. Loan repayment history is reported to the major credit bureaus and will affect your credit based on your repayment history. Learn more Close "Energy savings" are an estimate of how much energy a specific product saves compared to a typical new model with similar features. Your savings could be even higher if you're replacing an old model. "Net payment after potential savings" does not reflect what your final monthly bill will be. It provides a simple way to visualize the potential cost savings achievable by purchasing and efficient product. Close Update your location Receive more accurate service and availability estimates by updating your zip code ZIP Cancel Confirm Confirm Cancel First Name * First Name is required Last Name * Last Name is required Phone Number * Phone Number is required Email * Email is required Address Line 1 * Address Line 1 is required Address Line 2 City * City is required State ALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKORPARISCSDTNTXUTVTVAWAWVWIWY * State is required ZIP * ZIP is required We use your information (such as name and address) for verifying your eligibility. We record certain usage data for security, support, and reporting purposes. See how your data is managed. Cancel Next Loading Continue Cancel Brought to you by the Northwest Energy Efficiency Alliance and your Idaho, Montana, Oregon, and Washington utilities. Navigation Sign in * My Account * Favorite Products * Saved Searches * Orders * Account Settings * Email Settings * Logout * Get help * Benefits of the Marketplace Sign in IMPROVE YOUR EXPERIENCE You're using a web browser that we don't support. Try one of the supported options below. Google Chrome Mozilla Firefox Microsoft Edge Watch Our Video NORTHWEST MARKETPLACE Saving Northwest residents energy, money, and time * 1 * 2 * 3 Search by type, brand, model... Search... Search * Televisions , extra incentives available , products available for checkout * Dryers , extra incentives available , products available for checkout * Washers , extra incentives available , products available for checkout * Dishwashers , extra incentives available , products available for checkout * Explore More Categories WE HELP YOU FIND YOUR PERFECT PRODUCT THE ENERVEE SCORE This score compares the product's energy efficiency to other available products. ALL REVIEWS IN ONE PLACE One rating that combines reviews from leading retailers and trusted experts. GET THE BEST DEALS Track and get notified of price drops for your favorite products. CHECK OUT TOP MODELS IN POPULAR CATEGORIES Loading loading products... © 2024 Marketplace powered by Enervee | Enervee Privacy Policy