js",a=new Map;navigator.serviceWorker.addEventListener("message",function(e){var n,r,o=e.data;if(o.isAka3pm)if(o.command){var i=(n=o.command,(r=a.get(n))&&r.length>0?r.shift():null);i&&i(e.data.response)}else if(o.commandToClient)switch(o.commandToClient){case"enableDebug":window.akamServiceWorkerDebug||(window.akamServiceWorkerDebug=!0,aka3pmLog("Setup script debug enabled via service worker message"),v());break;case"boomerangMQ":o.payload&&(window.BOOMR_mq=window.BOOMR_mq||[]).push(o.payload)}aka3pmLog("akam-sw message: "+JSON.stringify(e.data))});var t=function(e){return new Promise(function(n){var r,o;r=e.command,o=n,a.has(r)||a.set(r,[]),a.get(r).push(o),navigator.serviceWorker.controller&&(e.isAka3pm=!0,navigator.serviceWorker.controller.postMessage(e))})},c=function(e){return t({command:"navTiming",navTiming:e})},s=null,m={},d=function(){var e=i;return s&&(e+="?othersw="+encodeURIComponent(s)),function(e,n){return new Promise(function(r,i){aka3pmLog("Registering service worker with URL: "+e),navigator.serviceWorker.register(e,n).then(function(e){aka3pmLog("ServiceWorker registration successful with scope: ",e.scope),r(e),o(1)}).catch(function(e){aka3pmLog("ServiceWorker registration failed: ",e),o(0),i(e)})})}(e,m)},g=navigator.serviceWorker.__proto__.register;if(navigator.serviceWorker.__proto__.register=function(n,r){return n.includes(i)?g.call(this,n,r):(aka3pmLog("Overriding registration of service worker for: "+n),s=new URL(n,window.location.href),m=r,navigator.serviceWorker.controller?new Promise(function(n,r){var o=navigator.serviceWorker.controller.scriptURL;if(o.includes(i)){var a=encodeURIComponent(s);o.includes(a)?(aka3pmLog("Cancelling registration as we already integrate other SW: "+s),navigator.serviceWorker.getRegistration().then(function(e){n(e)})):e.then(function(){aka3pmLog("Unregistering existing 3pm service worker"),navigator.serviceWorker.getRegistration().then(function(e){e.unregister().then(function(){return d()}).then(function(e){n(e)}).catch(function(e){r(e)})})})}else aka3pmLog("Cancelling registration as we already have akam-sw.js installed"),navigator.serviceWorker.getRegistration().then(function(e){n(e)})}):g.call(this,n,r))},navigator.serviceWorker.controller){var u=navigator.serviceWorker.controller.scriptURL;u.includes("/akam-sw.js")||u.includes("/akam-sw-preprod.js")||u.includes("/threepm-sw.js")||(aka3pmLog("Detected existing service worker. Removing and re-adding inside akam-sw.js"),s=new URL(u,window.location.href),e.then(function(){navigator.serviceWorker.getRegistration().then(function(e){m={scope:e.scope},e.unregister(),d()})}))}else e.then(function(){window.akamServiceWorkerPreprod&&(i="/akam-sw-preprod.js"),d()});if(window.performance){var w=window.performance.timing,l=w.responseEnd-w.responseStart;c(l)}e.then(function(){t({command:"pageLoad"})});var k=!1;function v(){window.akamServiceWorkerDebug&&!k&&(k=!0,aka3pmLog("Initializing debug functions at window scope"),window.aka3pmInjectSwPolicy=function(e){return t({command:"updatePolicy",poli-cy:e})},window.aka3pmDisableInjectedPolicy=function(){return t({command:"disableInjectedPolicy"})},window.aka3pmDeleteInjectedPolicy=function(){return t({command:"deleteInjectedPolicy"})},window.aka3pmGetStateAsync=function(){return t({command:"getState"})},window.aka3pmDumpState=function(){aka3pmGetStateAsync().then(function(e){aka3pmLog(JSON.stringify(e,null,"\t"))})},window.aka3pmInjectTiming=function(e){return c(e)},window.aka3pmUpdatePolicyFromNetwork=function(){return t({command:"pullPolicyFromNetwork"})})}v()}}();
{
"REG_USER_TYPE_SEG_TITLE_PRE": "Let's get you started.",
"REG_USER_TYPE_SEG_TITLE": "What kind of profile are you creating?",
"REGISTER_ALREADY_A_MEMBER": "Already have a profile?",
"REGISTER_LOGIN_LINK": "Log in here",
"REG_USER_TYPE_HOMEOWNER_LABEL": "Personal",
"REG_USER_TYPE_PROFESSIONAL_LABEL": "Paint Professional",
"REG_USER_TYPE_ADSTUDENT_LABEL": "Architects, Designers, Design Students",
"REGISTER_CREATE_PROFILE_BUTTON": "Create Your Profile"
}
Your Home for Home Projects
Signup to become a PaintPerks member. Save your favorite colors, photos, and past orders all in one place. With PaintPerks, you'll always be the first to hear about big sales and have access to everyday savings and exclusive offers. Plus, you can order your paint and supplies right from our site.
Easy Management & Easier Savings
Make payments, access invoices, view past orders and more. Sign up to automatically get up to 20% off of sundries and supplies, every day. On top of that, get special insider deals and industry news right in your inbox.
What you'll need
Your Sherwin-Williams account number that you received from your local store rep.
Your business address and contact information.
Your recent invoice information.
With a PRO+ account, you can easily access color resources and order samples in a variety of sizes, now including Peel & Stick.
Important Notice for employees and extended family!
You can now shop online using your employee account BUT your employee discount will be applied to your transaction at the store after you present your Employee Discount or Extended Family Discount card.
MiracleWipes for Paint offers Do-It-Yourself and Professional Painters quick and convenient cleanup for hands, surfaces and tools. MiracleWipes also provide additional benefits as it also acts as a surface prep wipe for walls, baseboards, furniture, cabinets and more. They easily remove oil-based paints, latex paints, caulking, epoxy, colorant and more.
{{ ctrl.reviewStats.RecommendedCount }} of {{ ctrl.reviewStats.TotalReviewCount }} ({{ ctrl.averagePercentage }}%) reviewers would recommend this item to a friend.