Woods Coffee | Roastery & Bakery
Posted by:
Category:
Comments:
Post Date:
Woods Coffee | Roastery & Bakery
[]
Woods Coffee | Roastery & Bakery [*] `form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(',');function s(t,e,n=!1){try{const o=window.sessionStorage;for(const[n,c]of Object.entries(JSON.parse(o.getItem(e))))t.elements[n]&&(t.elements[n].value=c);n&&o.removeItem(e)}catch{}}const a='form_key',i=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response','password'],u=()=>{try{return window.sessionStorage}catch{return}},m=t=>t.elements[a],f='form_type',d='cptcha';function p(t){t.dataset[d]=!0}const l=window,h=l.document,_='Shopify',y='ce_forms',E='captcha';let v=!1;((t,e)=>{const n=(g='f06e6c50-85a8-45c8-87d0-21a2b65856fe','https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js',T={infoText:'Protected by hCaptcha',privacyText:'Privacy',termsText:'Terms'},(t,e,n)=>{const o=l[_][y],c=o.bindForm;if(c)return c(t,g,e,T).then(n);o.q.push([[t,g,e,T],n]),v||(h.body.append(Object.assign(h.createElement('script'),{id:'captcha-provider',async:!0,src:'https://cdn.shopify.com/shopifycloud/storefront-forms-hcaptcha/ce_storefront_forms_captcha_hcaptcha.v1.4.0.iife.js'})),v=!0)});var g,T;l[_]=l[_]||{},l[_][y]=l[_][y]||{},l[_][y].q=[],l[_][E]=l[_][E]||{},l[_][E].protect=function(t,e){n(t,void 0,e),p(t)},Object.freeze(l[_][E]),function(t,e,n,l,h,_){const[y,E,v,g]=function(t,e,n){const s=e?o:[],a=t?c:[],i=[...s,...a],u=[...o],m=r(i),f=r(s),d=n&&r(i.filter((([t,e])=>n.includes(e)))),p=r(u),l=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];return[l(m),l(f),l(d),l(p)]}(l,h,_),T=t=>{const e=t.target;return e instanceof HTMLFormElement?e:e&&e.form},S=t=>y().includes(t);t.addEventListener('submit',(t=>{const e=T(t);if(!e)return;const n=S(e)&&!e.dataset.hcaptchaBound&&!e.dataset.recaptchaBound,o=m(e),c=g().includes(e)&&(!o||!o.value);(n||c)&&t.preventDefault(),c&&!n&&(function(t){try{if(!u())return;!function(t){const e=u();if(!e)return;const n=m(t);if(!n)return;const o=n.value;o&&e.removeItem(o)}(t);const e=Array.from(Array(32),(()=>Math.random().toString(36)[2])).join('');!function(t,e){m(t)||t.append(Object.assign(document.createElement('input'),{type:'hidden',name:a})),t.elements[a].value=e}(t,e),function(t,e){const n=u();if(!n)return;const o=[...t.querySelectorAll('input[type="password"]')].map((({name:t})=>t)),c=[...i,...o],r={};for(const[s,a]of new FormData(t).entries())c.includes(s)||(r[s]=a);n.setItem(e,JSON.stringify(r))}(t,e)}catch(e){console.error('failed to persist form',e)}}(e),e.submit())}));const w=(t,e)=>{t&&!t.dataset[d]&&(n(t,e.some((e=>e===t))),p(t))};for(const o of['focusin','change'])t.addEventListener(o,(t=>{const e=T(t);S(e)&&w(e,E())}));const A=e.get('form_key'),b=e.get(f),I=A&&b;t.addEventListener('DOMContentLoaded',(()=>{const t=E();if(I)for(const e of t)e.elements[f].value===b&&s(e,A);[...new Set([...v(),...y().filter((t=>'true'===t.dataset.shopifyCaptcha))])].forEach((e=>w(e,t)))}))}(h,new URLSearchParams(l.location.search),n,!0,!0,['guest_login'])})()}();]]> {let c=o.firstChild;for(;c;)c.nodeType===Node.TEXT_NODE?c.textContent=c.textContent.replace(e,'hCaptcha'):c.nodeType===Node.ELEMENT_NODE&&t(c),c=c.nextSibling};document.addEventListener('DOMContentLoaded',(()=>{(e=>{const o=document.querySelector('p[data-spam-detection-disclaimer]');if(o){for(const e of['terms','privacy']){const t=o.querySelector(`a[href*='https://policies.google.com/${e}']`);t&&(t.href=`https://hcaptcha.com/${e}`)}t(o)}})()}))}();]]> { const accountPath = '/account' if (showSubscriptionsLink && location.pathname === accountPath) { addSubscriptionsUrl() } const addressesPath = '/account/addresses' if (showAddressChangeNote && location.pathname === addressesPath) { addAddressChangeNote() } const accountLoginPath = '/account/login' if (showCustomerLoginNote && location.pathname === accountLoginPath) { addCustomerLoginNote() } }, { once: true }); const portalPage = (() => { const match = location.search.match(/[?&]pw-page=([^&]+)/); return match ? decodeURIComponent(match[1]) : null; })() if (!portalPage) { return; } document.querySelector('html').classList.add('paywhirl-customer-portal'); function addSubscriptionsUrl() { const addressesLinkElements = document.querySelectorAll('[href="/account/addresses"]'); Array.from(addressesLinkElements).forEach((addressesLinkElement) => { let targetElement = addressesLinkElement; let snippet = new DocumentFragment(); const subscriptionLinkElement = document.createElement('A'); const linkClasses = addressesLinkElement.getAttribute('class'); subscriptionLinkElement.innerHTML = t('general:account-subscriptions-link', 'My Subscriptions'); subscriptionLinkElement.setAttribute('href', '/account?pw-page=%2F'); linkClasses && subscriptionLinkElement.setAttribute('class', linkClasses); if (!targetElement.nextElementSibling && !targetElement.previousElementSibling) { targetElement = addressesLinkElement.parentElement; const container = document.createElement(targetElement.tagName); const containerClasses = targetElement.getAttribute('class'); containerClasses && container.setAttribute('class', containerClasses); snippet = container; } snippet.appendChild(subscriptionLinkElement); targetElement.after(snippet) const targetDisplayStyle = window.getComputedStyle(targetElement).display; if (['inline', 'inline-block'].includes(targetDisplayStyle)) { targetElement.after(document.createElement('BR')) } }); } function addAddressChangeNote() { const addressesPath = '/account/addresses' const forms = document.querySelectorAll('form[action^="' + addressesPath + '"]') Array.from(forms).forEach((form) => { const submitButton = form.querySelector('[type="submit"]') const infoText = document.createElement('P') const subscriptionsLink = t('general:account-subscriptions-link', 'my subscriptions').toLowerCase() const text = t('general:default-address-change-note', "Changing your default address does not affect existing subscriptions. If you'd like to change your delivery address for recurring orders, please visit the _SUBSCRIPTIONS_LINK_ page") infoText.innerHTML = text.replace('_SUBSCRIPTIONS_LINK_', '' + subscriptionsLink + '') if (submitButton) { submitButton.parentElement.insertBefore(infoText, submitButton) return } const defaultAddressInput = form.querySelector('input[name="address[default]"]') if (defaultAddressInput) { defaultAddressInput.parentElement.insertBefore(infoText, defaultAddressInput) } }) } function addCustomerLoginNote() { const accountLoginPath = '/account/login' const forms = document.querySelectorAll('form[action^="' + accountLoginPath + '"]') Array.from(forms).forEach((form) => { const textNote = document.createElement('P') textNote.innerHTML = t('general:customer-login-page-note', 'In order to access your subscriptions, create an account with the same email address') form.append(textNote) }) } function t(key, defaultValue) { const settings = null; const defaultKey = `default:${key}`; const localeKey = `${locale}:${key}`; const translations = settings && settings.translations ? settings.translations : {}; const defaultTranslation = translations[defaultKey] ? translations[defaultKey] : defaultValue; return translations[localeKey] ? translations[localeKey] : defaultTranslation; } const template = ` Skip to content
(?:|)$/i;function D(e,n,r){return b(n)?E.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?E.grep(e,function(e){return e===n!==r}):"string"!=typeof n?E.grep(e,function(e){return-1]*|#([w-]+))$/;(E.fn.init=function(e,t,n)).prototype=E.fn,L=E(w);var q=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}E.fn.extend({has:function(e){var t=E(e,this),n=t.length;return this.filter(function(){for(var e=0;e",""],col:[2,"",""],tr:[2,"
",""],td:[3,"
.visually-hidden', '.price .price-item--regular', '.product__price .price-item--regular', '.product__price .product__price--reg', '.product__price .product__current-price', '.product-single__price', '[data-pf-type="ProductPrice"]', '[id^=productPrice-]' ].join(','); var $container = $wrapper.find(containerSel); if ($container.length === 0) { console.log('PayWhirl: Price container element could not be found. Contact our support for assistance.'); return; } // Update content of the price node if (this.theme === 'supply') { price = prices.price_formatted.split('.'); $container.html(price[0] + '' + price[1] + ''); } else { $container.html(prices.price_formatted); } }, /* * Translations */ translations: { en: { 'plan-selector-title': 'Purchase options', 'one-time-purchase-label': 'One-time purchase', }, pl: { 'plan-selector-title': 'Opcje zakupu', 'one-time-purchase-label': 'Jednorazowy zakup', } } }; ]]>
Source
About Woods Coffee
For over 20 years, we’ve been (just a little) obsessed with roasting delicious coffee, hand-crafting dreamy baked goods—made fresh in our scratch bakery, and, of course, creating spaces where friends can enjoy conversations in front of our cozy fireplaces.
Visit any of our Pacific Northwest-inspired coffee shops throughout Western Washington, and you'll find a welcoming space that feels like a cabin in the woods. So bring your adventurous spirit, and head over to a Woods Coffee location near you.
In a rush? Many of our locations also feature a drive-thru to get you back on the road faster. For even quicker service, Order Ahead, and we’ll have your order ready for you when you get here. We’ll see you soon!
Start a coffee subscription today!
Give the gift of a coffee subscription, or make sure you never run out of coffee at home.
SUBSCRIBE NOWROASTED FRESH DAILY
Enjoy the freshest coffee shipped directly to your door.
ORDER NOWLoyalty, Gift Cards, & Mobile Pay!
We are in the process of switching to “Square” as our new point of sale provider.
This change comes with many exciting features that will make your experience quick and easy. Learn More
Transfer your existing points ⟶
More than Just Coffee: Woods Coffee Story

Woods Cards
Woods Cards are the perfect gift for friends and family.
ViewGrind for: Whole Bean (None) Cold Brew Cone Filter Drip Flat Bottom Filter Drip Turkish Espresso French Press
Whole Bean (None) - $17.99 USD Cold Brew - $17.99 USD Cone Filter Drip - $17.99 USD Flat Bottom Filter Drip - $17.99 USD Turkish - $17.99 USD Espresso - $17.99 USD French Press - $17.99 USD Purchase optionsQuantity
Your cart is currently empty.
Enable cookies to use the shopping cart
Special instructions for seller
- Choosing a selection results in a full page refresh.
- Press the space key then arrow keys to make a selection.
Source
Share this post
Related
Posts
Coffee
Ralph Fisher says “Get Away From It All At Cold Mountain Lodge”. Come enjoy our rustic mountain cabin located at 861 Little East Fork Canton, North Carolina 28716. A unique mountain cabin strategically placed at the base of the beautiful, historic and unforgettable Cold Mountain.
Get Away From It All At Cold Mountain Lodge [View Our Newsletter * Click Here ] * CLICK HERE...
Coffee
Lost Sock Roasters
Lost Sock Roasters `form[action*='/${t}']:not([data-nocaptcha='true']) input[name='form_type'][value='${e}']`)).join(','),a=t=>()=>t?[...document.querySelectorAll(t)].map((t=>t.form)):[];function s(){const t=[...o],e=r(t);return a(e)}const i='password',u='form_key',d=['recaptcha-v3-token','g-recaptcha-response','h-captcha-response',i],f=()=>{try{return window.sessionStorage}catch{return}},m='__shopify_v',_=t=>t.elements[u];function p(t,e,n=!1){try{const o=window.sessionStorage,c=JSON.parse(o.getItem(e)),{data:r}=function(t){const{data:e,action:n}=t;return t[m]||n?{data:e,action:n}:{data:t,action:n}}(c);for(const[e,n]of Object.entries(r))t.elements[e]&&(t.elements[e].value=n);n&&o.removeItem(e)}catch(o){console.error('form repopulation failed',{error:o})}}const l='form_type',E='cptcha';function T(t){t.dataset[E]=!0}const w=window,h=w.document,L='Shopify',v='ce_forms',y='captcha';let A=!1;((t,e)=>{const...
Coffee
Home – Griddle & Grind Cafe
What started as just a dream for Shayleen and Sierra has quickly turned into reality... and they couldn’t be more...
Coffee
Home | Wired Cup Cafe 717-715-5040
Wired Cup Cafe is an independently run cafe with a nostalgic, big city vibe. Situated in the small town of...