From simple silhouettes to complex designs — any shape, any size, any style, we bring your perfect custom design to life. And if you're looking for something truly unique, just give us a call at +1 (720) 627-7225. Our team will be happy to help you create almost any custom shape you can imagine!
Your home is your comfort zone and your cushions should feel just as cozy. At ZIPCushions, we craft custom indoor cushions that fit your furniture, your style, and your everyday life. Whether you're upgrading your dining nook, refreshing your mudroom seat, or replacing worn-out chair or bench pads, our cushions are made to measure. Choose from a wide selection of shapes, foam types, and fabrics to create the perfect fit - down to the last detail.
We design your cushions just the way you want. All you have to do is just select your desired shape and provide the measurements for a perfect fit. Then choose your fabric, colors, patterns to match your style and interiors. Once you are done, our team will meticulously craft your indoor custom cushion while ensuring the sturdy construction and attention to detail for a product that not only meets your expectations but keeps your style intact.
Foam and upholstery fill material is of the utmost importance while designing a cushion. To help you feel your seat just right, we offer a variety of foam options, including plush high density foam for form support, hybrid layers with memory foam for pressure relief or fiberfill for a pillow-like seat for your indoor chair pads or bench cushion. Whether prepping for the day, sink-in-feel for reading nooks, our cushions go beyond aesthetics. They are built to provide you with all day relaxation and resilience.
With thousands of fabrics to choose from, ranging from easy-to-clean basics to premium, textured designer collections, we make it easy to find the perfect look and performance for your space. From family-friendly polyesters to soft linens, cozy velvets, weatherproof acrylics, and premium fade-resistant Sunbrella®, we have it all. Irrespective of what your lifestyle is, we have got the fabric to match it. Our fabrics are designed for real life. You can use them around your pets and kids easily, as those muddy paw prints, juicy spills, and sticky fingers can all be cleaned up with the easy to clean and maintain materials .
We build our cushions with utmost care. Designed for durability, our fabrics, upholstery-grade materials, reinforced stitching, and polished finishing, the end-to-end customization process is handled with expert craftsmanship and design to make your chair seat cushions indoor last for years.
At ZIPCushions, you can design your custom cushions in just minutes with our user-friendly interface. Just select the size measurements, fabric, color, and fill, and leave the rest to us. We will design your indoor cushion chair with utmost care and will deliver it to your doorstep. We don't charge any shipping fees, irrespective of the size or shape you select.
Choose your product, Select Shape, input dimensions, select fabric, personalize & place your order!
: * * * ARCHITECTURE NOTE — why this is one-shot install: * The JS sends BOTH: * - pubsub_token: best-guess parsed source_id from cookie * - cookie_raw: the raw cookie value * The server tries to extract source_id from `pubsub_token` first; if that * fails (e.g. Chatwoot changes cookie format in a future version) it falls * back to decoding `cookie_raw` server-side. This means future Chatwoot * upgrades won't require theme re-uploads — just bot_server updates. */ (function () { 'use strict'; // ========================================================================= // CONFIG — replace with your bot_server's public URL // ========================================================================= var FLASK_SYNC_URL = 'https://monitors-truly-designer-postings.trycloudflare.com/cart-tracker/sync'; var DEBOUNCE_MS = 600; // ========================================================================= // HELPERS // ========================================================================= function getCookie(name) { var m = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)')); return m ? decodeURIComponent(m[3]) : null; } /** * Extract source_id from a Chatwoot cw_conversation cookie value. * Tries every known format. Returns null if none work — the server-side * fallback (cookie_raw) will handle it instead. */ function extractSourceId(raw) { if (!raw) return null; // Format 1: JWT with payload {source_id, inbox_id, exp, iat} if (raw.split('.').length === 3) { try { var payload = raw.split('.')[1]; // base64url -> base64 payload = payload.replace(/-/g, '+').replace(/_/g, '/'); while (payload.length % 4) payload += '='; var decoded = JSON.parse(atob(payload)); if (decoded.source_id) return decoded.source_id; if (decoded.pubsub_token) return decoded.pubsub_token; } catch (e) { /* fall through */ } } // Format 2: JSON object if (raw.charAt(0) === '{') { try { var parsed = JSON.parse(raw); return parsed.source_id || parsed.pubsub_token || parsed.token || null; } catch (e) { /* fall through */ } } // Format 3: looks like a plain UUID if (/^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i.test(raw)) { return raw; } return null; } function getChatwootIdentifier() { return (window.$chatwoot && window.$chatwoot.identifier) || null; } function getChatwootEmail() { return (window.$chatwoot && window.$chatwoot.user && window.$chatwoot.user.email) || null; } function fetchCart() { return fetch('/cart.js', { credentials: 'same-origin', headers: { 'Accept': 'application/json' }, }).then(function (r) { if (!r.ok) throw new Error('cart fetch failed: ' + r.status); return r.json(); }); } function pushSnapshot(reason) { var rawCookie = getCookie('cw_conversation'); if (!rawCookie) return; // Chatwoot widget hasn't set its cookie yet var sourceId = extractSourceId(rawCookie); fetchCart().then(function (cart) { var payload = { // Best-guess client-side parsed token. Server prefers this. pubsub_token: sourceId, // Raw cookie as fallback. If pubsub_token is null OR the server's // cart→conversation matching fails, the server can decode this itself. cookie_raw: rawCookie, identifier: getChatwootIdentifier(), email: getChatwootEmail(), cart: cart, shop_domain: window.location.host, reason: reason, client_version: 'v2', }; if (reason === 'unload' && navigator.sendBeacon) { var blob = new Blob([JSON.stringify(payload)], { type: 'application/json' }); navigator.sendBeacon(FLASK_SYNC_URL, blob); } else { fetch(FLASK_SYNC_URL, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(payload), keepalive: true, }).catch(function () { /* silent — never break shopper UX */ }); } }).catch(function () { /* silent */ }); } var debounceTimer = null; function pushDebounced(reason) { if (debounceTimer) clearTimeout(debounceTimer); debounceTimer = setTimeout(function () { pushSnapshot(reason); }, DEBOUNCE_MS); } // ========================================================================= // TRIGGER 1: Widget ready — initial sync // ========================================================================= window.addEventListener('chatwoot:ready', function () { pushSnapshot('widget_ready'); }); if (window.$chatwoot && window.$chatwoot.hasLoaded) { setTimeout(function () { pushSnapshot('widget_already_ready'); }, 500); } // ========================================================================= // TRIGGER 2: Cart mutations — intercept fetch + XHR to Shopify cart endpoints // ========================================================================= var CART_MUTATION_PATHS = [ '/cart/add', '/cart/update', '/cart/change', '/cart/clear', '/cart/add.js', '/cart/update.js', '/cart/change.js', '/cart/clear.js', ]; function isCartMutation(url) { if (!url) return false; var s = typeof url === 'string' ? url : (url.url || ''); for (var i = 0; i < CART_MUTATION_PATHS.length; i++) { if (s.indexOf(CART_MUTATION_PATHS[i]) !== -1) return true; } return false; } if (window.fetch) { var origFetch = window.fetch; window.fetch = function () { var urlArg = arguments[0]; var p = origFetch.apply(this, arguments); if (isCartMutation(urlArg)) { p.then(function () { pushDebounced('cart_mutation_fetch'); }).catch(function () {}); } return p; }; } if (window.XMLHttpRequest) { var OrigXHR = window.XMLHttpRequest; var origOpen = OrigXHR.prototype.open; var origSend = OrigXHR.prototype.send; OrigXHR.prototype.open = function (method, url) { this.__ccpCartMutation = isCartMutation(url); return origOpen.apply(this, arguments); }; OrigXHR.prototype.send = function () { var self = this; if (this.__ccpCartMutation) { this.addEventListener('loadend', function () { if (self.status >= 200 && self.status < 400) { pushDebounced('cart_mutation_xhr'); } }); } return origSend.apply(this, arguments); }; } // ========================================================================= // TRIGGER 3: Page unload — last-chance sync // ========================================================================= window.addEventListener('pagehide', function () { pushSnapshot('unload'); }); document.addEventListener('visibilitychange', function () { if (document.visibilityState === 'hidden') { pushSnapshot('visibility_hidden'); } }); })();