{"@context":"https:\/\/schema.org","@type":"WebPage","metadata":{"page_id":46479,"page_name":"specials---black-friday-2025","domain":"www.homefirestove.com","url":"https:\/\/www.homefirestove.com\/specials---black-friday-2025","generated_at":"2026-04-15T20:00:55-07:00","last_modified":"2026-04-15T20:00:55-07:00"},"content":{"complete_text":"\r\n    Black Friday Deals!\r\n\r\n\r\n    Get up to $700 off qualifying products during our storewide Black Friday sale!\r\n\r\n\r\n    Sale runs from November 24th - December 1st.\r\n\n\n\r\n  #b_sec_311386 {z-index:200;}\r\n\n\n\r\n         Let us know if you love any of these. All of them are on sale!\r\n    \n\n\r\n    Specials&nbsp;\r\n\r\n\r\n\r\n    Inventory Reduction Happening Now!*\r\n\r\n\r\n    Heat up your home and cool down your costs with our spectacular Inventory Reduction Sale running April 5th through May 3rd! This limited time opportunity means you need to act fast to save up to $2,000 off, including venting! Take advantage of tax credits available up to $2,000 on qualifying wood and gas fireplaces, stoves, inserts and fire products. We're proud to offer no tariffs, just deals on all your favorite brands. And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.&nbsp;&nbsp; &nbsp; &nbsp;*See store for details\r\n\r\n    \n\n\r\n    \r\n        \r\n            \r\n                \r\n                  \r\n                  \r\n            \r\n            First of all, i want to say I dealt with Leah and Chad and was very impressed with their knowledge about their products and how helpful they were. The also informed me about an upcoming sale. I took advantage of that! I was also given new estimates at the sale price. Also, I was extremely happy with the installation of my new gas insert by Josh and Preston. They were polite and efficient and worked diligently to get the job finished in a timely manner. I would highly recommend Home Fire Store to my family and friends.\r\n            Lana West \r\n            \r\n        \r\n    \r\n\n\n\r\n    FINANCING SPECIALS*\r\n\r\n\r\n    We now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here.\r\n\r\n\r\n    *See store for details\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n    ALL GAS APPLIANCES&nbsp;\r\n\r\n\r\n    Save $150.00 off&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n    WHAT IS THE USA ENERGY&nbsp;TAX CREDIT?\r\n\r\n\r\n    Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.\r\n\r\n\r\n    The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.\r\n\r\n\r\n    More info can be found here:&nbsp;Travis Industries\r\n\n\n\r\n    No Fair Sale\r\n\r\n\r\n    August 22nd - September 6th\r\n\r\n\r\n    We skipped the fair\u2026 so you can skip the lines.\r\n    This is our biggest sale of the year!\n\n\r\n#bi_626062 {\r\nz-index:11;\r\n  }\r\n\n\n\r\n\r\n\r\n\r\n\r\n\r\n    .carousel-container {\r\n      overflow: hidden;\r\n      position: relative;\r\n      width: 100%;\r\n    }\r\n    \r\n    .carousel {\r\n      display: flex;\r\n      transition: transform 0.5s ease-in-out;\r\n    }\r\n    \r\n    .carousel-item {\r\n      flex: 0 0 auto;\r\n    }\r\n    \r\n    .carousel-control {\r\n      position: absolute;\r\n      top: 50%;\r\n      transform: translateY(-50%);\r\n      background-color: rgba(0, 0, 0, 0.5);\r\n      color: white;\r\n      border: none;\r\n      border-radius: 50%;\r\n      width: 40px;\r\n      height: 40px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      cursor: pointer;\r\n      z-index: 10;\r\n      font-size: 18px;\r\n      -webkit-tap-highlight-color: transparent;\r\n      user-select: none;\r\n    }\r\n    \r\n    .carousel-prev {\r\n      left: 10px;\r\n    }\r\n    \r\n    .carousel-next {\r\n      right: 10px;\r\n    }\r\n    \r\n    .carousel-indicator {\r\n      display: flex;\r\n      justify-content: center;\r\n      margin-top: 10px;\r\n    }\r\n    \r\n    .indicator-dot {\r\n      width: 10px;\r\n      height: 10px;\r\n      border-radius: 50%;\r\n      background-color: #ccc;\r\n      margin: 0 5px;\r\n      cursor: pointer;\r\n      -webkit-tap-highlight-color: transparent;\r\n    }\r\n    \r\n    .indicator-dot.active {\r\n      background-color: #333;\r\n    }\r\n\r\n\r\n\r\n\r\n  \r\n    \r\n      \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n      \r\n      \r\n      \r\n      \r\n        \r\n      \r\n      \r\n        \r\n      \r\n    \r\n    \r\n    \r\n  \r\n\r\n\r\n\r\n  \/\/ Immediately-invoked function expression (IIFE) to avoid global scope pollution\r\n  (function() {\r\n    \/\/ Unique identifier to avoid conflicts with other carousels on the page\r\n    const carouselId = \"42857\";\r\n    \r\n    \/\/ Carousel state\r\n    let carouselState = {\r\n      currentIndex: 0,\r\n      isTransitioning: false,\r\n      totalItems: 0,\r\n      visibleItems: 3,\r\n      initialized: false,\r\n      carousel: null,\r\n      originalItems: null,\r\n      indicator: null,\r\n      prevBtn: null,\r\n      nextBtn: null\r\n    };\r\n    \r\n    \/\/ Function to get elements with the unique ID\r\n    function getElement(id) {\r\n      return document.getElementById(id + \"-\" + carouselId);\r\n    }\r\n    \r\n    \/\/ Navigation functions\r\n    function prevSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex--;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function nextSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex++;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function goToSlide(index) {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex = index;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    \/\/ Update carousel position\r\n    function updateCarousel(animate = true) {\r\n      \/\/ 3 is the number of clones we added at the beginning\r\n      const offset = 3; \r\n      \/\/ Calculate the transform value based on current index and item width\r\n      const transformValue = -(carouselState.currentIndex + offset) * (100 \/ carouselState.visibleItems) + '%';\r\n      \r\n      \/\/ Apply or remove transition based on whether we want animation\r\n      if (!animate) {\r\n        carouselState.carousel.style.transition = 'none';\r\n      } else {\r\n        carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n      }\r\n      \r\n      carouselState.carousel.style.transform = `translateX(${transformValue})`;\r\n      updateIndicator();\r\n      \r\n      \/\/ If we disabled transition, re-enable it after the transform is applied\r\n      if (!animate) {\r\n        setTimeout(() => {\r\n          carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n        }, 50);\r\n      }\r\n    }\r\n    \r\n    \/\/ Update indicator dots\r\n    function updateIndicator() {\r\n      const dots = carouselState.indicator.querySelectorAll('.indicator-dot');\r\n      dots.forEach((dot, index) => {\r\n        if (index === carouselState.currentIndex) {\r\n          dot.classList.add('active');\r\n        } else {\r\n          dot.classList.remove('active');\r\n        }\r\n      });\r\n    }\r\n    \r\n    \/\/ Handle transition end (for infinite scrolling)\r\n    function handleTransitionEnd() {\r\n      \/\/ Check if we've moved past the beginning of original items\r\n      if (carouselState.currentIndex < 0) {\r\n        carouselState.currentIndex = carouselState.totalItems - 1;\r\n        updateCarousel(false);\r\n      }\r\n      \/\/ Check if we've moved past the end of original items\r\n      else if (carouselState.currentIndex >= carouselState.totalItems) {\r\n        carouselState.currentIndex = 0;\r\n        updateCarousel(false);\r\n      }\r\n      \r\n      carouselState.isTransitioning = false;\r\n    }\r\n    \r\n    \/\/ Update visible items based on screen size\r\n    function updateVisibleItems() {\r\n      if (window.innerWidth < 768) {\r\n        carouselState.visibleItems = 1; \/\/ Mobile: 1 item visible\r\n      } else if (window.innerWidth < 1024) {\r\n        carouselState.visibleItems = 2; \/\/ Tablet: 2 items visible\r\n      } else {\r\n        carouselState.visibleItems = 3; \/\/ Desktop: 3 items visible\r\n      }\r\n      updateCarousel(false);\r\n    }\r\n    \r\n    \/\/ Initialize the carousel\r\n    function initCarousel() {\r\n      \/\/ Prevent double initialization\r\n      if (carouselState.initialized) return;\r\n      \r\n      \/\/ Get DOM elements\r\n      carouselState.carousel = getElement(\"carousel\");\r\n      carouselState.originalItems = carouselState.carousel.querySelectorAll('.carousel-item.original');\r\n      carouselState.indicator = getElement(\"indicator\");\r\n      carouselState.prevBtn = getElement(\"prev\");\r\n      carouselState.nextBtn = getElement(\"next\");\r\n      \r\n      \/\/ Check if elements exist\r\n      if (!carouselState.carousel || !carouselState.indicator || !carouselState.prevBtn || !carouselState.nextBtn) {\r\n        console.error(\"Carousel elements not found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      carouselState.totalItems = carouselState.originalItems.length;\r\n      \r\n      if (carouselState.totalItems === 0) {\r\n        console.error(\"No carousel items found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Create indicator dots\r\n      for (let i = 0; i < carouselState.totalItems; i++) {\r\n        const dot = document.createElement('div');\r\n        dot.classList.add('indicator-dot');\r\n        if (i === carouselState.currentIndex) dot.classList.add('active');\r\n        \r\n        \/\/ Use proper event listener instead of inline attribute\r\n        dot.addEventListener('click', function() {\r\n          goToSlide(i);\r\n        });\r\n        \r\n        carouselState.indicator.appendChild(dot);\r\n      }\r\n      \r\n      \/\/ Add event listeners\r\n      carouselState.carousel.addEventListener('transitionend', handleTransitionEnd);\r\n      carouselState.prevBtn.addEventListener('click', prevSlide);\r\n      carouselState.nextBtn.addEventListener('click', prevSlide); \/\/ Fix this typo\r\n      \r\n      \/\/ Fix the typo by adding the correct event listener\r\n      carouselState.nextBtn.addEventListener('click', nextSlide);\r\n      \r\n      \/\/ Add keyboard navigation\r\n      document.addEventListener('keydown', (e) => {\r\n        if (e.key === 'ArrowLeft') {\r\n          prevSlide();\r\n        } else if (e.key === 'ArrowRight') {\r\n          nextSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Add touch support\r\n      let touchStartX = 0;\r\n      let touchEndX = 0;\r\n      \r\n      carouselState.carousel.addEventListener('touchstart', (e) => {\r\n        touchStartX = e.changedTouches[0].screenX;\r\n      });\r\n      \r\n      carouselState.carousel.addEventListener('touchend', (e) => {\r\n        touchEndX = e.changedTouches[0].screenX;\r\n        if (touchEndX < touchStartX - 50) {\r\n          \/\/ Swipe left, go next\r\n          nextSlide();\r\n        } else if (touchEndX > touchStartX + 50) {\r\n          \/\/ Swipe right, go prev\r\n          prevSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Handle window resize\r\n      window.addEventListener('resize', updateVisibleItems);\r\n      \r\n      \/\/ Set initial position\r\n      updateVisibleItems();\r\n      \r\n      \/\/ Mark as initialized\r\n      carouselState.initialized = true;\r\n      \r\n      console.log('Carousel initialized with ' + carouselState.totalItems + ' items');\r\n    }\r\n    \r\n    \/\/ Try to initialize on DOMContentLoaded\r\n    if (document.readyState === 'loading') {\r\n      document.addEventListener('DOMContentLoaded', initCarousel);\r\n    } else {\r\n      \/\/ DOM already loaded, initialize now\r\n      initCarousel();\r\n    }\r\n    \r\n    \/\/ Backup initialization for AJAX loaded content\r\n    window.addEventListener('load', function() {\r\n      setTimeout(function() {\r\n        if (!carouselState.initialized) {\r\n          console.log('Initializing carousel after window load');\r\n          initCarousel();\r\n        }\r\n      }, 500);\r\n    });\r\n    \r\n    \/\/ Extra insurance for AJAX loaded content\r\n    \/\/ This will check every 500ms for 5 seconds if the carousel needs initialization\r\n    let initAttempts = 0;\r\n    const initInterval = setInterval(function() {\r\n      if (carouselState.initialized || initAttempts >= 10) {\r\n        clearInterval(initInterval);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Check if elements exist but carousel not initialized yet\r\n      const carouselElement = getElement(\"carousel\");\r\n      if (carouselElement && !carouselState.initialized) {\r\n        console.log('Initializing carousel from interval check');\r\n        initCarousel();\r\n      }\r\n      \r\n      initAttempts++;\r\n    }, 500);\r\n    \r\n    \/\/ Make navigation functions available globally with unique names for this carousel instance\r\n    window['prevSlide' + carouselId] = prevSlide;\r\n    window['nextSlide' + carouselId] = nextSlide;\r\n    window['goToSlide' + carouselId] = goToSlide;\r\n  })();\r\n\n\nSpecials&nbsp;\r\nInventory Reduction - Lots of Great Stoves to Choose From - See Store for Details.Take advantage of our newly-added specials! Hurry in: prices limited to stock on hand.&nbsp;\r\nFINANCING SPECIALS*\r\nWe now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here.\r\n*See store for details\r\nALL GAS APPLIANCES&nbsp;\r\nSave $150.00 off&nbsp;\r\n&nbsp;\r\n&nbsp;NEWSLETTER SIGNUP\r\nSignup for our newsletter&nbsp;and stay up to date on events, savings, and educational tips for our happy hearth product owners!\r\nWHAT IS THE USA ENERGY&nbsp;TAX CREDIT?\r\nEffective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.\r\nThe qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.\r\nMore info can be found here:&nbsp;Travis Industries","headings":[{"level":1,"text":"Black Friday Deals!","from_bloq":628438,"tag":"h1"},{"level":3,"text":"Get up to $700 off qualifying products during our storewide Black Friday sale!","from_bloq":628438,"tag":"h3"},{"level":1,"text":"Specials&nbsp;","from_bloq":628426,"tag":"h1"},{"level":2,"text":"Inventory Reduction Happening Now!*","from_bloq":628426,"tag":"h2"},{"level":3,"text":"FINANCING SPECIALS*","from_bloq":628416,"tag":"h3"},{"level":3,"text":"ALL GAS APPLIANCES&nbsp;","from_bloq":628416,"tag":"h3"},{"level":4,"text":"WHAT IS THE USA ENERGY&nbsp;TAX CREDIT?","from_bloq":628416,"tag":"h4"},{"level":1,"text":"No Fair Sale","from_bloq":628434,"tag":"h1"},{"level":2,"text":"August 22nd - September 6th","from_bloq":628434,"tag":"h2"},{"level":1,"text":"Specials&nbsp;","from_bloq":628417,"tag":"h1"}],"paragraphs":[{"text":"Let us know if you love any of these. All of them are on sale!","source_bloq_id":628428,"position":0},{"text":"Heat up your home and cool down your costs with our spectacular Inventory Reduction Sale running April 5th through May 3rd! This limited time opportunity means you need to act fast to save up to $2,000 off, including venting! Take advantage of tax credits available up to $2,000 on qualifying wood and gas fireplaces, stoves, inserts and fire products. We're proud to offer no tariffs, just deals on all your favorite brands. And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.\u00a0\u00a0 \u00a0 \u00a0*See store for details","source_bloq_id":628426,"position":0},{"text":"*See store for details","source_bloq_id":628416,"position":1},{"text":"\u00a0","source_bloq_id":628416,"position":1},{"text":"\u00a0","source_bloq_id":628416,"position":1},{"text":"\u00a0","source_bloq_id":628416,"position":1},{"text":"\u00a0","source_bloq_id":628416,"position":1},{"text":"Effective January 1, 2023, through December 31, 2025,\u00a0purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.\u00a0The total cost of the hearth product and installation is included in the 30% tax credit.","source_bloq_id":628416,"position":1},{"text":"The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","source_bloq_id":628416,"position":1},{"text":"More info can be found here:\u00a0Travis Industries","source_bloq_id":628416,"position":1},{"text":"We skipped the fair\u2026 so you can skip the lines.\r\n    This is our biggest sale of the year!","source_bloq_id":628434,"position":1},{"text":"Inventory Reduction - Lots of Great Stoves to Choose From - See Store for Details.Take advantage of our newly-added specials! Hurry in: prices limited to stock on hand.\u00a0","source_bloq_id":628417,"position":2},{"text":"FINANCING SPECIALS*","source_bloq_id":628417,"position":2},{"text":"*See store for details","source_bloq_id":628417,"position":2},{"text":"ALL GAS APPLIANCES\u00a0","source_bloq_id":628417,"position":2},{"text":"\u00a0NEWSLETTER SIGNUP","source_bloq_id":628417,"position":2},{"text":"WHAT IS THE USA ENERGY\u00a0TAX CREDIT?","source_bloq_id":628417,"position":2},{"text":"Effective January 1, 2023, through December 31, 2025,\u00a0purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.\u00a0The total cost of the hearth product and installation is included in the 30% tax credit.","source_bloq_id":628417,"position":2},{"text":"The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","source_bloq_id":628417,"position":2},{"text":"More info can be found here:\u00a0Travis Industries","source_bloq_id":628417,"position":2}],"sections":[{"section_id":"section_1","heading":"Black Friday Deals!","full_text":"Black Friday Deals! Get up to $700 off qualifying products during our storewide Black Friday sale! Sale runs from November 24th - December 1st.","source_bloq_id":628438,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":23,"citeable":true},{"section_id":"section_2","heading":"","full_text":"#b_sec_311386 {z-index:200;}","source_bloq_id":628430,"bloq_type":"bloq-htmls","position":0,"word_count":3,"citeable":true},{"section_id":"section_3","heading":"","full_text":"Let us know if you love any of these. All of them are on sale!","source_bloq_id":628428,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":15,"citeable":true},{"section_id":"section_4","heading":"Specials&nbsp;","full_text":"Specials&nbsp; Inventory Reduction Happening Now!* Heat up your home and cool down your costs with our spectacular Inventory Reduction Sale running April 5th through May 3rd! This limited time opportunity means you need to act fast to save up to $2,000 off, including venting! Take advantage of tax credits available up to $2,000 on qualifying wood and gas fireplaces, stoves, inserts and fire products. We're proud to offer no tariffs, just deals on all your favorite brands. And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.&nbsp;&nbsp; &nbsp; &nbsp;*See store for details","source_bloq_id":628426,"bloq_type":"bloq-rich-text-editors","position":0,"word_count":120,"citeable":true},{"section_id":"section_5","heading":"","full_text":"First of all, i want to say I dealt with Leah and Chad and was very impressed with their knowledge about their products and how helpful they were. The also informed me about an upcoming sale. I took advantage of that! I was also given new estimates at the sale price. Also, I was extremely happy with the installation of my new gas insert by Josh and Preston. They were polite and efficient and worked diligently to get the job finished in a timely manner. I would highly recommend Home Fire Store to my family and friends. Lana West","source_bloq_id":628420,"bloq_type":"bloq-htmls","position":0,"word_count":99,"citeable":true},{"section_id":"section_6","heading":"","full_text":"Visit Our Store","source_bloq_id":628442,"bloq_type":"bloq-buttons","position":1,"word_count":3,"citeable":true},{"section_id":"section_7","heading":"FINANCING SPECIALS*","full_text":"FINANCING SPECIALS* We now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here. *See store for details &nbsp; &nbsp; ALL GAS APPLIANCES&nbsp; Save $150.00 off&nbsp; &nbsp; &nbsp; WHAT IS THE USA ENERGY&nbsp;TAX CREDIT? Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit. The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed. More info can be found here:&nbsp;Travis Industries","source_bloq_id":628416,"bloq_type":"bloq-rich-text-editors","position":1,"word_count":119,"citeable":true},{"section_id":"section_8","heading":"No Fair Sale","full_text":"No Fair Sale August 22nd - September 6th We skipped the fair\u2026 so you can skip the lines. This is our biggest sale of the year!","source_bloq_id":628434,"bloq_type":"bloq-rich-text-editors","position":1,"word_count":26,"citeable":true},{"section_id":"section_9","heading":"","full_text":"#bi_626062 { z-index:11; }","source_bloq_id":628431,"bloq_type":"bloq-htmls","position":1,"word_count":2,"citeable":true},{"section_id":"section_10","heading":"","full_text":".carousel-container { overflow: hidden; position: relative; width: 100%; } .carousel { display: flex; transition: transform 0.5s ease-in-out; } .carousel-item { flex: 0 0 auto; } .carousel-control { position: absolute; top: 50%; transform: translateY(-50%); background-color: rgba(0, 0, 0, 0.5); color: white; border: none; border-radius: 50%; width: 40px; height: 40px; display: flex; align-items: center; justify-content: center; cursor: pointer; z-index: 10; font-size: 18px; -webkit-tap-highlight-color: transparent; user-select: none; } .carousel-prev { left: 10px; } .carousel-next { right: 10px; } .carousel-indicator { display: flex; justify-content: center; margin-top: 10px; } .indicator-dot { width: 10px; height: 10px; border-radius: 50%; background-color: #ccc; margin: 0 5px; cursor: pointer; -webkit-tap-highlight-color: transparent; } .indicator-dot.active { background-color: #333; }","source_bloq_id":628429,"bloq_type":"bloq-htmls","position":1,"word_count":79,"citeable":true},{"section_id":"section_11","heading":"","full_text":"See the Deals","source_bloq_id":628435,"bloq_type":"bloq-simple-buttons","position":2,"word_count":3,"citeable":true},{"section_id":"section_12","heading":"Specials&nbsp;","full_text":"Specials&nbsp; Inventory Reduction - Lots of Great Stoves to Choose From - See Store for Details.Take advantage of our newly-added specials! Hurry in: prices limited to stock on hand.&nbsp; FINANCING SPECIALS* We now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here. *See store for details ALL GAS APPLIANCES&nbsp; Save $150.00 off&nbsp; &nbsp; &nbsp;NEWSLETTER SIGNUP Signup for our newsletter&nbsp;and stay up to date on events, savings, and educational tips for our happy hearth product owners! WHAT IS THE USA ENERGY&nbsp;TAX CREDIT? Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit. The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed. More info can be found here:&nbsp;Travis Industries","source_bloq_id":628417,"bloq_type":"bloq-rich-text-editors","position":2,"word_count":173,"citeable":true}],"word_count":1346,"character_count":14277,"schema_description":"\r\n\r\n\r\n\r\n\r\n\r\n    .carousel-container {\r\n      overflow: hidden;\r\n      position: relative;\r\n      width: 100%;\r\n    }\r\n    \r\n    .carousel {\r\n      display: flex;\r\n      transition: transform 0.5s ease...","schema_enhanced":true,"last_schema_update":"2026-04-15 20:00:56 PDT"},"media":{"images":[{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Inventory-Reduction-LOGO-1743834039-640w.webp","alt":"\"Inventory Reduction Sale from April 5th to May 3rd with up to $2,000 off, including venting. Text in bold, colorful letters on a white background.\"","has_alt":true,"source_bloq_id":628425,"bloq_type":"bloq-images","position_in_page":0},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/download-coupon-with-shadow-1743835361.webp","alt":"An envelope holds several colorful coupons with codes and the text \"Download & Print Your Special Coupon\" on a red background; a yellow \"Download\" button is below.","has_alt":true,"source_bloq_id":628427,"bloq_type":"bloq-images","position_in_page":0},{"url":"\/\/cdn.bloqs.com\/4009-7163\/synchrony-ad-640w.webp","alt":"\"Banner showing a family using a laptop, and a Synchrony Home Credit Card. Text reads: 'Warm up your home with just one card. Synchrony Home Credit Card offers Promotional Financing.' Apply Now button included.\"","has_alt":true,"source_bloq_id":628423,"bloq_type":"bloq-images","position_in_page":0},{"url":"\/\/cdn.bloqs.com\/4009-7163\/stove-highlight-specials-640w.webp","alt":"A black stove with a fire burning inside sits against a textured red wall next to an electrical outlet. The stove is on a tiled base with a wooden floor surrounding it.","has_alt":true,"source_bloq_id":628421,"bloq_type":"bloq-images","position_in_page":0},{"url":"\/\/cdn.bloqs.com\/4009-7163\/HFS-Black-Friday-2025-Specials-1763669789-640w.webp","alt":"Black Friday deals banner showing various fire pits, a grill, and a stove on a red background. Text reads \"HUGE Savings Storewide! Sale Ends December 1st.\"","has_alt":true,"source_bloq_id":628436,"bloq_type":"bloq-images","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-6-1743831231.webp","alt":"Image 7 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-7-1743831241.webp","alt":"Image 6 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-4-1743831247.webp","alt":"Image 5 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-3-1743831275.webp","alt":"Image 1","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-1-1743831269.webp","alt":"Image 2","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-2-1743831262.webp","alt":"Image 3","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-5-1743831254.webp","alt":"Image 4","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-4-1743831247.webp","alt":"Image 5","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-7-1743831241.webp","alt":"Image 6","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-6-1743831231.webp","alt":"Image 7","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-3-1743831275.webp","alt":"Image 1 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-1-1743831269.webp","alt":"Image 2 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-2-1743831262.webp","alt":"Image 3 (Clone)","has_alt":true,"source_bloq_id":628429,"bloq_type":"bloq-htmls","position_in_page":1},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/HFS-No-Fair-Sale-2025-1755009977-640w.webp","alt":"Red and brown retro-styled sign with the words \"Home Fire Stove\" above large, lightbulb-bordered letters spelling \"No Fair Sale.\"","has_alt":true,"source_bloq_id":628432,"bloq_type":"bloq-images","position_in_page":2},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Inventory-Reduction-LOGO-1743834039.webp","alt":"\"Inventory Reduction Sale from April 5th to May 3rd with up to $2,000 off, including venting. Text in bold, colorful letters on a white background.\"","has_alt":true,"source":"schema_image","width":698,"height":560},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Stove-1763666947.webp","alt":"Black cast iron wood-burning stove with a glass door, showing a bright, roaring fire inside. The stove stands on four legs and has an elegant, classic design.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Grill-1763666941.webp","alt":"Black pellet grill with a digital control panel on the left, a chimney on top, and a side shelf. The grill is on wheels and has a small bucket attached underneath.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Fireplace-1763667192.webp","alt":"A modern, square, black fire pit with a visible flame on top. The sleek design features a smooth surface and a slightly elevated base, suitable for outdoor use.","has_alt":true,"source":"schema_gallery","is_gallery_image":true},{"url":"\/\/cdn.bloqs.com\/4009-7163\/synchrony-ad.webp","alt":"\"Banner showing a family using a laptop, and a Synchrony Home Credit Card. Text reads: 'Warm up your home with just one card. Synchrony Home Credit Card offers Promotional Financing.' Apply Now button included.\"","has_alt":true,"source":"schema_image","width":1600,"height":400},{"url":"\/\/cdn.bloqs.com\/4009-7163\/stove-highlight-specials.webp","alt":"A black stove with a fire burning inside sits against a textured red wall next to an electrical outlet. The stove is on a tiled base with a wooden floor surrounding it.","has_alt":true,"source":"schema_image","width":1183,"height":1999},{"url":"\/\/cdn.bloqs.com\/4009-7163\/HFS-Black-Friday-2025-Specials-1763669789.webp","alt":"Black Friday deals banner showing various fire pits, a grill, and a stove on a red background. Text reads \"HUGE Savings Storewide! Sale Ends December 1st.\"","has_alt":true,"source":"schema_image","width":1600,"height":533},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Final.webp","alt":"Save $150 on all gas appliances. See store for details. Living room with a fireplace, TV, couch, and a wooden coffee table. Shelves with decor items and books are on both sides of the fireplace.","has_alt":true,"source":"schema_image","width":1600,"height":560},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/HFS-No-Fair-Sale-2025-1755009977.webp","alt":"Red and brown retro-styled sign with the words \"Home Fire Stove\" above large, lightbulb-bordered letters spelling \"No Fair Sale.\"","has_alt":true,"source":"schema_image","width":1600,"height":1020}],"videos":[],"galleries":[{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Stove-1763666947.webp","description":"Black cast iron wood-burning stove with a glass door, showing a bright, roaring fire inside. The stove stands on four legs and has an elegant, classic design.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Grill-1763666941.webp","description":"Black pellet grill with a digital control panel on the left, a chimney on top, and a side shelf. The grill is on wheels and has a small bucket attached underneath.","source":"schema_gallery","in_gallery":true},{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Fireplace-1763667192.webp","description":"A modern, square, black fire pit with a visible flame on top. The sleek design features a smooth surface and a slightly elevated base, suitable for outdoor use.","source":"schema_gallery","in_gallery":true}]},"links":{"internal":[{"url":"\/visit-us\/","text":"Visit our showroom","from_bloq":628426,"bloq_type":"bloq-rich-text-editors","position":0},{"url":"https:\/\/www.homefirestove.com\/?pid=38182","text":"flexible terms here.","from_bloq":628417,"bloq_type":"bloq-rich-text-editors","position":2},{"url":"https:\/\/www.homefirestove.com\/specials\/#","text":"Signup for our newsletter","from_bloq":628417,"bloq_type":"bloq-rich-text-editors","position":2}],"external":[{"url":"https:\/\/www.synchrony.com\/mmc\/NS207507000","text":"flexible terms here.","from_bloq":628416,"bloq_type":"bloq-rich-text-editors","position":1},{"url":"https:\/\/www.travisindustries.com\/taxcredits\/","text":"Travis Industries","from_bloq":628416,"bloq_type":"bloq-rich-text-editors","position":1},{"url":"https:\/\/www.travisindustries.com\/taxcredits\/","text":"Travis Industries","from_bloq":628417,"bloq_type":"bloq-rich-text-editors","position":2}],"navigation":[]},"entities":{"people":[],"organizations":[],"products":[],"locations":["Salem","OR"],"landmarks":[],"businesses":["Home Fire Store","See Store"],"events":[]},"schema_org":{"@context":"https:\/\/schema.org","@graph":{"0":{"@type":"HomeGoodsStore","@id":"https:\/\/www.homefirestove.com#organization","name":"Home Fire Stove & Grill City","url":"https:\/\/www.homefirestove.com\/","description":"Serving Salem, OR and surrounding areas since 1979, Home Fire Stove is your trusted local source for premium fireplaces, stoves, and inserts. We specialize in gas, wood, pellet, and electric heating solutions designed to elevate comfort and style in any home. Our expert team offers full-service installation, remodeling support, and ongoing maintenance\u2014making the process seamless from selection to ignition. Whether you're modernizing a living space or adding cozy charm to a cabin, we carry the industry\u2019s top brands and offer design consultations to bring your vision to life.\r\n\r\nCome visit our expansive showroom in Salem, and experience firsthand the warmth, beauty, and innovation of today\u2019s best hearth products.","foundingDate":1979,"founder":{"@type":"Person","name":"Tim Nissen","jobTitle":"Owner"},"address":{"@type":"PostalAddress","streetAddress":"1695 Market St NE","addressLocality":"Salem","addressRegion":"OR","postalCode":"97301","addressCountry":"US"},"geo":{"@type":"GeoCoordinates","latitude":"44.9489831","longitude":"-123.0136308"},"additionalProperty":[],"telephone":"+1-503-364-6339","contactPoint":{"@type":"ContactPoint","telephone":"503-364-6339","contactType":"Store","areaServed":"Salem, ","availableLanguage":"English"},"openingHoursSpecification":[{"@type":"OpeningHoursSpecification","dayOfWeek":"Monday","opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Tuesday","opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Wednesday","opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Thursday","opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Friday","opens":"09:00","closes":"17:00"},{"@type":"OpeningHoursSpecification","dayOfWeek":"Saturday","opens":"11:00","closes":"16:00"}],"aggregateRating":{"@type":"AggregateRating","ratingValue":4.9,"reviewCount":449,"bestRating":5,"worstRating":1},"sameAs":["https:\/\/www.google.com\/search?q=home+fire+stove+salem&oq=home+fire+stove&gs_lcrp=EgZjaHJvbWUqCggAEAAY4wIYgAQyCggAEAAY4wIYgAQyDQgBEC4YrwEYxwEYgAQyCQgCEEUYORiABDIHCAMQABiABDIHCAQQABiABDIHCAUQABiABDIGCAYQRRg9MgYIBxBFGDzSAQg0MTUwajBqMagCALACAA&sourceid=chrome&ie=UTF-8#lrd=0x54bffefd5937b69b:0x174e3dc4ed3418bb,1,,,,"],"priceRange":"$$","paymentAccepted":"credit card, checks, cash, financing","currenciesAccepted":"USD"},"telephone":"+1-503-364-6339","contactPoint":{"@type":"ContactPoint","telephone":"503-364-6339","contactType":"Store","areaServed":"Salem, ","availableLanguage":"English"},"1":{"@type":"WebSite","@id":"https:\/\/www.homefirestove.com#website","url":"https:\/\/www.homefirestove.com","name":"Home Fire Stove"},"2":{"@type":"WebPage","@id":"https:\/\/www.homefirestove.com\/specials---black-friday-2025#webpage","url":"https:\/\/www.homefirestove.com\/specials---black-friday-2025","name":"Specials - Black Friday 2025","isPartOf":{"@id":"https:\/\/www.homefirestove.com#website"},"about":{"@id":"https:\/\/www.homefirestove.com#organization"},"datePublished":"2025-11-20T11:24:41-08:00","dateModified":"2026-04-15T20:00:55-07:00","description":"Discover exclusive financing specials and save $150 on gas appliances. Claim a 30% tax credit on efficient stoves now! Act fast, limited stock.","breadcrumb":{"@id":"https:\/\/www.homefirestove.com\/specials---black-friday-2025#breadcrumb"}},"3":{"@type":"BreadcrumbList","@id":"https:\/\/www.homefirestove.com\/specials---black-friday-2025#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.homefirestove.com"},{"@type":"ListItem","position":2,"name":"Specials - Black Friday 2025","item":"https:\/\/www.homefirestove.com\/specials---black-friday-2025"}]},"4":{"@type":"ImageObject","width":698,"height":560,"@context":"https:\/\/schema.org","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Inventory-Reduction-LOGO-1743834039.webp","description":"\"Inventory Reduction Sale from April 5th to May 3rd with up to $2,000 off, including venting. Text in bold, colorful letters on a white background.\""},"5":{"@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n  #b_sec_311386 {z-index:200;}\r\n..."},"6":{"name":"Image Showcase","@type":"ImageGallery","image":[{"name":"Stove","@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Stove-1763666947.webp","description":"Black cast iron wood-burning stove with a glass door, showing a bright, roaring fire inside. The stove stands on four legs and has an elegant, classic design."},{"name":"Grill","@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Grill-1763666941.webp","description":"Black pellet grill with a digital control panel on the left, a chimney on top, and a side shelf. The grill is on wheels and has a small bucket attached underneath."},{"name":"Fireplace","@type":"ImageObject","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Fireplace-1763667192.webp","description":"A modern, square, black fire pit with a visible flame on top. The sleek design features a smooth surface and a slightly elevated base, suitable for outdoor use."}],"@context":"https:\/\/schema.org"},"7":{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Inventory-Reduction-Sale---Coupon-1743835164.pdf","@type":"ImageObject","width":500,"height":664,"@context":"https:\/\/schema.org","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/download-coupon-with-shadow-1743835361.webp","description":"An envelope holds several colorful coupons with codes and the text \"Download & Print Your Special Coupon\" on a red background; a yellow \"Download\" button is below."},"8":{"text":"\r\n    \r\n    \r\n        \r\n        \r\n          \r\n        \r\n    \r\n\r\n  \r\n      \r\n    \r\n        Unbeatable Savings from August 23 - September 7th\r\n        \r\n            Home Fire Stove is bringing the best deals directly to you! Save up to $700 on a wide selection of fireplaces, stoves, and inserts during our exclusive \"No Fair Sale.\"\r\n        \r\n        \r\n            This year, we\u2019re skipping the booth at the Oregon State Fair to pass the savings directly to our loyal customers. With newly-added specials and prices limited to stock on hand, there's never been a better time to upgrade your home heating. Visit us in-store to explore the best selection, and speak with our sales associates for all the details on these incredible offers. Stop in today!\r\n        \r\n\r\n    \r\n  \r\n  \r\n\r\n\r\n\r\n    \/\/ Countdown Script (same as before)\r\n    var countDownDate = new Date(\"Aug 23, 2024 00:00:00\").getTime();\r\n    var x = setInterval(function() {\r\n        var now = new Date().getTime();\r\n        var distance = countDownDate - now;\r\n        var days = Math.floor(distance \/ (1000 * 60 * 60 * 24));\r\n        var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) \/ (1000 * 60 * 60));\r\n        var minutes = Math.floor((distance % (1000 * 60 * 60)) \/ (1000 * 60));\r\n        var seconds = Math.floor((distance % (1000 * 60)) \/ 1000);\r\n        document.getElementById(\"countdown\").innerHTML = days + \"d \" + hours + \"h \" + minutes + \"m \" + seconds + \"s \";\r\n        if (distance < 0) {\r\n            clearInterval(x);\r\n            document.getElementById(\"countdown\").innerHTML = \"SALE STARTED\";\r\n        }\r\n    }, 1000);\r\n\r\n","@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n    \r\n    \r\n        \r\n        \r\n          \r\n        \r\n    \r\n\r\n  \r\n      \r\n    \r\n        Unbeatable Savings from August 23 - September 7th\r\n        \r\n            Home Fire Stove is bringing the best ..."},"9":{"url":"https:\/\/www.synchrony.com\/mmc\/NS207507000","@type":"ImageObject","width":1600,"height":400,"@context":"https:\/\/schema.org","contentUrl":"\/\/cdn.bloqs.com\/4009-7163\/synchrony-ad.webp","description":"\"Banner showing a family using a laptop, and a Synchrony Home Credit Card. Text reads: 'Warm up your home with just one card. Synchrony Home Credit Card offers Promotional Financing.' Apply Now button included.\""},"10":{"@type":"ImageObject","width":1183,"height":1999,"@context":"https:\/\/schema.org","contentUrl":"\/\/cdn.bloqs.com\/4009-7163\/stove-highlight-specials.webp","description":"A black stove with a fire burning inside sits against a textured red wall next to an electrical outlet. The stove is on a tiled base with a wooden floor surrounding it."},"11":{"text":"\r\n    \r\n        \r\n            \r\n                \r\n                  \r\n                  \r\n            \r\n            First of all, i want to say I dealt with Leah and Chad and was very impressed with their knowledge about their products and how helpful they were. The also informed me about an upcoming sale. I took advantage of that! I was also given new estimates at the sale price. Also, I was extremely happy with the installation of my new gas insert by Josh and Preston. They were polite and efficient and worked diligently to get the job finished in a timely manner. I would highly recommend Home Fire Store to my family and friends.\r\n            Lana West \r\n            \r\n        \r\n    \r\n","@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n    \r\n        \r\n            \r\n                \r\n                  \r\n                  \r\n            \r\n            First of all, i want to say I dealt with Leah and Chad and was very impressed with t..."},"12":{"url":"\/visit-us\/","@type":"ImageObject","width":1600,"height":533,"@context":"https:\/\/schema.org","contentUrl":"\/\/cdn.bloqs.com\/4009-7163\/HFS-Black-Friday-2025-Specials-1763669789.webp","description":"Black Friday deals banner showing various fire pits, a grill, and a stove on a red background. Text reads \"HUGE Savings Storewide! Sale Ends December 1st.\""},"13":{"@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n#bi_626062 {\r\nz-index:11;\r\n  }\r\n..."},"14":{"text":"\r\n\r\n\r\n\r\n\r\n\r\n    .carousel-container {\r\n      overflow: hidden;\r\n      position: relative;\r\n      width: 100%;\r\n    }\r\n    \r\n    .carousel {\r\n      display: flex;\r\n      transition: transform 0.5s ease-in-out;\r\n    }\r\n    \r\n    .carousel-item {\r\n      flex: 0 0 auto;\r\n    }\r\n    \r\n    .carousel-control {\r\n      position: absolute;\r\n      top: 50%;\r\n      transform: translateY(-50%);\r\n      background-color: rgba(0, 0, 0, 0.5);\r\n      color: white;\r\n      border: none;\r\n      border-radius: 50%;\r\n      width: 40px;\r\n      height: 40px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      cursor: pointer;\r\n      z-index: 10;\r\n      font-size: 18px;\r\n      -webkit-tap-highlight-color: transparent;\r\n      user-select: none;\r\n    }\r\n    \r\n    .carousel-prev {\r\n      left: 10px;\r\n    }\r\n    \r\n    .carousel-next {\r\n      right: 10px;\r\n    }\r\n    \r\n    .carousel-indicator {\r\n      display: flex;\r\n      justify-content: center;\r\n      margin-top: 10px;\r\n    }\r\n    \r\n    .indicator-dot {\r\n      width: 10px;\r\n      height: 10px;\r\n      border-radius: 50%;\r\n      background-color: #ccc;\r\n      margin: 0 5px;\r\n      cursor: pointer;\r\n      -webkit-tap-highlight-color: transparent;\r\n    }\r\n    \r\n    .indicator-dot.active {\r\n      background-color: #333;\r\n    }\r\n\r\n\r\n\r\n\r\n  \r\n    \r\n      \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n      \r\n      \r\n      \r\n      \r\n        \r\n      \r\n      \r\n        \r\n      \r\n    \r\n    \r\n    \r\n  \r\n\r\n\r\n\r\n  \/\/ Immediately-invoked function expression (IIFE) to avoid global scope pollution\r\n  (function() {\r\n    \/\/ Unique identifier to avoid conflicts with other carousels on the page\r\n    const carouselId = \"42857\";\r\n    \r\n    \/\/ Carousel state\r\n    let carouselState = {\r\n      currentIndex: 0,\r\n      isTransitioning: false,\r\n      totalItems: 0,\r\n      visibleItems: 3,\r\n      initialized: false,\r\n      carousel: null,\r\n      originalItems: null,\r\n      indicator: null,\r\n      prevBtn: null,\r\n      nextBtn: null\r\n    };\r\n    \r\n    \/\/ Function to get elements with the unique ID\r\n    function getElement(id) {\r\n      return document.getElementById(id + \"-\" + carouselId);\r\n    }\r\n    \r\n    \/\/ Navigation functions\r\n    function prevSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex--;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function nextSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex++;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function goToSlide(index) {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex = index;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    \/\/ Update carousel position\r\n    function updateCarousel(animate = true) {\r\n      \/\/ 3 is the number of clones we added at the beginning\r\n      const offset = 3; \r\n      \/\/ Calculate the transform value based on current index and item width\r\n      const transformValue = -(carouselState.currentIndex + offset) * (100 \/ carouselState.visibleItems) + '%';\r\n      \r\n      \/\/ Apply or remove transition based on whether we want animation\r\n      if (!animate) {\r\n        carouselState.carousel.style.transition = 'none';\r\n      } else {\r\n        carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n      }\r\n      \r\n      carouselState.carousel.style.transform = `translateX(${transformValue})`;\r\n      updateIndicator();\r\n      \r\n      \/\/ If we disabled transition, re-enable it after the transform is applied\r\n      if (!animate) {\r\n        setTimeout(() => {\r\n          carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n        }, 50);\r\n      }\r\n    }\r\n    \r\n    \/\/ Update indicator dots\r\n    function updateIndicator() {\r\n      const dots = carouselState.indicator.querySelectorAll('.indicator-dot');\r\n      dots.forEach((dot, index) => {\r\n        if (index === carouselState.currentIndex) {\r\n          dot.classList.add('active');\r\n        } else {\r\n          dot.classList.remove('active');\r\n        }\r\n      });\r\n    }\r\n    \r\n    \/\/ Handle transition end (for infinite scrolling)\r\n    function handleTransitionEnd() {\r\n      \/\/ Check if we've moved past the beginning of original items\r\n      if (carouselState.currentIndex < 0) {\r\n        carouselState.currentIndex = carouselState.totalItems - 1;\r\n        updateCarousel(false);\r\n      }\r\n      \/\/ Check if we've moved past the end of original items\r\n      else if (carouselState.currentIndex >= carouselState.totalItems) {\r\n        carouselState.currentIndex = 0;\r\n        updateCarousel(false);\r\n      }\r\n      \r\n      carouselState.isTransitioning = false;\r\n    }\r\n    \r\n    \/\/ Update visible items based on screen size\r\n    function updateVisibleItems() {\r\n      if (window.innerWidth < 768) {\r\n        carouselState.visibleItems = 1; \/\/ Mobile: 1 item visible\r\n      } else if (window.innerWidth < 1024) {\r\n        carouselState.visibleItems = 2; \/\/ Tablet: 2 items visible\r\n      } else {\r\n        carouselState.visibleItems = 3; \/\/ Desktop: 3 items visible\r\n      }\r\n      updateCarousel(false);\r\n    }\r\n    \r\n    \/\/ Initialize the carousel\r\n    function initCarousel() {\r\n      \/\/ Prevent double initialization\r\n      if (carouselState.initialized) return;\r\n      \r\n      \/\/ Get DOM elements\r\n      carouselState.carousel = getElement(\"carousel\");\r\n      carouselState.originalItems = carouselState.carousel.querySelectorAll('.carousel-item.original');\r\n      carouselState.indicator = getElement(\"indicator\");\r\n      carouselState.prevBtn = getElement(\"prev\");\r\n      carouselState.nextBtn = getElement(\"next\");\r\n      \r\n      \/\/ Check if elements exist\r\n      if (!carouselState.carousel || !carouselState.indicator || !carouselState.prevBtn || !carouselState.nextBtn) {\r\n        console.error(\"Carousel elements not found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      carouselState.totalItems = carouselState.originalItems.length;\r\n      \r\n      if (carouselState.totalItems === 0) {\r\n        console.error(\"No carousel items found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Create indicator dots\r\n      for (let i = 0; i < carouselState.totalItems; i++) {\r\n        const dot = document.createElement('div');\r\n        dot.classList.add('indicator-dot');\r\n        if (i === carouselState.currentIndex) dot.classList.add('active');\r\n        \r\n        \/\/ Use proper event listener instead of inline attribute\r\n        dot.addEventListener('click', function() {\r\n          goToSlide(i);\r\n        });\r\n        \r\n        carouselState.indicator.appendChild(dot);\r\n      }\r\n      \r\n      \/\/ Add event listeners\r\n      carouselState.carousel.addEventListener('transitionend', handleTransitionEnd);\r\n      carouselState.prevBtn.addEventListener('click', prevSlide);\r\n      carouselState.nextBtn.addEventListener('click', prevSlide); \/\/ Fix this typo\r\n      \r\n      \/\/ Fix the typo by adding the correct event listener\r\n      carouselState.nextBtn.addEventListener('click', nextSlide);\r\n      \r\n      \/\/ Add keyboard navigation\r\n      document.addEventListener('keydown', (e) => {\r\n        if (e.key === 'ArrowLeft') {\r\n          prevSlide();\r\n        } else if (e.key === 'ArrowRight') {\r\n          nextSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Add touch support\r\n      let touchStartX = 0;\r\n      let touchEndX = 0;\r\n      \r\n      carouselState.carousel.addEventListener('touchstart', (e) => {\r\n        touchStartX = e.changedTouches[0].screenX;\r\n      });\r\n      \r\n      carouselState.carousel.addEventListener('touchend', (e) => {\r\n        touchEndX = e.changedTouches[0].screenX;\r\n        if (touchEndX < touchStartX - 50) {\r\n          \/\/ Swipe left, go next\r\n          nextSlide();\r\n        } else if (touchEndX > touchStartX + 50) {\r\n          \/\/ Swipe right, go prev\r\n          prevSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Handle window resize\r\n      window.addEventListener('resize', updateVisibleItems);\r\n      \r\n      \/\/ Set initial position\r\n      updateVisibleItems();\r\n      \r\n      \/\/ Mark as initialized\r\n      carouselState.initialized = true;\r\n      \r\n      console.log('Carousel initialized with ' + carouselState.totalItems + ' items');\r\n    }\r\n    \r\n    \/\/ Try to initialize on DOMContentLoaded\r\n    if (document.readyState === 'loading') {\r\n      document.addEventListener('DOMContentLoaded', initCarousel);\r\n    } else {\r\n      \/\/ DOM already loaded, initialize now\r\n      initCarousel();\r\n    }\r\n    \r\n    \/\/ Backup initialization for AJAX loaded content\r\n    window.addEventListener('load', function() {\r\n      setTimeout(function() {\r\n        if (!carouselState.initialized) {\r\n          console.log('Initializing carousel after window load');\r\n          initCarousel();\r\n        }\r\n      }, 500);\r\n    });\r\n    \r\n    \/\/ Extra insurance for AJAX loaded content\r\n    \/\/ This will check every 500ms for 5 seconds if the carousel needs initialization\r\n    let initAttempts = 0;\r\n    const initInterval = setInterval(function() {\r\n      if (carouselState.initialized || initAttempts >= 10) {\r\n        clearInterval(initInterval);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Check if elements exist but carousel not initialized yet\r\n      const carouselElement = getElement(\"carousel\");\r\n      if (carouselElement && !carouselState.initialized) {\r\n        console.log('Initializing carousel from interval check');\r\n        initCarousel();\r\n      }\r\n      \r\n      initAttempts++;\r\n    }, 500);\r\n    \r\n    \/\/ Make navigation functions available globally with unique names for this carousel instance\r\n    window['prevSlide' + carouselId] = prevSlide;\r\n    window['nextSlide' + carouselId] = nextSlide;\r\n    window['goToSlide' + carouselId] = goToSlide;\r\n  })();\r\n","@type":"WebPage","@context":"https:\/\/schema.org","description":"\r\n\r\n\r\n\r\n\r\n\r\n    .carousel-container {\r\n      overflow: hidden;\r\n      position: relative;\r\n      width: 100%;\r\n    }\r\n    \r\n    .carousel {\r\n      display: flex;\r\n      transition: transform 0.5s ease..."},"15":{"@type":"ImageObject","width":1600,"height":560,"@context":"https:\/\/schema.org","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Final.webp","description":"Save $150 on all gas appliances. See store for details. Living room with a fireplace, TV, couch, and a wooden coffee table. Shelves with decor items and books are on both sides of the fireplace."},"16":{"@type":"ImageObject","width":1600,"height":1020,"@context":"https:\/\/schema.org","contentUrl":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/HFS-No-Fair-Sale-2025-1755009977.webp","description":"Red and brown retro-styled sign with the words \"Home Fire Stove\" above large, lightbulb-bordered letters spelling \"No Fair Sale.\""}},"generated":"2026-04-15 20:00:56 PDT","generatedBy":"cp"},"bloqs":[{"bloq_item_id":628425,"bloq_type":"bloq-images","display_order":0,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Specials-Showcase-Inventory-Reduction-LOGO-1743834039.webp","alt_text":"\"Inventory Reduction Sale from April 5th to May 3rd with up to $2,000 off, including venting. Text in bold, colorful letters on a white background.\"","has_alt":true,"width":698,"height":560},"link":null,"llm_usefulness_score":80}},{"bloq_item_id":628433,"bloq_type":"bloq-separators","display_order":0,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":628438,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-02-20T14:00:10-08:00","statistics":{"word_count":23,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n    Black Friday Deals!\r\n\r\n\r\n    Get up to $700 off qualifying products during our storewide Black Friday sale!\r\n\r\n\r\n    Sale runs from November 24th - December 1st.\r\n","paragraphs":[]}},{"bloq_item_id":628430,"bloq_type":"bloq-htmls","display_order":0,"data":{"bloq_type":"content","description":"Raw HTML content with embedded elements","content_type":"html","timestamp":"2026-02-20T14:00:08-08:00","statistics":{"word_count":3,"element_count":1,"image_count":0,"link_count":0,"script_count":0,"style_count":1,"iframe_count":0,"images_with_alt":0},"content_analysis":{"has_scripts":false,"has_styles":true,"security_risk":"low"},"images":[],"links":[],"scripts":[],"styles":[{"position":1,"content_length":28,"type":""}],"iframes":[],"plain_text":"\r\n  #b_sec_311386 {z-index:200;}\r\n","html_structure":{"complexity":"low","interactive_elements":false,"styling_present":true,"multimedia_content":false}}},{"bloq_item_id":628439,"bloq_type":"bloq-showcases","display_order":0,"data":{"bloq_type":"showcase_carousel","description":"An image showcase\/carousel bloq displaying multiple images with optional links","semantic_value":"high","content_type":"visual","timestamp":"2026-02-20T14:00:10-08:00","settings":{"transition":"fade","timing":5,"desktop_size":"aspect-square","mobile_size":"aspect-square"},"images":[{"position":1,"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Stove-1763666947.webp","alt_text":"Black cast iron wood-burning stove with a glass door, showing a bright, roaring fire inside. The stove stands on four legs and has an elegant, classic design.","title":"Stove","description":null,"link":null,"has_semantic_info":true},{"position":2,"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Grill-1763666941.webp","alt_text":"Black pellet grill with a digital control panel on the left, a chimney on top, and a side shelf. The grill is on wheels and has a small bucket attached underneath.","title":"Grill","description":null,"link":null,"has_semantic_info":true},{"position":3,"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Fireplace-1763667192.webp","alt_text":"A modern, square, black fire pit with a visible flame on top. The sleek design features a smooth surface and a slightly elevated base, suitable for outdoor use.","title":"Fireplace","description":null,"link":null,"has_semantic_info":true}],"summary":{"total_images":3,"images_with_descriptions":3,"images_with_links":0},"llm_usefulness_score":70}},{"bloq_item_id":628428,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-02-20T14:00:08-08:00","statistics":{"word_count":15,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n         Let us know if you love any of these. All of them are on sale!\r\n    ","paragraphs":["Let us know if you love any of these. All of them are on sale!"]}},{"bloq_item_id":628427,"bloq_type":"bloq-images","display_order":0,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/download-coupon-with-shadow-1743835361.webp","alt_text":"An envelope holds several colorful coupons with codes and the text \"Download & Print Your Special Coupon\" on a red background; a yellow \"Download\" button is below.","has_alt":true,"width":500,"height":664},"link":{"url":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/Inventory-Reduction-Sale---Coupon-1743835164.pdf","has_link":true},"llm_usefulness_score":80}},{"bloq_item_id":628426,"bloq_type":"bloq-rich-text-editors","display_order":0,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-02-20T14:00:08-08:00","statistics":{"word_count":120,"image_count":0,"link_count":1,"images_with_alt":0},"images":[],"links":[{"position":1,"url":"\/visit-us\/","text":"Visit our showroom"}],"plain_text":"\r\n    Specials&nbsp;\r\n\r\n\r\n\r\n    Inventory Reduction Happening Now!*\r\n\r\n\r\n    Heat up your home and cool down your costs with our spectacular Inventory Reduction Sale running April 5th through May 3rd! This limited time opportunity means you need to act fast to save up to $2,000 off, including venting! Take advantage of tax credits available up to $2,000 on qualifying wood and gas fireplaces, stoves, inserts and fire products. We're proud to offer no tariffs, just deals on all your favorite brands. And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.&nbsp;&nbsp; &nbsp; &nbsp;*See store for details\r\n\r\n    ","paragraphs":["Heat up your home and cool down your costs with our spectacular Inventory Reduction Sale running April 5th through May 3rd! This limited time opportunity means you need to act fast to save up to $2,000 off, including venting! Take advantage of tax credits available up to $2,000 on qualifying wood and gas fireplaces, stoves, inserts and fire products. We're proud to offer no tariffs, just deals on all your favorite brands. And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.\u00a0\u00a0 \u00a0 \u00a0*See store for details"]}},{"bloq_item_id":628423,"bloq_type":"bloq-images","display_order":0,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/cdn.bloqs.com\/4009-7163\/synchrony-ad.webp","alt_text":"\"Banner showing a family using a laptop, and a Synchrony Home Credit Card. Text reads: 'Warm up your home with just one card. Synchrony Home Credit Card offers Promotional Financing.' Apply Now button included.\"","has_alt":true,"width":1600,"height":400},"link":{"url":"https:\/\/www.synchrony.com\/mmc\/NS207507000","has_link":true},"llm_usefulness_score":80}},{"bloq_item_id":628440,"bloq_type":"bloq-separators","display_order":0,"data":{"content_type":"spacer","purpose":"Visual spacing element - no content","seo_relevant":false}},{"bloq_item_id":628421,"bloq_type":"bloq-images","display_order":0,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/cdn.bloqs.com\/4009-7163\/stove-highlight-specials.webp","alt_text":"A black stove with a fire burning inside sits against a textured red wall next to an electrical outlet. The stove is on a tiled base with a wooden floor surrounding it.","has_alt":true,"width":1183,"height":1999},"link":null,"llm_usefulness_score":80}},{"bloq_item_id":628420,"bloq_type":"bloq-htmls","display_order":0,"data":{"bloq_type":"content","description":"Raw HTML content with embedded elements","content_type":"html","timestamp":"2026-04-15T20:00:55-07:00","statistics":{"word_count":99,"element_count":8,"image_count":0,"link_count":0,"script_count":0,"style_count":0,"iframe_count":0,"images_with_alt":0},"content_analysis":{"has_scripts":false,"has_styles":false,"security_risk":"low"},"images":[],"links":[],"scripts":[],"styles":[],"iframes":[],"plain_text":"\r\n    \r\n        \r\n            \r\n                \r\n                  \r\n                  \r\n            \r\n            First of all, i want to say I dealt with Leah and Chad and was very impressed with their knowledge about their products and how helpful they were. The also informed me about an upcoming sale. I took advantage of that! I was also given new estimates at the sale price. Also, I was extremely happy with the installation of my new gas insert by Josh and Preston. They were polite and efficient and worked diligently to get the job finished in a timely manner. I would highly recommend Home Fire Store to my family and friends.\r\n            Lana West \r\n            \r\n        \r\n    \r\n","html_structure":{"complexity":"low","interactive_elements":false,"styling_present":false,"multimedia_content":false}}},{"bloq_item_id":628442,"bloq_type":"bloq-buttons","display_order":1,"data":{"bloq_type":"button_group","description":"A group of call-to-action buttons with links","total_buttons":1,"buttons":[{"position":1,"text":"<span class=\"w-full block text-base\" data-element-index=\"0\">Visit Our Store<\/span>","link":"\/visit-us\/","has_image":false,"image_url":null,"alt_text":null,"style":"style 2"}],"llm_usefulness_score":100}},{"bloq_item_id":628436,"bloq_type":"bloq-images","display_order":1,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/cdn.bloqs.com\/4009-7163\/HFS-Black-Friday-2025-Specials-1763669789.webp","alt_text":"Black Friday deals banner showing various fire pits, a grill, and a stove on a red background. Text reads \"HUGE Savings Storewide! Sale Ends December 1st.\"","has_alt":true,"width":1600,"height":533},"link":{"url":"\/visit-us\/","has_link":true},"llm_usefulness_score":80}},{"bloq_item_id":628416,"bloq_type":"bloq-rich-text-editors","display_order":1,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-04-15T20:00:52-07:00","statistics":{"word_count":119,"image_count":0,"link_count":2,"images_with_alt":0},"images":[],"links":[{"position":1,"url":"https:\/\/www.synchrony.com\/mmc\/NS207507000","text":"flexible terms here."},{"position":2,"url":"https:\/\/www.travisindustries.com\/taxcredits\/","text":"Travis Industries"}],"plain_text":"\r\n    FINANCING SPECIALS*\r\n\r\n\r\n    We now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here.\r\n\r\n\r\n    *See store for details\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n    ALL GAS APPLIANCES&nbsp;\r\n\r\n\r\n    Save $150.00 off&nbsp;\r\n\r\n&nbsp;\r\n\r\n&nbsp;\r\n\r\n    WHAT IS THE USA ENERGY&nbsp;TAX CREDIT?\r\n\r\n\r\n    Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.\r\n\r\n\r\n    The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.\r\n\r\n\r\n    More info can be found here:&nbsp;Travis Industries\r\n","paragraphs":["*See store for details","\u00a0","\u00a0","\u00a0","\u00a0","Effective January 1, 2023, through December 31, 2025,\u00a0purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.\u00a0The total cost of the hearth product and installation is included in the 30% tax credit.","The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","More info can be found here:\u00a0Travis Industries"]}},{"bloq_item_id":628434,"bloq_type":"bloq-rich-text-editors","display_order":1,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-02-20T14:00:09-08:00","statistics":{"word_count":26,"image_count":0,"link_count":0,"images_with_alt":0},"images":[],"links":[],"plain_text":"\r\n    No Fair Sale\r\n\r\n\r\n    August 22nd - September 6th\r\n\r\n\r\n    We skipped the fair\u2026 so you can skip the lines.\r\n    This is our biggest sale of the year!","paragraphs":["We skipped the fair\u2026 so you can skip the lines.\r\n    This is our biggest sale of the year!"]}},{"bloq_item_id":628431,"bloq_type":"bloq-htmls","display_order":1,"data":{"bloq_type":"content","description":"Raw HTML content with embedded elements","content_type":"html","timestamp":"2026-02-20T14:00:08-08:00","statistics":{"word_count":2,"element_count":1,"image_count":0,"link_count":0,"script_count":0,"style_count":1,"iframe_count":0,"images_with_alt":0},"content_analysis":{"has_scripts":false,"has_styles":true,"security_risk":"low"},"images":[],"links":[],"scripts":[],"styles":[{"position":1,"content_length":30,"type":""}],"iframes":[],"plain_text":"\r\n#bi_626062 {\r\nz-index:11;\r\n  }\r\n","html_structure":{"complexity":"low","interactive_elements":false,"styling_present":true,"multimedia_content":false}}},{"bloq_item_id":628429,"bloq_type":"bloq-htmls","display_order":1,"data":{"bloq_type":"content","description":"Raw HTML content with embedded elements","content_type":"html","timestamp":"2026-02-20T14:00:08-08:00","statistics":{"word_count":766,"element_count":39,"image_count":13,"link_count":0,"script_count":2,"style_count":1,"iframe_count":0,"images_with_alt":13},"content_analysis":{"has_scripts":true,"has_styles":true,"security_risk":"high"},"images":[{"position":1,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-6-1743831231.webp","alt":"Image 7 (Clone)","has_alt":true,"width":"","height":""},{"position":2,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-7-1743831241.webp","alt":"Image 6 (Clone)","has_alt":true,"width":"","height":""},{"position":3,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-4-1743831247.webp","alt":"Image 5 (Clone)","has_alt":true,"width":"","height":""},{"position":4,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-3-1743831275.webp","alt":"Image 1","has_alt":true,"width":"","height":""},{"position":5,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-1-1743831269.webp","alt":"Image 2","has_alt":true,"width":"","height":""},{"position":6,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-2-1743831262.webp","alt":"Image 3","has_alt":true,"width":"","height":""},{"position":7,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-5-1743831254.webp","alt":"Image 4","has_alt":true,"width":"","height":""},{"position":8,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-4-1743831247.webp","alt":"Image 5","has_alt":true,"width":"","height":""},{"position":9,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-7-1743831241.webp","alt":"Image 6","has_alt":true,"width":"","height":""},{"position":10,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-6-1743831231.webp","alt":"Image 7","has_alt":true,"width":"","height":""},{"position":11,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-3-1743831275.webp","alt":"Image 1 (Clone)","has_alt":true,"width":"","height":""},{"position":12,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-1-1743831269.webp","alt":"Image 2 (Clone)","has_alt":true,"width":"","height":""},{"position":13,"src":"https:\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/IRS-2-1743831262.webp","alt":"Image 3 (Clone)","has_alt":true,"width":"","height":""}],"links":[],"scripts":[{"position":1,"src":"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/tailwindcss\/2.2.19\/tailwind.min.js","type":"","has_src":true,"has_content":false,"content_length":0},{"position":2,"src":"","type":"","has_src":false,"has_content":true,"content_length":8453}],"styles":[{"position":1,"content_length":1285,"type":""}],"iframes":[],"plain_text":"\r\n\r\n\r\n\r\n\r\n\r\n    .carousel-container {\r\n      overflow: hidden;\r\n      position: relative;\r\n      width: 100%;\r\n    }\r\n    \r\n    .carousel {\r\n      display: flex;\r\n      transition: transform 0.5s ease-in-out;\r\n    }\r\n    \r\n    .carousel-item {\r\n      flex: 0 0 auto;\r\n    }\r\n    \r\n    .carousel-control {\r\n      position: absolute;\r\n      top: 50%;\r\n      transform: translateY(-50%);\r\n      background-color: rgba(0, 0, 0, 0.5);\r\n      color: white;\r\n      border: none;\r\n      border-radius: 50%;\r\n      width: 40px;\r\n      height: 40px;\r\n      display: flex;\r\n      align-items: center;\r\n      justify-content: center;\r\n      cursor: pointer;\r\n      z-index: 10;\r\n      font-size: 18px;\r\n      -webkit-tap-highlight-color: transparent;\r\n      user-select: none;\r\n    }\r\n    \r\n    .carousel-prev {\r\n      left: 10px;\r\n    }\r\n    \r\n    .carousel-next {\r\n      right: 10px;\r\n    }\r\n    \r\n    .carousel-indicator {\r\n      display: flex;\r\n      justify-content: center;\r\n      margin-top: 10px;\r\n    }\r\n    \r\n    .indicator-dot {\r\n      width: 10px;\r\n      height: 10px;\r\n      border-radius: 50%;\r\n      background-color: #ccc;\r\n      margin: 0 5px;\r\n      cursor: pointer;\r\n      -webkit-tap-highlight-color: transparent;\r\n    }\r\n    \r\n    .indicator-dot.active {\r\n      background-color: #333;\r\n    }\r\n\r\n\r\n\r\n\r\n  \r\n    \r\n      \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n        \r\n          \r\n        \r\n      \r\n      \r\n      \r\n      \r\n        \r\n      \r\n      \r\n        \r\n      \r\n    \r\n    \r\n    \r\n  \r\n\r\n\r\n\r\n  \/\/ Immediately-invoked function expression (IIFE) to avoid global scope pollution\r\n  (function() {\r\n    \/\/ Unique identifier to avoid conflicts with other carousels on the page\r\n    const carouselId = \"42857\";\r\n    \r\n    \/\/ Carousel state\r\n    let carouselState = {\r\n      currentIndex: 0,\r\n      isTransitioning: false,\r\n      totalItems: 0,\r\n      visibleItems: 3,\r\n      initialized: false,\r\n      carousel: null,\r\n      originalItems: null,\r\n      indicator: null,\r\n      prevBtn: null,\r\n      nextBtn: null\r\n    };\r\n    \r\n    \/\/ Function to get elements with the unique ID\r\n    function getElement(id) {\r\n      return document.getElementById(id + \"-\" + carouselId);\r\n    }\r\n    \r\n    \/\/ Navigation functions\r\n    function prevSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex--;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function nextSlide() {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex++;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    function goToSlide(index) {\r\n      if (carouselState.isTransitioning) return;\r\n      carouselState.isTransitioning = true;\r\n      carouselState.currentIndex = index;\r\n      updateCarousel(true);\r\n    }\r\n    \r\n    \/\/ Update carousel position\r\n    function updateCarousel(animate = true) {\r\n      \/\/ 3 is the number of clones we added at the beginning\r\n      const offset = 3; \r\n      \/\/ Calculate the transform value based on current index and item width\r\n      const transformValue = -(carouselState.currentIndex + offset) * (100 \/ carouselState.visibleItems) + '%';\r\n      \r\n      \/\/ Apply or remove transition based on whether we want animation\r\n      if (!animate) {\r\n        carouselState.carousel.style.transition = 'none';\r\n      } else {\r\n        carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n      }\r\n      \r\n      carouselState.carousel.style.transform = `translateX(${transformValue})`;\r\n      updateIndicator();\r\n      \r\n      \/\/ If we disabled transition, re-enable it after the transform is applied\r\n      if (!animate) {\r\n        setTimeout(() => {\r\n          carouselState.carousel.style.transition = 'transform 0.5s ease-in-out';\r\n        }, 50);\r\n      }\r\n    }\r\n    \r\n    \/\/ Update indicator dots\r\n    function updateIndicator() {\r\n      const dots = carouselState.indicator.querySelectorAll('.indicator-dot');\r\n      dots.forEach((dot, index) => {\r\n        if (index === carouselState.currentIndex) {\r\n          dot.classList.add('active');\r\n        } else {\r\n          dot.classList.remove('active');\r\n        }\r\n      });\r\n    }\r\n    \r\n    \/\/ Handle transition end (for infinite scrolling)\r\n    function handleTransitionEnd() {\r\n      \/\/ Check if we've moved past the beginning of original items\r\n      if (carouselState.currentIndex < 0) {\r\n        carouselState.currentIndex = carouselState.totalItems - 1;\r\n        updateCarousel(false);\r\n      }\r\n      \/\/ Check if we've moved past the end of original items\r\n      else if (carouselState.currentIndex >= carouselState.totalItems) {\r\n        carouselState.currentIndex = 0;\r\n        updateCarousel(false);\r\n      }\r\n      \r\n      carouselState.isTransitioning = false;\r\n    }\r\n    \r\n    \/\/ Update visible items based on screen size\r\n    function updateVisibleItems() {\r\n      if (window.innerWidth < 768) {\r\n        carouselState.visibleItems = 1; \/\/ Mobile: 1 item visible\r\n      } else if (window.innerWidth < 1024) {\r\n        carouselState.visibleItems = 2; \/\/ Tablet: 2 items visible\r\n      } else {\r\n        carouselState.visibleItems = 3; \/\/ Desktop: 3 items visible\r\n      }\r\n      updateCarousel(false);\r\n    }\r\n    \r\n    \/\/ Initialize the carousel\r\n    function initCarousel() {\r\n      \/\/ Prevent double initialization\r\n      if (carouselState.initialized) return;\r\n      \r\n      \/\/ Get DOM elements\r\n      carouselState.carousel = getElement(\"carousel\");\r\n      carouselState.originalItems = carouselState.carousel.querySelectorAll('.carousel-item.original');\r\n      carouselState.indicator = getElement(\"indicator\");\r\n      carouselState.prevBtn = getElement(\"prev\");\r\n      carouselState.nextBtn = getElement(\"next\");\r\n      \r\n      \/\/ Check if elements exist\r\n      if (!carouselState.carousel || !carouselState.indicator || !carouselState.prevBtn || !carouselState.nextBtn) {\r\n        console.error(\"Carousel elements not found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      carouselState.totalItems = carouselState.originalItems.length;\r\n      \r\n      if (carouselState.totalItems === 0) {\r\n        console.error(\"No carousel items found. Retrying in 100ms...\");\r\n        setTimeout(initCarousel, 100);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Create indicator dots\r\n      for (let i = 0; i < carouselState.totalItems; i++) {\r\n        const dot = document.createElement('div');\r\n        dot.classList.add('indicator-dot');\r\n        if (i === carouselState.currentIndex) dot.classList.add('active');\r\n        \r\n        \/\/ Use proper event listener instead of inline attribute\r\n        dot.addEventListener('click', function() {\r\n          goToSlide(i);\r\n        });\r\n        \r\n        carouselState.indicator.appendChild(dot);\r\n      }\r\n      \r\n      \/\/ Add event listeners\r\n      carouselState.carousel.addEventListener('transitionend', handleTransitionEnd);\r\n      carouselState.prevBtn.addEventListener('click', prevSlide);\r\n      carouselState.nextBtn.addEventListener('click', prevSlide); \/\/ Fix this typo\r\n      \r\n      \/\/ Fix the typo by adding the correct event listener\r\n      carouselState.nextBtn.addEventListener('click', nextSlide);\r\n      \r\n      \/\/ Add keyboard navigation\r\n      document.addEventListener('keydown', (e) => {\r\n        if (e.key === 'ArrowLeft') {\r\n          prevSlide();\r\n        } else if (e.key === 'ArrowRight') {\r\n          nextSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Add touch support\r\n      let touchStartX = 0;\r\n      let touchEndX = 0;\r\n      \r\n      carouselState.carousel.addEventListener('touchstart', (e) => {\r\n        touchStartX = e.changedTouches[0].screenX;\r\n      });\r\n      \r\n      carouselState.carousel.addEventListener('touchend', (e) => {\r\n        touchEndX = e.changedTouches[0].screenX;\r\n        if (touchEndX < touchStartX - 50) {\r\n          \/\/ Swipe left, go next\r\n          nextSlide();\r\n        } else if (touchEndX > touchStartX + 50) {\r\n          \/\/ Swipe right, go prev\r\n          prevSlide();\r\n        }\r\n      });\r\n      \r\n      \/\/ Handle window resize\r\n      window.addEventListener('resize', updateVisibleItems);\r\n      \r\n      \/\/ Set initial position\r\n      updateVisibleItems();\r\n      \r\n      \/\/ Mark as initialized\r\n      carouselState.initialized = true;\r\n      \r\n      console.log('Carousel initialized with ' + carouselState.totalItems + ' items');\r\n    }\r\n    \r\n    \/\/ Try to initialize on DOMContentLoaded\r\n    if (document.readyState === 'loading') {\r\n      document.addEventListener('DOMContentLoaded', initCarousel);\r\n    } else {\r\n      \/\/ DOM already loaded, initialize now\r\n      initCarousel();\r\n    }\r\n    \r\n    \/\/ Backup initialization for AJAX loaded content\r\n    window.addEventListener('load', function() {\r\n      setTimeout(function() {\r\n        if (!carouselState.initialized) {\r\n          console.log('Initializing carousel after window load');\r\n          initCarousel();\r\n        }\r\n      }, 500);\r\n    });\r\n    \r\n    \/\/ Extra insurance for AJAX loaded content\r\n    \/\/ This will check every 500ms for 5 seconds if the carousel needs initialization\r\n    let initAttempts = 0;\r\n    const initInterval = setInterval(function() {\r\n      if (carouselState.initialized || initAttempts >= 10) {\r\n        clearInterval(initInterval);\r\n        return;\r\n      }\r\n      \r\n      \/\/ Check if elements exist but carousel not initialized yet\r\n      const carouselElement = getElement(\"carousel\");\r\n      if (carouselElement && !carouselState.initialized) {\r\n        console.log('Initializing carousel from interval check');\r\n        initCarousel();\r\n      }\r\n      \r\n      initAttempts++;\r\n    }, 500);\r\n    \r\n    \/\/ Make navigation functions available globally with unique names for this carousel instance\r\n    window['prevSlide' + carouselId] = prevSlide;\r\n    window['nextSlide' + carouselId] = nextSlide;\r\n    window['goToSlide' + carouselId] = goToSlide;\r\n  })();\r\n","html_structure":{"complexity":"medium","interactive_elements":true,"styling_present":true,"multimedia_content":true}}},{"bloq_item_id":628435,"bloq_type":"bloq-simple-buttons","display_order":2,"data":{"bloq_type":"simple_button_group","description":"A group of styled buttons with hover effects and animations","total_buttons":1,"buttons":[{"position":1,"text":"See the Deals","link":"\/specials\/2025-no-fair-sale","has_icon":false,"icon_type":null,"hover_effect":"btn8-center-wipe","button_type":"text-only"}],"llm_usefulness_score":100}},{"bloq_item_id":628432,"bloq_type":"bloq-images","display_order":2,"data":{"bloq_type":"single_image","description":"A single image bloq with optional link","image":{"url":"\/\/8bloqs.s3.us-west-2.amazonaws.com\/4009-7163\/HFS-No-Fair-Sale-2025-1755009977.webp","alt_text":"Red and brown retro-styled sign with the words \"Home Fire Stove\" above large, lightbulb-bordered letters spelling \"No Fair Sale.\"","has_alt":true,"width":1600,"height":1020},"link":null,"llm_usefulness_score":80}},{"bloq_item_id":628417,"bloq_type":"bloq-rich-text-editors","display_order":2,"data":{"bloq_type":"rich_text_content","description":"Rich text content with formatted HTML","content_type":"text","timestamp":"2026-02-20T13:59:59-08:00","statistics":{"word_count":173,"image_count":0,"link_count":3,"images_with_alt":0},"images":[],"links":[{"position":1,"url":"https:\/\/www.homefirestove.com\/?pid=38182","text":"flexible terms here."},{"position":2,"url":"https:\/\/www.homefirestove.com\/specials\/#","text":"Signup for our newsletter"},{"position":3,"url":"https:\/\/www.travisindustries.com\/taxcredits\/","text":"Travis Industries"}],"plain_text":"Specials&nbsp;\r\nInventory Reduction - Lots of Great Stoves to Choose From - See Store for Details.Take advantage of our newly-added specials! Hurry in: prices limited to stock on hand.&nbsp;\r\nFINANCING SPECIALS*\r\nWe now offer 6-month, and 12-month&nbsp;financing options. Check out the&nbsp;flexible terms here.\r\n*See store for details\r\nALL GAS APPLIANCES&nbsp;\r\nSave $150.00 off&nbsp;\r\n&nbsp;\r\n&nbsp;NEWSLETTER SIGNUP\r\nSignup for our newsletter&nbsp;and stay up to date on events, savings, and educational tips for our happy hearth product owners!\r\nWHAT IS THE USA ENERGY&nbsp;TAX CREDIT?\r\nEffective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.\r\nThe qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.\r\nMore info can be found here:&nbsp;Travis Industries","paragraphs":["Inventory Reduction - Lots of Great Stoves to Choose From - See Store for Details.Take advantage of our newly-added specials! Hurry in: prices limited to stock on hand.\u00a0","FINANCING SPECIALS*","*See store for details","ALL GAS APPLIANCES\u00a0","\u00a0NEWSLETTER SIGNUP","WHAT IS THE USA ENERGY\u00a0TAX CREDIT?","Effective January 1, 2023, through December 31, 2025,\u00a0purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.\u00a0The total cost of the hearth product and installation is included in the 30% tax credit.","The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","More info can be found here:\u00a0Travis Industries"]}}],"statistics":{"total_bloqs":21,"bloq_types":{"bloq-images":6,"bloq-separators":2,"bloq-rich-text-editors":6,"bloq-htmls":4,"bloq-showcases":1,"bloq-buttons":1,"bloq-simple-buttons":1},"total_images":19,"total_links":6,"total_words":1346,"total_paragraphs":20,"schema_items":19,"business_fields":5,"media_items":28,"entity_count":4,"merged_schema_version":"3.0"},"citations":{"citeable_statements":[{"id":"stmt_1","statement":"All of them are on sale!","section_id":"section_3","bloq_id":628428,"type":"factual","word_count":6},{"id":"stmt_2","statement":"And with our flexible financing options, no cash, no problem \u2013 payment plans are available!* Visit our showroom in Salem at 17th & Market today to transform your home with quality, efficiency, and style at unbeatable seasonal prices.&nbsp;&nbsp; &nbsp; &nbsp;*See store for details","section_id":"section_4","bloq_id":628426,"type":"factual","word_count":44},{"id":"stmt_3","statement":"First of all, i want to say I dealt with Leah and Chad and was very impressed with their knowledge about their products and how helpful they were.","section_id":"section_5","bloq_id":628420,"type":"factual","word_count":28},{"id":"stmt_4","statement":"I was also given new estimates at the sale price.","section_id":"section_5","bloq_id":628420,"type":"factual","word_count":10},{"id":"stmt_5","statement":"Also, I was extremely happy with the installation of my new gas insert by Josh and Preston.","section_id":"section_5","bloq_id":628420,"type":"factual","word_count":17},{"id":"stmt_6","statement":"They were polite and efficient and worked diligently to get the job finished in a timely manner.","section_id":"section_5","bloq_id":628420,"type":"factual","word_count":17},{"id":"stmt_7","statement":"*See store for details &nbsp; &nbsp; ALL GAS APPLIANCES&nbsp; Save $150.00 off&nbsp; &nbsp; &nbsp; WHAT IS THE USA ENERGY&nbsp;TAX CREDIT?","section_id":"section_7","bloq_id":628416,"type":"factual","word_count":23},{"id":"stmt_8","statement":"Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.","section_id":"section_7","bloq_id":628416,"type":"factual","word_count":46},{"id":"stmt_9","statement":"The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","section_id":"section_7","bloq_id":628416,"type":"factual","word_count":23},{"id":"stmt_10","statement":"This is our biggest sale of the year!","section_id":"section_8","bloq_id":628434,"type":"factual","word_count":8},{"id":"stmt_11","statement":"WHAT IS THE USA ENERGY&nbsp;TAX CREDIT?","section_id":"section_12","bloq_id":628417,"type":"factual","word_count":8},{"id":"stmt_12","statement":"Effective January 1, 2023, through December 31, 2025,&nbsp;purchasers of wood and pellet-burning stoves and inserts with an average HHV efficiency of at least 75% are eligible to claim a 30% tax credit, capped at $2,000.&nbsp;The total cost of the hearth product and installation is included in the 30% tax credit.","section_id":"section_12","bloq_id":628417,"type":"factual","word_count":46},{"id":"stmt_13","statement":"The qualifying wood and pellet products must be claimed on the tax return for the year in which the product installation is completed.","section_id":"section_12","bloq_id":628417,"type":"factual","word_count":23}],"source_authority":{"domain":"www.homefirestove.com","last_verified":"2026-04-15","content_type":"webpage","url":"https:\/\/www.homefirestove.com\/specials---black-friday-2025"},"page_structure":{"render_order":[{"bloq_id":628425,"type":"bloq-images","position":0},{"bloq_id":628433,"type":"bloq-separators","position":0},{"bloq_id":628438,"type":"bloq-rich-text-editors","position":0},{"bloq_id":628430,"type":"bloq-htmls","position":0},{"bloq_id":628439,"type":"bloq-showcases","position":0},{"bloq_id":628428,"type":"bloq-rich-text-editors","position":0},{"bloq_id":628427,"type":"bloq-images","position":0},{"bloq_id":628426,"type":"bloq-rich-text-editors","position":0},{"bloq_id":628423,"type":"bloq-images","position":0},{"bloq_id":628440,"type":"bloq-separators","position":0},{"bloq_id":628421,"type":"bloq-images","position":0},{"bloq_id":628420,"type":"bloq-htmls","position":0},{"bloq_id":628442,"type":"bloq-buttons","position":1},{"bloq_id":628436,"type":"bloq-images","position":1},{"bloq_id":628416,"type":"bloq-rich-text-editors","position":1},{"bloq_id":628434,"type":"bloq-rich-text-editors","position":1},{"bloq_id":628431,"type":"bloq-htmls","position":1},{"bloq_id":628429,"type":"bloq-htmls","position":1},{"bloq_id":628435,"type":"bloq-simple-buttons","position":2},{"bloq_id":628432,"type":"bloq-images","position":2},{"bloq_id":628417,"type":"bloq-rich-text-editors","position":2}]}},"business_profile":{"organization_type":"","name":"","description":"","address":{"street":"","city":"","state":"","postal_code":"","country":""},"contact":{"telephone":"","url":"","email":""},"operational_details":{"price_range":"","cuisine":[],"hours":[],"payment_methods":[]},"ratings":{"aggregate_rating":null,"review_count":0,"reviews":[]},"amenities":[],"historical_branding":{"alternate_name":"","founding_date":"","founder":"","transition_note":""}},"schema_metadata":{"schema_version":"3.0","schema_type":"merged_llm_schema","merge_date":"2026-04-15T20:00:56-07:00","source_types":["llm_json","page_schema"],"schema_generated":"2026-04-15 20:00:56 PDT","schema_generated_by":"cp","graph_item_count":19,"validation_status":"complete"},"merged":true,"merge_version":"3.0","merge_timestamp":"2026-04-15T20:00:56-07:00","merge_status":"complete","validation":{"has_schema":true,"has_graph":true,"has_business_profile":false,"has_entities":true,"has_media":true,"schema_item_count":19}}