<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
     xmlns:content="http://purl.org/rss/1.0/modules/content/"
     xmlns:dc="https://purl.org/dc/elements/1.1/"
     xmlns:dcterms="http://purl.org/dc/terms/"
     xmlns:media="http://search.yahoo.com/mrss/"
     xmlns:atom="http://www.w3.org/2005/Atom"
     xmlns:cf="https://www.futureplc.com/rss/content-flags"
>
    <channel>
                    <atom:link href="https://www.tomsguide.com/feeds/tag/home-security" rel="self" type="application/rss+xml" />
                            <title><![CDATA[ Latest from Tom's Guide in Home-security ]]></title>
                <link>https://www.tomsguide.com/home/home-security</link>
        <description><![CDATA[ All the latest home-security content from the Tom's Guide team ]]></description>
                                    <lastBuildDate>Thu, 23 Jul 2026 19:08:08 +0000</lastBuildDate>
                            <language>en</language>
                                <item>
                                                            <title><![CDATA[ Amazon Alexa was down: outage affecting security systems and more ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/news/live/amazon-outage-july-23-2026</link>
                                                                            <description>
                            <![CDATA[ Amazon's Alexa voice assistant appears to be suffering an outage affecting the ability to contact systems. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">iB5JtaesDBEns9aFtszgoT</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/5P7fpww3ZptYTqpHtaZvG4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Jul 2026 19:08:08 +0000</pubDate>                                                                                                                                <updated>Thu, 23 Jul 2026 19:33:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/5P7fpww3ZptYTqpHtaZvG4-1280-80.jpg">
                                                            <media:credit><![CDATA[Amazon/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An Echo Show 10 with the Alexa Plus logo displayed on screen]]></media:description>                                                            <media:text><![CDATA[An Echo Show 10 with the Alexa Plus logo displayed on screen]]></media:text>
                                <media:title type="plain"><![CDATA[An Echo Show 10 with the Alexa Plus logo displayed on screen]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/5P7fpww3ZptYTqpHtaZvG4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon's Alexa voice assistant suffered an outage today. Starting around 11:30 a.m. Pacific, more than 2,000 reports suddenly hit the outage tracking site <a href="https://downdetector.com/status/amazon-alexa/" target="_blank">DownDetector</a>.</p><p>We also saw <a href="https://www.reddit.com/r/alexa/new/" target="_blank">reports on Reddit</a> with users asking if Alexa is down. My colleagues found delays in Alexa reporting announcements with Ring systems and the Alexa speakers weren't connecting. Some users on Reddit reported that newer Alexa devices were working but that older speakers were the main ones affected. </p><h2 id="sudden-spike-on-down-detector">Sudden spike on Down Detector</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:680px;"><p class="vanilla-image-block" style="padding-top:56.62%;"><img id="8BcxjJE6FRgY9PQucL7JCn" name="Screenshot 2026-07-23 120726" alt="Alexa outage 7-23-26" src="https://cdn.mos.cms.futurecdn.net/8BcxjJE6FRgY9PQucL7JCn.png" mos="" align="middle" fullscreen="" width="680" height="385" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: DownDetector)</span></figcaption></figure><p>Starting around 11:30 am Pacific, a sudden spike of over 2,000 reports suddenly hit the outage tracking site on Down Detector.</p><p>Most users just reported it was down but a couple said that their Amazon speakers weren't working.</p><p>"No response to voice commands, lots of blue lights. affecting all 3 of my smart speakers," one person wrote.</p><h2 id="relay-between-ring-and-alexa-is-down">Relay between Ring and Alexa is down</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:61.67%;"><img id="Rc4eYmTQ5QsoXuCkjBi9JB" name="Ring Battery Doorbell Pro (2nd gen)" alt="Ring Battery Doorbell Pro (2nd gen)" src="https://cdn.mos.cms.futurecdn.net/Rc4eYmTQ5QsoXuCkjBi9JB.jpg" mos="" align="middle" fullscreen="" width="1500" height="925" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ring)</span></figcaption></figure><p>My colleague John Velasco confirmed that he is getting a delay on announcements from his Ring cameras to Alexa. </p><p>"My Alexa speakers don't announce people when my Ring cameras detect them," he said.</p><p>He had a minute delay he said.</p><h2 id="reports-dive-but-alexa-com-is-down">Reports dive but Alexa.com is down</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ENcHRNWoHMSJgLLu7xM6sh" name="amazon alexa event 2025" alt="Amazon Alexa+ graphic" src="https://cdn.mos.cms.futurecdn.net/ENcHRNWoHMSJgLLu7xM6sh.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon )</span></figcaption></figure><p>On DownDetector reports have taken a nose dive with people reporting things back up.</p><p>However, I've found that Alexa.com is currently inaccessible. Is it down for you?</p><h2 id="multiple-reports-on-alexa-subreddit">Multiple reports on Alexa subreddit</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WXPMeDCBrXbRBUA2FYPddf" name="reddit logo 1.shutterstock_2459885999" alt="Reddit app logo on a phone with blue screens in background" src="https://cdn.mos.cms.futurecdn.net/WXPMeDCBrXbRBUA2FYPddf.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>On the<a href="https://www.reddit.com/r/alexa/new/" target="_blank"> Alexa subreddit</a>, I've seen multiple reports from Alexa users saying that the platform is down.</p><p>"My Alexa platform is unresponsive and the app interface isn't working on either my iPhone or iPad. I have performed basic troubleshooting (cold boot device and iPhone) but still unresponsive. I can ask Alexa to turn on the lights and the device lights indicate that it hears me but does not perform the task. I can also ask about the weather. Same result. Light on device acknowledging being spoken to but nothing is done. is anyone," said one post.</p><p>I have seen some people saying that the outage is only affecting their older devices but not the newer ones.</p><h2 id="a-blip">A blip</h2><p>Well, it appears the outage is over. Lasting just about an hour, it's not clear what caused the Alexa platform to glitch today. </p><p>However, reports on DownDetector are at nearly zero and the systems we have  access to have started to receive normal announcements.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Secure your home this summer with this discounted Ring Doorbell bundle ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/secure-your-home-this-summer-with-this-discounted-ring-doorbell-bundle</link>
                                                                            <description>
                            <![CDATA[ Best Buy's Black Friday in July sale is knocking $75 off this Ring Video Doorbell and Stick Up Camera bundle. Here's why we're big fans of this security duo. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vt79Tkznz8H7KZfpwKvm8A</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SgbBaH4pSeUSTxkV8icfdc-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 23 Jul 2026 18:04:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ louis.ramirez@futurenet.com (Louis Ramirez) ]]></author>                    <dc:creator><![CDATA[ Louis Ramirez ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oYF2xVwCb4pTGhAJi8Yqr5.jpeg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;As deals editor-in-chief at Tom’s Guide, Louis refuses to pay full price for anything. He has over 10 years of experience finding the best deals and coupons to bring readers. Louis price checks&amp;nbsp;against multiple retailers and searches high and low for sales on 4K TVs, Apple devices, streaming services, mattresses, kitchen appliances, and more.&amp;nbsp;He&#039;s also always looking for the the best coupon codes to turn good deals into stellar buys.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;He has covered major retail events like Amazon Prime Day, Black Friday, and Cyber Monday for more than a decade and knows how to spot an epic deal from a fake discount. He&#039;s also great at helping people negotiate better prices on everything from gym memberships to their home internet service. Louis&#039; work has also helped readers find PS5 restock, baby formula, Clorox wipes, and everything in between. For his next major purchase, Louis is hoping to find a killer deal on an M3-based Mac.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A born-and-bred New Yorker, Louis is always in search of the perfect cup of coffee. On his free time, he enjoys swimming, running, and any workout that pushes his Apple Watch to the max. He&#039;s also a big fan of international films, horror movies, and K-dramas. His work has appeared on Gizmodo, CNET, Digital Trends, Dealnews, and Time Out New York.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SgbBaH4pSeUSTxkV8icfdc-1280-80.jpg">
                                                            <media:credit><![CDATA[Amazon edited with Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Battery Doorbell and Ring Indoor Cam shown in front of a house door]]></media:description>                                                            <media:text><![CDATA[Ring Battery Doorbell and Ring Indoor Cam shown in front of a house door]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Battery Doorbell and Ring Indoor Cam shown in front of a house door]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SgbBaH4pSeUSTxkV8icfdc-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/sales-events/i-vetted-hundreds-of-best-buy-black-friday-in-july-sales-heres-the-33-id-pick">Best Buy Black Friday in July</a> sale is slated to run through this weekend. While there are plenty of great deals you can still get, surprisingly some of my favorite deals are on Amazon products. </p><p>For example, right now you can get the <a href="https://bestbuy.7tiv.net/c/1943169/614286/10014?subId1=hawk-custom-tracking&u=https%3A%2F%2Fwww.bestbuy.com%2Fsite%2Fcombo%2Fsmart-doorbells%2F901f3690-b138-4ad7-8bcf-2d32994452ec&ccid=8407&postid=8407-166476-114548&sowid=166476&taskid=114548" target="_blank" rel="nofollow">Ring Video Doorbell (Battery) with Indoor Cam for $74 at Best Buy</a>. That's a whopping $75 off and one of the lowest prices I've seen for this bundle. It includes the latest Ring Video Doorbell, which we ranked as one of the best value options due to its expansive view and sharp 1080p HD video capture. You also get the wireless Ring Stick Up Cam Battery which you can place virtually anywhere inside your home. </p><div class="product"><a data-dimension112="2d9ef9b6-86be-11f1-9a0e-df536b450e2f" data-action="Deal Block" data-label="The Ring Battery Doorbell can be easily installed to watch your front door, while the Indoor Cam can be set up in less than ten minutes to view the interior of your home and give you a 1080p view complete with motion detection and a privacy cover. Though the Indoor Cam does require a power outlet, it also provides two way audio and noise cancellation and has a wide field of view. The Ring Battery Doorbell is our best value choice for Ring doorbells because it delivers the features we like most in Ring doorbells but still costs less than $100." data-dimension48="The Ring Battery Doorbell can be easily installed to watch your front door, while the Indoor Cam can be set up in less than ten minutes to view the interior of your home and give you a 1080p view complete with motion detection and a privacy cover. Though the Indoor Cam does require a power outlet, it also provides two way audio and noise cancellation and has a wide field of view. The Ring Battery Doorbell is our best value choice for Ring doorbells because it delivers the features we like most in Ring doorbells but still costs less than $100." data-dimension25="$74" href="https://bestbuy.7tiv.net/c/1943169/614286/10014?subId1=hawk-custom-tracking&u=https%3A%2F%2Fwww.bestbuy.com%2Fsite%2Fcombo%2Fsmart-doorbells%2F901f3690-b138-4ad7-8bcf-2d32994452ec&ccid=8407&postid=8407-166476-114548&sowid=166476&taskid=114548" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:159.91%;"><img id="W8e4sNKcLJCZjdhV7YccjR" name="Ring Battery Doorbell w: Indoor" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/W8e4sNKcLJCZjdhV7YccjR.jpg" mos="" align="middle" fullscreen="" width="938" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Ring Battery Doorbell can be easily installed to watch your front door, while the Indoor Cam can be set up in less than ten minutes to view the interior of your home and give you a 1080p view complete with motion detection and a privacy cover. Though the Indoor Cam does require a power outlet, it also provides two way audio and noise cancellation and has a wide field of view. The Ring Battery Doorbell is our best value choice for Ring doorbells because it delivers the features we like most in Ring doorbells but still costs less than $100.<a class="view-deal button" href="https://bestbuy.7tiv.net/c/1943169/614286/10014?subId1=hawk-custom-tracking&u=https%3A%2F%2Fwww.bestbuy.com%2Fsite%2Fcombo%2Fsmart-doorbells%2F901f3690-b138-4ad7-8bcf-2d32994452ec&ccid=8407&postid=8407-166476-114548&sowid=166476&taskid=114548" target="_blank" rel="nofollow" data-dimension112="2d9ef9b6-86be-11f1-9a0e-df536b450e2f" data-action="Deal Block" data-label="The Ring Battery Doorbell can be easily installed to watch your front door, while the Indoor Cam can be set up in less than ten minutes to view the interior of your home and give you a 1080p view complete with motion detection and a privacy cover. Though the Indoor Cam does require a power outlet, it also provides two way audio and noise cancellation and has a wide field of view. The Ring Battery Doorbell is our best value choice for Ring doorbells because it delivers the features we like most in Ring doorbells but still costs less than $100." data-dimension48="The Ring Battery Doorbell can be easily installed to watch your front door, while the Indoor Cam can be set up in less than ten minutes to view the interior of your home and give you a 1080p view complete with motion detection and a privacy cover. Though the Indoor Cam does require a power outlet, it also provides two way audio and noise cancellation and has a wide field of view. The Ring Battery Doorbell is our best value choice for Ring doorbells because it delivers the features we like most in Ring doorbells but still costs less than $100." data-dimension25="$74">View Deal</a></p></div><p>The latest Ring Video Doorbell allows you to see, hear, and speak to anyone from the Ring app that you can simply download on your phone, computer, or tablet. It offers 2K resolution with wide-angle video and up to a 6x zoom when you need to close in on details. You'll receive notifications when anyone presses your doorbell or triggers your built-in motion sensors. </p><p>Meanwhile, the Stick Up Cam is a versatile camera that can go almost anywhere in your home. You can place it on a flat surface in your home or even mount it on your wall for a broader view. The device allows you to always be connected to your home and see what's going on or check up on pets, whether you're at work or on vacation.</p><p>With many people planning summer vacations, this Ring bundle will let you monitor your home while saving you a few bucks in the process.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Arlo Essential Pan Tilt Indoor Camera 2K review ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/arlo-essential-pan-tilt-indoor-camera-2k-review</link>
                                                                            <description>
                            <![CDATA[ The Arlo Essential Pan Tilt Indoor Camera 2K has a lot going for it, but unless you’re in Arlo’s ecosystem, there happen to be even better options at a similar price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sY3mH4h4khtn2wnD9ydTxh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gSEstdhQZJG5wiLcykH5uX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 22 Jul 2026 09:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gSEstdhQZJG5wiLcykH5uX-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Arlo Essential Pan Tilt Indoor Camera 2K]]></media:description>                                                            <media:text><![CDATA[Arlo Essential Pan Tilt Indoor Camera 2K]]></media:text>
                                <media:title type="plain"><![CDATA[Arlo Essential Pan Tilt Indoor Camera 2K]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gSEstdhQZJG5wiLcykH5uX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Arlo has long been a major player in the world of <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">smart security cameras</a> and for good reason. Its cameras have always offered high-quality footage, sleek designs, and advanced features. But over the past few years, we’ve seen more and more low-cost models with similar advanced features — something that has led to the Arlo Essential line, including the Arlo Essential Pan Tilt Indoor Camera 2K.</p><p>The new model is part of the third generation of Arlo Essential cameras, and offers pan/tilt functionality, a 2K resolution, AI descriptions, and more, at a pretty reasonable price. Is Arlo successfully taking on the budget players, or should you stick with something else?</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-price-and-availability"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: Price and availability</span></h3><p>The regular price for the Arlo Essential Pan Tilt Indoor 2K camera is $49, but it's frequently on sale. For example, at the time of this writing, it was discounted to <a href="https://us.arlo.com/collections/indoor-cameras/products/arlo-essential-pan-tilt-indoor?variant=51299239330111" target="_blank" rel="nofollow">$34.99 at Arlo.com</a>. The camera can be widely found at most online retailers.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-design-and-installation"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: Design and installation</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VfHfruWadkstJtDLP8J8dm" name="Arlo-Essential-Pan-Tilt-Indoor-Camera-2K-2" alt="Arlo Essential Pan Tilt Indoor Camera 2K" src="https://cdn.mos.cms.futurecdn.net/VfHfruWadkstJtDLP8J8dm.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Arlo Essential Pan Tilt Indoor Camera doesn’t break any boundaries when it comes to design, but it still looks nice enough. Like most of Arlo’s lineup, it has a white matte plastic body, with a black face. It’s not the most premium-looking camera, and it doesn’t feel as durable as Arlo’s higher-end models, but it still looks and feels perfectly fine.</p><p>Its design is kind of split into two parts. There’s a base, which can rotate around as needed for panning. Above that, there’s a bracket holding the camera itself in place – and on the bracket, the camera can tilt up or down. On the back of the base of the camera can be found a USB-C port, which is how the camera is powered. There’s no battery in the camera – you’ll have to keep it plugged in at all times.</p><p>The Arlo Essential Pan Tilt Indoor Camera is designed to be easy to set up. You can place it on a table or another surface, but it also comes with a bracket to mount the camera to a ceiling. I opted to simply place the camera on a flat surface. </p><p>Once you’ve positioned the camera how you want, all you have to do is plug it in and it should turn on. Then, download the app and sign in to your account or create a new one. When you go to add the camera, it should detect it automatically and allow you to connect it to your Wi-Fi network. The setup process took around five minutes, including installing a firmware update that was available.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-image-and-audio-performance"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: Image and audio performance</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="high" data-lazy-src="https://www.youtube-nocookie.com/embed/v_wz7KKzU6k" allowfullscreen></iframe></div></div><p>Generally speaking, footage captured by the camera looks quite good. For starters, it’s decently crisp and detailed. The 2K resolution genuinely helps. I have tested plenty of  1080p cameras and could notice the difference between this camera and those models. </p><p>The wide field-of-view, which sits in at 130 degrees, allows the camera to capture most of a room. Theoretically, it can capture most of a backyard when pointed out of a window, however it’s not really built for this purpose (the company makes the <a href="https://www.tomsguide.com/home/smart-home/arlo-essential-pan-tilt-outdoor-review-solid-and-inexpensive-if-unspectacular">Arlo Essential Pan Tilt Outdoor camera</a> for that), and the infrared lights will reflect on the glass in low-light environments, making for footage that doesn’t really show anything beyond the window itself. </p><p>The camera has subject-tracking, and it seemed to work well during testing. Decent subject-tracking is one of the biggest advantages to cameras with pan/tilt functionality, as it means that you’ll still be able to track suspicious activity even when a subject would otherwise be out of view. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/5MB95UjeL1Q" allowfullscreen></iframe></div></div><p>One of the trade-offs you get by buying this camera over some of the others is the lack of HDR, which can have an impact depending on how you use the camera. For example, it struggled to capture both darker indoor environments and brighter scenes through the window on a bright day, at the same time.</p><p>Another trade-off is the lack of a spotlight. This means that you’re stuck with infrared-based night recording, rather than color night footage of any kind. I did find that night footage was reasonably crisp, but without a spotlight to illuminate a scene you will miss out on some details that could be important. That said, depending on the power of a spotlight, infrared is often better at capturing far-away details.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/llomAHbnJKw" allowfullscreen></iframe></div></div><p>The camera supports two-way audio, and it worked pretty well. Arlo says that the camera has “noise-canceling 2-way audio,” which supposedly lets it detect and play audio more cleanly. In a two-way audio setup, I was able to hear someone in front of the camera, through my phone, quite well, and while I did have to ask them to speak up, the camera’s microphones and audio processing made for a sightly better audio experience than the Wyze Cam Pan v4 that I tested at the same time. </p><p>That said, the speaker built into the camera wasn’t as good, and made my voice sound tinier. That’s not a huge deal though – my voice was still easy to hear through the camera’s speaker.</p><p>Overall, the Arlo Essential Pan Tilt Indoor Camera 2K offers crisp and detailed video. Only one problem – the <a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review">Wyze Cam Pan v4</a> exists, and it costs only $10 extra. I happened to be reviewing the two at the same time, and found that while there are areas in which Arlo does slightly better, like in picking up audio and having a wider lens, the Wyze Cam Pan v4 generally captured far better footage, both in resolution (it’s a 4K camera), and in color accuracy. That’s not to mention the fact that the Wyze camera has a spotlight for color night recording. </p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-app-and-smart-home-support"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: App and smart home support</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="uGpk38oK45qhDuPJ5xBPH6" name="Arlo-Essential-Pan-Tilt-Indoor-Camera-2K-screenshotsjpg" alt="Arlo Essential Pan Tilt Indoor Camera 2K" src="https://cdn.mos.cms.futurecdn.net/uGpk38oK45qhDuPJ5xBPH6.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Arlo app is generally well-designed and easy to use, and if you use multiple Arlo cameras, you’ll be able to manage them all easily. The app is split up into five different tabs. The main screen is the Dashboard tab, which shows thumbnails for all of your Arlo cameras and lets you arm and disarm your security system as a whole (or at least all the Arlo products in your system). </p><p>The other tabs include the Feed (which shows footage in chronological order), an Emergency tab (for getting in touch with emergency services and activating sirens), a Devices tab (to manage your devices), and a Routines tab (to set up automations).</p><p>From the Dashboard and Devices tabs, you can tap on a camera to access a live feed of what the camera sees and tweak its settings. This is where you can do things like enter two-way audio mode and control the pan/tilt settings of the camera. </p><p>Controlling the positioning of the camera is relatively easy, and you can set a “home” point, which is where the camera will return to after it either automatically tracks a subject, or you manually move its position. You can also set additional positions, which will allow you to set the camera’s position easily without having to manually move the camera.</p><p><strong>AI features</strong></p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Hx9DTZy8dGxFNCJW4fpXK9" name="Arlo-Essential-Pan-Tilt-Indoor-Camera-2K-5" alt="Arlo Essential Pan Tilt Indoor Camera 2K" src="https://cdn.mos.cms.futurecdn.net/Hx9DTZy8dGxFNCJW4fpXK9.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Some of the smart features included in the subscription worked well too. You’ll get what are now common features, like person detection, animal detection, package detection, and so on. Obviously, you’re unlikely to use a camera like this for package detection, but the camera did a pretty good job at telling me that a person was detected instead of just that “motion” was detected. </p><p>The object-recognition tech goes a step further too – using generative AI to provide a short text summary of what was captured alongside events. I was pleasantly surprised with how well this worked. Here’s an example of the kinds of summaries it produced:</p><p>“A person is holding a camera and walking towards the camera. The person is wearing a blue shirt. The scene is a backyard with a wooden fence, a lawn, and some patio furniture. There are also some toys on a table in the foreground, including a pineapple-shaped container and a purple bottle.”</p><p>For reference, in the clip recorded I was carrying my camera in my backyard as I was taking photos of a speaker for a review. The other details were almost entirely correct – with the only incorrect detail being that the pineapple “container” (a small kids bubble machine) and purple bottle were actually on a Traeger smoker, instead of a table – but there was no way for the camera to possibly know this, as the smoker was directly in front of the window the camera was pointed out of, and only the top of it, with its cover on, was visible. </p><p>And, after all, objects were placed on top of it as if it <em>were</em> a table. When I moved the camera to the driveway instead of the backyard, the camera even identified my car make and model correctly in some descriptions.</p><p>The Arlo Essential Pan Tilt Indoor Camera 2K works with Alexa, Google Home, IFTTT, and Samsung SmartThings. The main smart home ecosystem it <em>doesn’t</em> support is HomeKit – so if you’re looking for a HomeKit camera, you’ll need to keep looking. </p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-video-storage-and-subscriptions"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: Video storage and subscriptions</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4BfeRHBTHj7XPCs2vtGxmD" name="Arlo-Essential-Pan-Tilt-Indoor-Camera-2K-4" alt="Arlo Essential Pan Tilt Indoor Camera 2K" src="https://cdn.mos.cms.futurecdn.net/4BfeRHBTHj7XPCs2vtGxmD.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Arlo Essential Pan Tilt Indoor Camera 2K doesn’t have local recording, and unfortunately, it doesn’t work with any of Arlo’s base stations or hubs, so you can’t record locally at all. Instead, you’ll need to subscribe to one of Arlo’s cloud storage plans, called Arlo Secure. </p><p>Arlo Secure gets you a 60-day video history, but it also offers other features. Notably, you can’t access features like the person recognition, or the audio recognition features, without it. If you go for the highest-tier subscription, you’ll also get 24/7 emergency response and professional monitoring.</p><p>Here’s a rundown of pricing for Arlo Secure. Arlo Secure Plus costs $9.99 per month or $95.88 per year for one camera, or $19.99 per month or $215.88 per year for unlimited cameras. Arlo Secure Premium (which includes professional monitoring) costs $29.99 per month or $299.88 per year, and supports unlimited cameras. There’s no single-camera Arlo Secure Premium option.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-indoor-camera-2k-review-verdict"><span>Arlo Essential Pan Tilt Indoor Camera 2K Review: Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MaXDjiivVBHjNhCmsdRSmM" name="Arlo-Essential-Pan-Tilt-Indoor-Camera-2K-3" alt="Arlo Essential Pan Tilt Indoor Camera 2K" src="https://cdn.mos.cms.futurecdn.net/MaXDjiivVBHjNhCmsdRSmM.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Arlo Essential Pan Tilt Indoor Camera 2K is an excellent pan/tilt camera, with a solid app, at a great price. It represents a continuation by Arlo to offer affordable alternatives to its higher-end models – and if you’re in the Arlo ecosystem already, then it’s easily worth considering for those who want an indoor pan/tilt camera. That’s <em>especially</em> true for those who have an Arlo Secure subscription.</p><p>But if you’re <em>not</em> already in the ecosystem, then another option might be better for your needs. The <a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review">Wyze Cam Pan v4</a> in particular is a better option than the Arlo model, at least when it comes to the basics. It costs only $10 extra, has a 4K camera instead of a 2K one, has similar AI-powered object recognition and tracking features, and even has a microSD card slot for local recording.  </p><p>The higher resolution genuinely makes a difference, and in general, you’ll get more detailed and accurate images from the Wyze model. The only thing to consider is the fact that while the Wyze model has AI-generated descriptions, they’re locked behind Wyze’s most expensive subscription, which costs $19.99 per month, while Arlo offers it in its Plus plan for $9.99 per month. </p><p>Similarly, the <a href="https://www.tomsguide.com/home/smart-home/eufy-cam-s350-review-the-best-4k-indoor-security-camera-without-a-subscription">Eufy Cam S350</a> is another pan-and-tilt camera that delivers 4K video, local storage, and even better, gives you AI summaries for free. </p><p>Ultimately, if you already have Arlo cameras, then the Essential Pan Tilt Indoor Camera 2K is a good complement to your system. Otherwise, it's worth looking elsewhere.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Arlo Essential Pan Tilt Outdoor review: Solid and inexpensive, if unspectacular ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/arlo-essential-pan-tilt-outdoor-review-solid-and-inexpensive-if-unspectacular</link>
                                                                            <description>
                            <![CDATA[ The Arlo Essential Pan Tilt outdoor security camera is a good addition to the company's ecosystem, but new buyers will want to look at more affordable options. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">gPaQuiPecbu5fs8v2phvye</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/srfFEqDXptnXqMibbv7tPK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 19 Jul 2026 05:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/srfFEqDXptnXqMibbv7tPK-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Arlo Essential Outdoor pan tilt camera]]></media:description>                                                            <media:text><![CDATA[Arlo Essential Outdoor pan tilt camera]]></media:text>
                                <media:title type="plain"><![CDATA[Arlo Essential Outdoor pan tilt camera]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/srfFEqDXptnXqMibbv7tPK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Arlo has long been known for making some of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> — albeit at a premium — but recently it has been expanding into budget territory. The Arlo Essential Pan Tilt is aimed at bringing that Arlo quality to a lower price point, with 360-degree pan capabilities and a 2K video resolution.</p><p>The company has both an indoor and an outdoor version of this camera; in this review, I'm taking the outdoor-compatible model for a spin. While the two share most features, the outdoor model is, of course, designed to be mounted and used in a variety of weather conditions, but still at a very reasonable price. It also faces tough competition from the likes of Wyze and other budget models. Is it worth buying over the others?</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-price-and-availability"><span>Arlo Essential Pan Tilt outdoor camera review: Price and availability</span></h3><p>The Arlo Essential Pan Tilt camera came out in 2025, costs $59.99 — but can often be found for much less — and comes with an outdoor power adapter. It’s only available in white, and is can be purchased at Amazon, Arlo, and other online retailers.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-design-and-setup"><span>Arlo Essential Pan Tilt outdoor camera review: Design and setup</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sYYYatKg95ECbAMytiEL6V" name="Arlo-Essential-Outdoor-pan-tilt-camera-2" alt="Arlo Essential Outdoor pan tilt camera" src="https://cdn.mos.cms.futurecdn.net/sYYYatKg95ECbAMytiEL6V.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Arlo Essential Pan Tilt outdoor specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Resolution:</strong> 2K<br><strong>Field of view:</strong> 130 degrees<br><strong>Power:</strong> Wired (outdoor power adapter included)<br><strong>Connectivity:</strong> Wi-Fi (2.4 & 5 GHz)<br><strong>Weather resistance:</strong> IP65<br><strong>Operating temperature</strong>: -4ºF - 113º F</p></div></div><p>The design of the Arlo Essential Pan Tilt is perfectly fine but not necessarily all that premium. It's noticeably lighter and less durable-feeling than Arlo's higher-end models, though it thankfully doesn’t stray into feeling cheap. The overall aesthetic follows typical Arlo design language, with a white body and black face that should blend reasonably well with most home exteriors. The weather-resistant build handles outdoor conditions without issue.</p><p>The camera was easy to set up, too. The package includes mounting hardware, and installation involves screwing the base plate to your desired location, then mounting the camera to that base plate.There's no battery option, so the camera has to be plugged in to work, and you’ll need to place it within reach of a power outlet. Arlo includes a long 16-foot power cable in the box.</p><p>The entire physical installation took under 10 minutes. The software setup through the Arlo Secure app was equally simple, with clear instructions for connecting to Wi-Fi and positioning the camera.</p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/bCbmnkM3sn3sTEBfdr82be.jpg" alt="Arlo Essential Outdoor pan tilt camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/FA36Thta7UjG2MFJzpVfCg.jpg" alt="Arlo Essential Outdoor pan tilt camera" /><figcaption><small role="credit">Future</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/qirceJHJjXMKwF28PfK47i.jpg" alt="Arlo Essential Outdoor pan tilt camera" /><figcaption><small role="credit">Future</small></figcaption></figure></figure><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-video-and-audio-quality"><span>Arlo Essential Pan Tilt outdoor camera review: Video and audio quality</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/vO6O0UkozNU" allowfullscreen></iframe></div></div><p>The Arlo Essential Pan Tilt camera is able to capture video at a 2K resolution, and it has a 130-degree field of view, which is wide enough to see a good amount of even a wide backyard, with the right positioning — plus, of course, it can pan for a full 360-degree view, though not all at once.</p><p>For night vision, the camera includes a spotlight for color video in darkness. The spotlight isn't particularly powerful and mainly illuminates the immediate area, but it's fine for identifying people and objects nearby. For far-away subjects, you’ll want to rely more on infrared night vision.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/oqEoMJOyABk" allowfullscreen></iframe></div></div><p>The lack of HDR causes some issues with mixed lighting conditions. In my setup, the camera faced direct sunlight in the afternoon, which could blow out portions of the image. This wasn't a major issue for me since my house blocked the sun as it got lower in the afternoon, but if that wasn't the case, it would have made it difficult to see activity in those areas. The same problem appeared in low light situations — if part of the scene was brightly illuminated by the spotlight at night while other areas remained dark, subjects could appear as dark shadows, lacking detail.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/WdDKalwzqqk" allowfullscreen></iframe></div></div><p>Motion detection performance was fine but not great. The camera started recording immediately when I walked away from just out of view. However, when testing from the opposite direction, I was halfway across my backyard walking toward the camera before recording kicked in and the spotlight turned on. This delay could mean missing the beginning of important events.</p><p>Two-way audio worked reasonably well. I could hear others clearly through my phone, though I sometimes had to ask them to speak up for better clarity. The microphones performed slightly better than those on the <a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review">Wyze Cam Pan v4</a>, picking up voices decently well. However, the speaker quality was worse — my voice sounded tiny and compressed, though it was still understandable enough for basic communication.</p><p>Overall video quality was good for the price point, though the Wyze Cam Pan v4 delivered better video with higher resolution, better color reproduction, and a more powerful spotlight.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-app-and-smart-home-support"><span>Arlo Essential Pan Tilt outdoor camera review: App and smart home support</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="W7xyEpwguGZJJzU8XR3mEZ" name="Arlo-Essential-Outdoor-pan-tilt-camera-screenshots" alt="Arlo Essential Outdoor pan tilt camera screenshots" src="https://cdn.mos.cms.futurecdn.net/W7xyEpwguGZJJzU8XR3mEZ.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The camera is controlled using the Arlo Secure app, which feels polished, clean, and mostly easy to navigate. The pan and tilt controls are intuitive to use, and it was easy to set a "home" position along with other preset positions for quick repositioning.</p><p>As you would expect in 2025, the camera supports a range of AI-based features. For example, there’s a generative AI summary feature for those with paid plans, and they were detailed and accurate, like most competitors. This is perhaps one of the best AI features for security camera so far, and it can definitely help cut down on how many clips you actually look at, versus just read the description for. </p><p>The camera also supports "Custom Detection," which uses AI to detect user-defined events. I tested this by setting up detection for "toys left on the grass" that might interfere with my robotic lawn mower. Setup involved taking snapshots of what I wanted to detect versus what I didn't want detected, along with writing a short description. While the feature worked, it triggered incorrectly fairly often, though usually because something else was on the grass rather than complete false positives. It's largely designed for things like leaving a garage door open or a gate open.</p><p>Everything else about the app is pretty straightforward. You can set motion detection zones, spotlight settings, and so on. AI-powered alerts for people, animals, and packages require an Arlo Secure subscription -- and without it, you'll only receive generic motion notifications. </p><p>The camera can work with Alexa or Google Home, but it doesn't support HomeKit. Within Google Home and Alexa, you'll be able to see feeds from your cameras alongside your other devices, but you'll still need the Arlo app for things like setting the camera up and tweaking settings.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-storage-and-subscription-plans"><span>Arlo Essential Pan Tilt outdoor camera review: Storage and subscription plans</span></h3><p>The Arlo Essential Pan Tilt doesn't have any form of local storage — there's no microSD card slot, and it can't use Arlo's SmartHub devices for local recording. This means cloud storage via an Arlo Secure subscription is mandatory for any video history beyond live viewing. A subscription is also required to unlock advanced features like smart object recognition, cloud video history, and person detection. </p><p>The subscription pricing isn't bad, but it's also not incredible. Arlo Secure Plus costs $9.99 per month for one camera or $19.99 per month for unlimited cameras, dropping to $7.99 and $17.99 respectively when billed annually. The Premium tier runs $29.99 monthly for unlimited cameras, or $24.99 when billed annually. You'll get AI features and cloud storage with the Plus tier, and you only really need to upgrade to Premium if you want things like professional monitoring.</p><h3 class="article-body__section" id="section-arlo-essential-pan-tilt-outdoor-camera-review-verdict"><span>Arlo Essential Pan Tilt outdoor camera review: Verdict</span></h3><p>The Arlo Essential Pan Tilt delivers excellent coverage with its pan-tilt functionality and sharp 2K video at a very solid $59.99 price point. The camera does a good job at monitoring large areas that would typically require multiple cameras, and the motion tracking works quite well. It's not perfect — there's no local storage and you'll really have to get a subscription to get the most out of it. But, that's often expected these days anyway.</p><p>Or it is for the <em>most</em> part. The biggest competitor right now comes in the form of the Wyze Cam Pan v4, which offers a better video quality, a spotlight, local recording, and AI features, for the same price. For those new to home security, the Wyze Cam Pan v4 is a better option overall — but if you're in the Arlo ecosystem and want something to add to your setup, you're still getting a great product with the Arlo Essential Pan-Tilt.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested two solar smart locks that never need to be recharged — and there is one clear winner ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/i-tested-two-solar-smart-locks-that-never-need-to-be-recharged-and-there-is-one-clear-winner</link>
                                                                            <description>
                            <![CDATA[ I tested the Desloc V150 Plus vs. Lockin Veno Solar to see which solar-powered smart lock is the best. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wC8fBYs5Dj29ymJiZALfTA</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MMMsm97DXytvYunmEUFpb-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Jul 2026 06:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MMMsm97DXytvYunmEUFpb-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Desloc V150 Plus vs. Lockin Veno Solar]]></media:description>                                                            <media:text><![CDATA[Desloc V150 Plus vs. Lockin Veno Solar]]></media:text>
                                <media:title type="plain"><![CDATA[Desloc V150 Plus vs. Lockin Veno Solar]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MMMsm97DXytvYunmEUFpb-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html">best smart locks</a> have long been a useful tool, but one of the biggest issues hampering their adoption has been battery life. Unlike most other smart home devices, smart locks have to operate without being plugged in, which means you have to change or recharge their batteries on a regular basis.  </p><p>Now it seems that issue is being solved. I recently tested two smart locks that have solar panels built right into them. That means you never have to worry about your lock running out of juice and having to find an external power bank or the physical keys in order to do something as simple as get inside your own home.</p><p>The <a href="https://www.tomsguide.com/home/smart-home/desloc-v150-plus-review">Desloc V150 Plus</a> and <a href="https://www.tomsguide.com/home/smart-home/lockin-veno-solar-review">Lockin Veno Solar</a> offer some similar features, but actually vary more than you might expect. Here's a look at both of them, and what makes one better than the other.</p><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-price-and-availability"><span>Desloc V150 Plus vs. Lockin Veno Solar: Price and availability</span></h3><p>The first major difference between these two locks is their price, and it's a pretty dramatic difference. While the <a href="https://www.kickstarter.com/projects/desloc/worlds-first-self-charging-solar-smart-lock?ref=dlik6z" target="_blank">Desloc V150 Plus has a Kickstarter price starting at $169</a>. Its retail price is as high as $399.99. It will be available through retail channels starting in August, so if you want one it may be worth seeing if it's still available at a discount through Kickstarter.</p><p>The Lockin Veno Solar, by contrast, is available now, and it's dramatically cheaper when it comes to the retail price. There are actually two models available: one which has a face scanner and the other a palm vein scanner. I tested the face scanner, which put it on a more level playing field with the Desloc V150 Plus. Both models, however, cost $199 or around half the retail price of the Desloc. There's also a bundle with a door handle for $259.99.</p><p><strong>Winner: Lockin Veno Solar</strong></p><h3 class="article-body__section" id="section-specs"><span>Specs</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Desloc V150 Plus</strong></p></td><td  ><p><strong>Lockin Veno Solar</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Lock type</strong></p></td><td  ><p>Deadbolt</p></td><td  ><p>Deadbolt</p></td></tr><tr><td class="firstcol " ><p><strong>Unlocking methods</strong></p></td><td  ><p>Fingerprint, face, key</p></td><td  ><p>Palm, face, PIN, key</p></td></tr><tr><td class="firstcol " ><p><strong>Connectivity</strong></p></td><td  ><p>Wi-Fi, Bluetooth</p></td><td  ><p>Wi-Fi, Bluetooth, Thread</p></td></tr><tr><td class="firstcol " ><p><strong>Works with</strong></p></td><td  ><p>Alexa, Google Home</p></td><td  ><p>Alexa, Google Home,  Matter</p></td></tr><tr><td class="firstcol " ><p><strong>Weather resistance</strong></p></td><td  ><p>IP65</p></td><td  ><p>IP53</p></td></tr><tr><td class="firstcol " ><p><strong>BHMA</strong> </p></td><td  ><p>Level 3</p></td><td  ><p>Level 3</p></td></tr></tbody></table></div><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-design-and-setup"><span>Desloc V150 Plus vs. Lockin Veno Solar: Design and setup</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="u6aUzWVGe8zc7MzhKEeMAT" name="Desloc-V150-Plus-1-LIST" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/u6aUzWVGe8zc7MzhKEeMAT.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>While the two locks don't look exactly the same, I wouldn't necessarily say that one of them looks much better than the other. Both of them definitely look like smart home gadgets, which isn't necessarily a bad thing, but is worth noting for those who might want something more that leans more towards luxury.</p><p>The exterior portion of both of these blocks is a relatively bulky black rectangle made of metal and plastic. The Desloc V150 Plus has a large rectangular solar panel which sits in between the face scanner and a fingerprint scanner. It does not have a PIN pad. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Evx6wPWQxDbvvMKmbFNosg" name="Lockin-Veno-Solar-Face-Smart-Lock-1-LIST" alt="Lockin Veno Solar smart lock" src="https://cdn.mos.cms.futurecdn.net/Evx6wPWQxDbvvMKmbFNosg.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>By contrast, the Lockin Veno Solar does have a PIN pad, but there is no fingerprint scanner. Both locks have an interior portion that houses the battery and has a thumb latch for manual locking and unlocking.</p><p>The build quality is pretty similar, but the Desloc does feel slightly more durable. It has an IP65 rating for weather resistance, which is better than the IP53 rating offered by the Lockin Veno Solar. I suspect both of them will be able to withstand most weather events, but if you're worried about damage, then the Desloc is probably the more durable option. They both have BHMA Grade 3 deadbolt certification.</p><p>Installation of the two locks is pretty similar. Both of them require that you completely remove your existing deadbolt and locking mechanism. Once that's done, you'll install the included deadbolt, then thread the exterior portion of the lock through the deadbolt and attach it to a base plate. Finally, you'll screw the interior portion of the lock into the base plate. Then you'll download the lock's respective apps, create an account, and add the lock to your account.</p><p><strong>Winner: Desloc V150 Plus</strong></p><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-app-and-smart-home"><span>Desloc V150 Plus vs. Lockin Veno Solar: App and smart home</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j3NXvoy2A3DQ2rG8op4kuE" name="Lockin-Veno-Solar-Face-Smart-Lock-2" alt="Lockin Veno Solar smart lock" src="https://cdn.mos.cms.futurecdn.net/j3NXvoy2A3DQ2rG8op4kuE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Software support is another area in which the two locks diverge. The V150 Plus runs on Desloc's existing app and connects to Wi-Fi and Bluetooth without needing a hub. I found the app decently easy to use. Adding fingerprints and faces was straightforward, I could remotely lock and unlock the door, and I got real-time access logs and battery information, including a chart showing how much battery the device has gained through solar power. Hopefully, of course, you won't need to worry much about battery at all.</p><p>The Lockin Smart app, similarly, covers the basics well. You can generate one-time PINs, enroll new faces and codes, configure auto-lock, and so on. I would have liked an overview of how much battery the lock gains over time, the way Desloc offers, but its absence isn't a big deal. With the Desloc, I found that I checked the battery gain once or twice over the first few days, then mostly forgot about it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nkXrKv6e3bGNapHy3Q9yqG" name="Desloc-V150-Plus-3" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/nkXrKv6e3bGNapHy3Q9yqG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The big area where the Lockin Veno Solar pulls ahead is in smart home support. The Desloc V150 Plus supports Google Home and Amazon Alexa, but Lockin goes much further with Matter support. That essentially means that you can add the Veno Solar to any modern smart home ecosystem, including Google Home, Amazon Alexa, Apple Home, and more. </p><p>Sure, for those who use Google Home or Alexa, that difference may not be a very big deal. But what if you want to change ecosystems down the line? Or what if your partner uses an iPhone while you use an Android device? Matter support solves all of these issues, and it's kind of becoming table stakes for smart home devices, at least when the Matter spec supports them like it does locks.</p><p><strong>Winner: Lockin Veno Solar</strong></p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQw4AX"></div>                            </div>                            <script src="https://kwizly.com/embed/WQw4AX.js" async></script><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-performance"><span>Desloc V150 Plus vs. Lockin Veno Solar:  Performance</span></h3><p>When it comes to speed and reliability of unlocking, neither of these smart locks is incredibly impressive. However, each has one feature that the other doesn't. The Desloc V150 Plus doesn't have a PIN pad, which is kind of a major omission, and means that you can't easily assign guest codes. What it does have is a fingerprint sensor, and that can come in handy given the fact that the face scanner is pretty slow. Much of the time I found that it was faster to scan my fingerprint to unlock the door than wait the few seconds for the lock to scan my face.</p><p>The Lockin Veno Solar doesn't have a fingerprint scanner but does have a PIN pad. It was actually faster to just wait for the lock to scan my face, even though it did take a few seconds. I'm not sure either of these two locks was faster at face scanning than the other. That's not a good thing; they were both slow. If you're deciding between these two locks, you'll have to determine whether you prefer to have a PIN pad or a fingerprint scanner.</p><p>It's also worth quickly noting that the Lockin Veno Solar had much more reliable Wi-Fi connectivity. Both of these locks were installed on a garden shed in my backyard, which can sometimes have spotty reception. The Desloc V150 Plus struggled a fair bit to retain a Wi-Fi connection, but the Lockin Veno Solar had no such issue. That will really only be an issue for you if you plan on putting your smart lock in an area where Wi-Fi reception isn't all that good. For most people who install the lock on their front door, both locks will retain connectivity perfectly fine.</p><p><strong>Winner: Lockin Veno Solar</strong></p><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-battery-life-and-recharging"><span>Desloc V150 Plus vs. Lockin Veno Solar: Battery life and recharging</span></h3><p>Given the fact that these are both solar-powered locks, perhaps one of the more important questions is whether or not you'll need to worry about battery and charging. Thankfully, they both charged perfectly fine, and while they don't charge very quickly, that doesn't really matter. Basically, you'll never have to worry about whether or not your lock is charged up.</p><p>Again, don't expect them to fully charge overnight. When I first installed the Desloc V150 Plus, it had around 12% battery. A week later, it had 34%. When I installed the Lockin Veno Solar, it arrived with around 83%, and a week later, it had 90%. The actual charging speed, of course, doesn't really matter all that much. What matters is that they're not losing power over time. And if you fully charge your lock when you first get it, I expect both of these locks will remain around 100% at all times.</p><p><strong>Winner: Tie</strong></p><h3 class="article-body__section" id="section-desloc-v150-plus-vs-lockin-veno-solar-verdict"><span>Desloc V150 Plus vs. Lockin Veno Solar:  Verdict</span></h3><div ><table><tbody><tr><td class="firstcol empty" ></td><td  ><p><strong>Desloc V150 Plus</strong></p></td><td  ><p><strong>Lockin Veno Solar</strong></p></td></tr><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ></td><td  ><p>X</p></td></tr><tr><td class="firstcol " ><p><strong>Design</strong></p></td><td  ><p>X</p></td><td  ></td></tr><tr><td class="firstcol " ><p><strong>App/Smart Home</strong></p></td><td  ></td><td  ><p>X</p></td></tr><tr><td class="firstcol " ><p><strong>Battery life</strong></p></td><td  ><p>X</p></td><td  ><p>X</p></td></tr><tr><td class="firstcol " ><p><strong>Performance</strong></p></td><td  ></td><td  ><p>X</p></td></tr><tr><td class="firstcol " ><p><strong>Total</strong></p></td><td  ><p>2</p></td><td  ><p>4</p></td></tr></tbody></table></div><p>For now, if you're looking for a smart lock with a solar charger, it's probably worth buying the Lockin Veno Solar. It may not have a fingerprint reader, but it does have a pin pad, plus it's around half the price of the Desloc V150 Plus.</p><p>That said, if a fingerprint reader really is important to you and you find a solar panel important, then you'll still like what's offered by the Desloc V150 Plus. You'll just have to stomach the additional cost or try to snag one from the Kickstarter campaign.</p><p>The alternative, of course, is to wait a little for solar panels to become more common on smart locks. The first few smart locks with solar panels feel a bit more like proofs-of-concept rather than the complete package. </p><p>I would have liked to see a lock with both a fingerprint scanner and a pin pad. That's not to mention support for Matter and even tech like Apple's Home Key and Ultra Wideband. I expect eventually we'll get these features in solar-powered locks, but for now, we'll have to wait.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/smart-home/which-security-camera-has-the-best-ai-we-put-six-to-the-test-from-google-ring-blink-and-others-to-find-out"><strong>Google vs. Ring vs. Arlo: We put 6 security cameras to the test to find the most accurate AI</strong></a></li><li><a href="https://www.tomsguide.com/home/smart-home/apple-intelligence-security-camera-features-just-seriously-undercut-ring-and-google"><strong>Apple Intelligence security camera features just seriously undercut Ring and Google</strong></a></li><li><a href="https://www.tomsguide.com/home/smart-home/save-yourself-usd100-a-year-the-5-best-subscription-free-security-cameras"><strong>Save yourself $100 or more a year: These security cameras and video doorbells don't require a subscription</strong></a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 9 smart locks and security cameras for a safer front door — from under $70 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/9-smart-locks-and-security-cameras-for-a-safer-front-door-from-under-usd70</link>
                                                                            <description>
                            <![CDATA[ There are more options to front door security than just the classic Ring doorbell. This list pulls together a range of security cameras, smart locks, lights and more. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">BovH56cMqQkPwZmXbCBB9U</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/tQC2kFJnu3oPQgs6p49ttJ-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 06 Jul 2026 19:32:35 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Will Salmon ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/HpRWP7Mh9ErgRGoTvZBbBJ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Will Salmon is Tom&#039;s Guide&#039;s Collections Editor, curating advice on the best products to spend your money on. Will has been writing about tech and entertainment for almost 20 years, including stints as GamesRadar+&#039;s Streaming Editor, editing comics website Newsarama, and writing for lots and lots of magazines.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/tQC2kFJnu3oPQgs6p49ttJ-1280-80.jpg">
                                                            <media:credit><![CDATA[eufy Security, Arlo, Philips / Edited by Gemini]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A selection of security cameras and smart door gadgets.]]></media:description>                                                            <media:text><![CDATA[A selection of security cameras and smart door gadgets.]]></media:text>
                                <media:title type="plain"><![CDATA[A selection of security cameras and smart door gadgets.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/tQC2kFJnu3oPQgs6p49ttJ-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When it comes to upgrading your front door, Amazon's ubiquitous Ring doorbell has really corned the market. They're not the only company in home security, though. The range of products that can be bought to transform your boring old door into a fully-featured and far more secure smart door is wide, with brands like Philips, Chamberlain and Arlo all offering terrific items that will make you feel safer and more in control.</p><p>For this list I've selected a range of security cameras, fingerprint locks, video doorbells, deadbolts and more. Adding these to your home will enable you to monitor who is approaching your house, turn on the lights, and keep your precious home safe and sound. Many of these products come in at well under $100, too, so they're not going to break the bank.</p>        <div class="featured_product_block featured_block_hero" data-id="8d60ae97-ca3d-4d68-9e63-c9e8796555eb">            <a href="https://www.amazon.com/dp/B0CLS4WRHH?lv=shuf&th=1&channelId=500&ref_=t_ac_view_request_product_title&plpRedirect=mhFallback" data-model-name="Philips Fingerprint Keyless Entry Door Lock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.33%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/nxoPkE9aZedCBiTJ6MKgRS.jpg" alt="Philips Fingerprint Keyless Entry Door Lock."></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Philips</div>                                        <div class="featured__title">Philips Fingerprint Keyless Entry Door Lock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="001f31d0-f2ca-4aec-b01e-2ae650c5902f">            <a href="https://www.amazon.com/dp/B0BZ55JZ4S?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Eufy Solar Security Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/GzUFxoGaPFKiEvvSdXceh9.jpg" alt="Eufy Security Solocam S220, Solar Security Camera, Wireless Security Camera Outdoor, 2k Resolution, Continuous Power, Built-In 8gb, No Subscription, Homebase 3 Compatible, for Outdoor Surveillance"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>eufy Security</div>                                        <div class="featured__title">Eufy Solar Security Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="91adc6fb-1440-48b8-922b-06106cf075c6">            <a href="https://www.amazon.com/dp/B0FC6RBHJ5?lv=shuf&th=1&channelId=500&ref_=t_ac_view_request_product_title&plpRedirect=mhFallback" data-model-name="Philips Smart Lock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:80.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/r5kRpvv6vf4aH4iG5ET8iA.jpg" alt="Philips Smart Lock, Smart Door Lock Built-In Wifi, App Remote Control, Keyless Entry Door Lock for Front Door, Deadbolt Lock Auto Lock, Support Alexa & Google, Ip54 Waterproof, Black"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>PHILIPS</div>                                        <div class="featured__title">Philips Smart Lock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4a2a90b9-d89e-459b-a3a5-06ff2381c491">            <a href="https://www.amazon.com/dp/B0GYDPPGTW?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Philips Wi-Fi Smart Deadbolt Lock for Front Door" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/3437a4zTbUYh89KecnizFC.jpg" alt="Philips Wi-Fi Smart Deadbolt Lock for Front Door, Keyless Entry Door Lock With Keypad, Fingerprint Door Lock, App Remote Control, Auto Lock, Works With Alexa and Google, Security Easy Installation"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>PHILIPS</div>                                        <div class="featured__title">Philips Wi-Fi Smart Deadbolt Lock for Front Door</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="7a3c2acd-fb80-4db5-a504-905e19bd1e80">            <a href="https://www.amazon.com/dp/B0FJTM9WP8?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Chamberlain MyQ Video Doorbell" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/uPfbqJexruPdVyNoidtMzE.jpg" alt="Chamberlain Myq Video Doorbell Myq Smart Outdoor Wired Camera"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>CHAMBERLAIN</div>                                        <div class="featured__title">Chamberlain MyQ Video Doorbell</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="f731cd22-ebeb-48fc-a47d-ad31a9d04700">            <a href="https://www.amazon.com/dp/B0DK6RYLSM?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Philips Video Doorbell Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:125.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zEEYZ6rDUK8sN5mMSok6NK.jpg" alt="Philips Security Video Doorbell Camera (chime Included), No Monthly Fee, Dual Cameras 2k Qhd With Motion Detection, 2-Way Audio, Supports Alexa & Google Assistant, Battery/wired Powered"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>PHILIPS</div>                                        <div class="featured__title">Philips Video Doorbell Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="ecc12e25-9fc6-4ac2-89e5-0287fd2ac5db">            <a href="https://www.amazon.com/dp/B0GFN226RF?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Dreame Wi-Fi Smart Door Lock" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/NZpS5imYrH3QNFdiZ5FkvL.jpg" alt="Dreame Wi-Fi Smart Door Lock for Front Door A10, Matter Over Thread, Works With Apple Home, Alexa, Google, Ai Fingerprint Keyless Deadbolt Set, Auto Unlock, Bhma Grade 2, Ip65 Waterproof"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>DREAME</div>                                        <div class="featured__title">Dreame Wi-Fi Smart Door Lock</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="0a26259a-ea97-40ba-80be-8f7d385a58d0">            <a href="https://www.amazon.com/dp/B0GS7JRQHQ?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Arlo 2K Pro Security Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/xeMGoA5p6aemRRkp55iTwN.jpg" alt="Arlo Pro Security Camera 2k Hdr (6th Gen, 2025 Release) - Wireless Outdoor Camera, Rechargeable Removeable Battery, Event Captions, Emergency Response, 1-Month Trial of Secure Plan, 2 Cam, Black"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Arlo</div>                                        <div class="featured__title">Arlo 2K Pro Security Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4f07d041-a4fe-4962-96ee-5396745e965d">            <a href="https://www.amazon.com/dp/B0FLL8XH1G?lv=shuf&channelId=500&plpRedirect=mhFallback" data-model-name="Arlo 4K Ultra Security Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/xKoa2oh6nS8LYjJP3XKpUH.jpg" alt="Arlo Ultra Security Camera 4k Hdr (3rd Gen, 2025 Release) + Smarthub, Battery Power, Emergency Response, Ai Event Captions, 1-Month Trial of Secure Plan, 180° Field of View, 2 Cam, White"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Arlo</div>                                        <div class="featured__title">Arlo 4K Ultra Security Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested a solar smart lock that never needs to be recharged — but there's more to it than just endless battery life ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/desloc-v150-plus-review</link>
                                                                            <description>
                            <![CDATA[ The Desloc V150 Plus has a series of helpful features, plus one that very few alternatives have – a solar panel to keep the battery charged all the time. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">aKdsvysEyNseGFszGRTsiB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/u6aUzWVGe8zc7MzhKEeMAT-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 04 Jul 2026 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/u6aUzWVGe8zc7MzhKEeMAT-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Desloc V150 Plus]]></media:description>                                                            <media:text><![CDATA[Desloc V150 Plus]]></media:text>
                                <media:title type="plain"><![CDATA[Desloc V150 Plus]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/u6aUzWVGe8zc7MzhKEeMAT-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Unlocking your smart lock from your phone is cool, but the real challenge now is ironing out the practical issues that come with making your lock smart — like having to keep it powered when you never had to worry about that before. A few newer locks are trying to solve this, and the Desloc V150 Plus might be the most interesting attempt.</p><p>The V150 Plus has a solar panel built right into it, designed to charge the lock so you never have to think about whether it has enough juice to let you in. It doesn't skimp on other features either -- you get fingerprint and facial recognition unlocking, so it's easy to get through your door without pulling out your phone.</p><p>So how well does that solar panel actually perform, and is this one of the <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html">best smart locks</a> outside of that? I've been using the Desloc V150 to find out.</p><h3 class="article-body__section" id="section-price-and-availability"><span>Price and availability</span></h3><p>The Desloc V150 Plus is now available through a <a href="https://www.kickstarter.com/projects/desloc/worlds-first-self-charging-solar-smart-lock?ref=dlik6z" target="_blank">Kickstarter campaign</a>, and Desloc says that it will be available from retailers starting in August. The Kickstarter lists the lock as being around $169 though, so if you know you want it, it may be worth buying through the Kickstarter.</p><h3 class="article-body__section" id="section-design-and-setup"><span>Design and setup</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LbFC4rVwWjgXDzgwHivPQW" name="Desloc-V150-Plus-2" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/LbFC4rVwWjgXDzgwHivPQW.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Desloc V150 Plus specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Connectivity: </strong>Wi-Fi, Bluetooth<br><strong>Power: </strong>10,000 mAh solar-charged battery<br><strong>Works with: </strong>Google Home, Amazon Alexa<br><strong>Unlocking methods: </strong>Fingerprint, face recognition, key <br><strong>Total fingerprints/face:</strong> 50<br><strong>BHMA: </strong>Grade 3<br><strong>Weather resistance: </strong>IP65<br><strong>Operating temperature: </strong>–22°F to 158°F</p></div></div><p>For the most part, the Desloc V150 Plus looks much like other smart locks — until you look a little closer. Like other smart locks, the exterior portion is rectangular and made of a combination of black metal and plastic. But unlike many other smart locks, when you approach it, a pin pad won't illuminate for you to punch in a code. That's because the surface on the front of the lock isn't a pin pad at all — it's a solar panel that charges the built-in battery.</p><p>Apart from the 4.8-inch solar panel, the lock also has a fingerprint sensor towards the bottom and two cameras towards the top that are used for facial recognition. In other words, while there's no pin pad, there are still multiple ways to unlock the door. </p><p>The interior portion looks even more like other smart locks. There's a thumb latch to manually lock and unlock the door, along with a cover for the main battery, which hopefully you'll never have to actually open.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="F94gEbiHtA3kTgAixRMBJk" name="Desloc-V150-Plus-5" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/F94gEbiHtA3kTgAixRMBJk.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The lock should be able to survive most weather with its IP65 rating. Plus, it has BHMA Grade 3 certification for deadbolt strength.</p><p>This is a full deadbolt replacement, not a retrofit overlay. You'll remove your door's original deadbolt, align the new tailpiece with the latch, and mount the exterior and interior assemblies. Once it's powered, the lock runs a calibration routine to learn the bolt travel and ensure smooth locking, after which you can test the interior thumb-turn. None of that is unusual, and Desloc's installation process on previous locks has been straightforward enough.</p><p>Once you've physically set up the lock, you'll download the Desloc app and create an account, or sign in if you don't already have one. From there, you'll be able to add your face for facial recognition and add your fingerprint for the fingerprint scanner.</p><h3 class="article-body__section" id="section-app-and-smart-home"><span>App and smart home</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="JvPmt4mkUkZ4uz6u4mLzL3" name="Desloc-V150-Plus-app" alt="Desloc app" src="https://cdn.mos.cms.futurecdn.net/JvPmt4mkUkZ4uz6u4mLzL3.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The V150 Plus runs on Desloc's existing app, and it connects to Wi-Fi and Bluetooth without the need for additional hubs. </p><p>For the most part, I found the app easy to use. I was able to add fingerprints and faces without issue. Plus, I could remotely lock or unlock the door with it. You'll also get real-time access logs and battery information, which, again, hopefully you'll never really need to see.</p><p>Another thing that the app shows, which is only really interesting for a solar-powered model like this, is how much power it gets each day. The app also includes a "Landlord mode" for rental scheduling and access-profile management, built around a calendar-style interface for organizing tenant codes and monitoring usage. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="gVbxuYom6RcH9k88W24dZ8" name="Desloc-V150-Plus-app-settings" alt="Desloc app" src="https://cdn.mos.cms.futurecdn.net/gVbxuYom6RcH9k88W24dZ8.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Combined with the self-charging design, that could make the V150 Plus genuinely appealing to small landlords, since the solar system would cut down on site visits just to swap batteries — though of course that might introduce complications around accounts and unlocking methods; since there's no keypad, each new tenant would have to register either their fingerprints or face. </p><p>Auto-lock, meanwhile, ties into a door-closure sensor so the lock only engages once the door is fully latched -- a subtle detail, but an important one, because it prevents the false sense of security you get from a lock that fires before the door has actually closed.</p><p>On the smart-home side, the lock integrates with Amazon Alexa and Google Home for voice control, but that's it, which is pretty disappointing. Unlike cameras, locks have been supported in the Matter spec for some time now. And at this point, there's really no good excuse for smart locks <em>not</em> to support Matter. Without Matter support, you won't be able to use the Desloc V150 Plus with Apple HomeKit or other smart home standards beyond Alexa and Google Home.</p><h3 class="article-body__section" id="section-performance-and-battery-life"><span>Performance and battery life</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="EAWFRBtAo5Et5rA4vvdruC" name="Desloc-V150-Plus-app-battery" alt="Desloc app showing battery" src="https://cdn.mos.cms.futurecdn.net/EAWFRBtAo5Et5rA4vvdruC.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Perhaps the most important aspect of this lock, of course, is how its battery and charging system works. I found it to work perfectly well. When I first set up the lock, I skipped the instructions to fully charge the battery, and the app reported that the battery had 12% left. </p><p>After around a week, it was at 34%. In other words, it doesn't charge all that quickly, but if I had fully charged the battery when I first set up the lock, I would never really need to worry about the lock running out of juice, and would expect that it would retain near 100% of its battery at all times. I had the lock set up in a location that doesn't get tons of direct sunlight, but it does get a few hours per day. It also has a USB-C port for emergency power if, for example, the battery stops working.</p><p>I did find, unfortunately, that the fingerprint scanner and face scanner were somewhat slow, but they did work the majority of the time. It usually took a few seconds for the face scanner to recognize me, and I actually found that it was faster to use the fingerprint scanner. What that means is that while the face scanner is a nice feature, it's perhaps likely to be treated as a backup for when you're carrying something, rather than as the primary way to unlock the door.</p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nkXrKv6e3bGNapHy3Q9yqG" name="Desloc-V150-Plus-3" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/nkXrKv6e3bGNapHy3Q9yqG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Desloc V150 Plus is a perfectly fine lock, but needs a bit of refinement before it can compete with the <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html">best smart locks</a>. Obviously, the fact that you'll never have to manually replace the batteries or charge it is a nice feature. But without Matter support, it's limited in the smart home ecosystems that it works in. </p><p>Plus, it unlocks relatively slowly, especially compared to plenty of other smart locks out there. Again, it's not a bad product. For the right person, it might be the way to go, especially for those in the Google or Amazon ecosystems, or who don't mind using the dedicated app. </p><p>If you're looking for a lock with a built-in solar panel, the <a href="https://www.tomsguide.com/home/smart-home/lockin-veno-solar-review">Lockin Veno Solar</a> is Matter-compatible, comes with either face or palm unlocking, and has both a keypad and a physical key slot, making it feel like a more complete product.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Lockin Veno Solar smart lock review: This smart lock never needs recharging ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/lockin-veno-solar-review</link>
                                                                            <description>
                            <![CDATA[ The Lockin Veno Solar smart lock offers some convenient features and avoids the need for manual charging or battery replacement. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dKtf48TENTy7xwUX2rEQsM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Evx6wPWQxDbvvMKmbFNosg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 11:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Evx6wPWQxDbvvMKmbFNosg-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Lockin Veno Solar smart lock]]></media:description>                                                            <media:text><![CDATA[Lockin Veno Solar smart lock]]></media:text>
                                <media:title type="plain"><![CDATA[Lockin Veno Solar smart lock]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Evx6wPWQxDbvvMKmbFNosg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>One of the biggest drawbacks of smart locks is that, unlike traditional locks, they’ll eventually run out of power, which means replacing or recharging their batteries at least once a year. </p><p>The <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html">best smart locks</a> try to lengthen this time as much as possible, but the Lockin Veno Solar could eliminate that inconvenience entirely. It has a solar panel on the exterior portion that very slowly charges up the lock's battery, so that you never have to worry about recharging it or replacing the batteries.</p><p>The Lockin Veno Solar is actually available in two variants -- one has a facial unlock feature, and the other has a palm vein unlocking feature. I’ve been testing the Face model to find out if it does enough beyond simply taking care of power for you to be worth buying.</p><h3 class="article-body__section" id="section-lockin-veno-solar-review-price-and-availability"><span>Lockin Veno Solar review: Price and availability</span></h3><p>The Veno Solar series went on sale in mid- 2026, with both the Palm and Face models starting at $199 (you can pay $259.99 for a model that bundles a door handle). I'm reviewing the Face variant. </p><p>You can get the Lockin Veno Solar series for yourself straight from the Lockin website or from Amazon.</p><h3 class="article-body__section" id="section-design-and-setup"><span>Design and setup</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rciVfns4XnhRs7xVK5HYYm" name="Lockin-Veno-Solar-Face-Smart-Lock-3" alt="Lockin Veno Solar smart lock" src="https://cdn.mos.cms.futurecdn.net/rciVfns4XnhRs7xVK5HYYm.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Lockin Veno Solar specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Connectivity: </strong>Wi-Fi, Bluetooth, Thread<br><strong>Power: </strong>Solar-charged 37 Wh battery<br><strong>Unlocking methods: </strong>Palm vein or facial recognition, PIN code, app, voice assistant, mechanical key<br><strong>Works with: </strong>Matter<br><strong>BHMA: </strong>Grade 3<br><strong>Size</strong>: 11.4 x 3.86 x 4.8 inches<br><strong>Water resistance: </strong>IP53</p></div></div><p>Installing the Lockin Veno Solar is very similar to installing any other smart lock that replaces your deadbolt. This is not a retrofit lock, so you will need to replace the interior thumb latch, the deadbolt in the door, and the exterior portion of the lock. </p><p>Essentially, you'll unscrew your existing lock and deadbolt, then fit the included lock and deadbolt and thread the exterior portion of the lock through to the inside. Then screw the base plate into that exterior part of the lock and fit the thumb latch portion onto the base plate. The whole process should only take 15 to 20 minutes.</p><p>After you're done physically installing the lock, you'll need to add it to the Lockin app. I also found this process to be quite easy. You'll download the app, then either sign in to your account or create a new one if you don't have one already. Then simply follow the on-screen instructions to add a new lock. I found it was recognized immediately. In this process, you'll be walked through the face scan.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="j3NXvoy2A3DQ2rG8op4kuE" name="Lockin-Veno-Solar-Face-Smart-Lock-2" alt="Lockin Veno Solar smart lock" src="https://cdn.mos.cms.futurecdn.net/j3NXvoy2A3DQ2rG8op4kuE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>On the outside of your door, there's a keypad with either the palm vein scanner or the face scanner, depending on the model you go for. There's no fingerprint sensor on either of them, but there is a solar panel on the bottom third or so, and you might not be able to tell that's what it is if you didn't already know. The lock also has a physical key slot, which can come in handy if something stops working or a guest needs to enter.</p><p>On the inside, there's a thumb latch along with a button to mechanically lock or unlock the door. There's also a cover for the battery compartment which, hopefully, you'll never have to open after you install it.</p><p>The lock seems to be durable enough, but it's not quite as weather resistant as some other smart locks. It has an IP53 rating, which is fine for some water spray. It held up during my testing, but to be fair, the weather has been pretty nice where I live. The lock also has an ANSI Grade 3 certification.</p><h3 class="article-body__section" id="section-performance"><span>Performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cgTY4yeLeneKH8szLVHKcJ" name="Lockin-Veno-Solar-Face-Smart-Lock-5" alt="Lockin Veno Solar" src="https://cdn.mos.cms.futurecdn.net/cgTY4yeLeneKH8szLVHKcJ.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Face model that I reviewed captures depth-sensing 3D face recognition that Lockin rates at under one second. In practice it was generally fast enough, though I wouldn't call it instant -- and it didn't feel like it was under one second. It usually took a second or two for the lock to realize there was someone outside the door and start scanning in the first place. Once the scanning started, it took less than a second, but there was still that initial lag.</p><p>This isn't a dealbreaker, and to be clear, face scanning is still convenient — but it would be even more convenient if the lock supported a feature like Ultra Wide Band (UWB) or Aliro, which allows the lock to sense your phone or watch, and unlock based on that signal.</p><p>I did find that the lock's Wi-Fi connectivity was quite good. I placed the lock on the door to my garden shed, which has historically had limited reception -- plenty of other smart locks I've tested struggle to hold a connection out there. This one stayed reliably online throughout.</p><p>As for the solar charging, it's slow. The lock arrived at 83% out of the box, and a week later it had crept up to 90%. That sounds underwhelming, but it's worth remembering what the point isn't fast charging — it's that the battery doesn't drain over time. And it didn't. It slowly gained power instead of losing it, which is exactly the behavior you want from a solar lock. </p><h3 class="article-body__section" id="section-app-and-smart-home"><span>App and smart home</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="z9PUDyHSSivsiXVbC6ubdL" name="Lockin-Veno-Solar-Face-Smart-Lock-screenshot-1" alt="Lockin app" src="https://cdn.mos.cms.futurecdn.net/z9PUDyHSSivsiXVbC6ubdL.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Lockin Smart app is how you'll control the lock's settings and features. You can create one-time PINs, enroll new faces and PIN codes, set up auto-lock settings, and so on. One thing I would have liked to see is an overview of how much battery the device gets over time, but not having it isn't a huge deal.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="MUaPKFi98NUvkYmQ6LBH9P" name="Lockin-Veno-Solar-Face-Smart-Lock-screenshot-2" alt="Lockin app" src="https://cdn.mos.cms.futurecdn.net/MUaPKFi98NUvkYmQ6LBH9P.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Unlike the Desloc V150 Plus, which is the other solar-powered smart lock that I've reviewed recently, the Lockin Veno Solar supports Matter, which means you can integrate it into a variety of smart home ecosystems. You have to set the lock up in the Lockin app, but you don't have to control it there. Instead, you can control it through apps like Google Home or Apple Home and integrate it into automations and other cross-product systems. Matter support is kind of table stakes for smart locks these days, so it's nice to see it here.</p><h3 class="article-body__section" id="section-verdict"><span>Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="S8VGDR2xrPxXGnmecR6zMS" name="Lockin-Veno-Solar-Face-Smart-Lock-4" alt="Lockin Veno Solar smart lock" src="https://cdn.mos.cms.futurecdn.net/S8VGDR2xrPxXGnmecR6zMS.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Lockin Veno Solar is a solid smart lock, and for what it offers, it's perhaps the best option. That's to say, the lock has solar charging, so you never have to worry about manually charging or replacing the batteries. But it goes beyond that with a decently convenient unlocking method and, perhaps even more importantly, Matter support, so it'll work with a wide array of modern smart home ecosystems.</p><p>There are some limitations. For example, if you routinely get torrential rain, you might be slightly concerned about the IP53 water resistance. And it's worth keeping in mind that it's going to take a second or two to unlock your door if you rely on the face scanner. But, if you like the idea of not having to worry about charging your lock, for now, this one is the way to go.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ No need to wait — this early Prime Day deal slashes a massive 85% off Blink's outdoor security camera and throws in a freebie too ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/no-need-to-wait-this-early-prime-day-deal-slashes-a-massive-85-percent-off-blinks-outdoor-security-camera-and-throws-in-a-freebie-too</link>
                                                                            <description>
                            <![CDATA[ Blink's affordable security cameras have hit an incredible all-time low before Prime Day, with this outdoor camera and doorbell deal now 85% off. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">wghJjkTAjxt5eXAR9H8sP6</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Jul 2026 06:12:26 +0000</pubDate>                                                                                                                                <updated>Wed, 01 Jul 2026 06:15:14 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Sales Events]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg">
                                                            <media:credit><![CDATA[Blink ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink Video Doorbell prime day]]></media:description>                                                            <media:text><![CDATA[Blink Video Doorbell prime day]]></media:text>
                                <media:title type="plain"><![CDATA[Blink Video Doorbell prime day]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Prime Day 2026 is <em>juuuuuust</em> around the corner, starting next Tuesday, July 7 and running for a full week. There's going to be prices slashed on almost everything, including some of the best home security cameras, such as those from Amazon's budget brand, Blink. </p><p>However, Blink has already seen some impressive discounts in the lead-up to the big sale, with up to 85% on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">its Amazon storefront</a>. Its deepest discount is exclusive to a bundle deal, which pairs the highly-rated <a href="https://www.amazon.com.au/Blink-Doorbell-Wireless-Security-Detection/dp/B0GZJM54MJ" target="_blank">Blink Outdoor 4 camera and Sync Module 2 with a free Blink Video Doorbell for just AU$35</a>. The camera on its own is <a href="https://www.amazon.com.au/Blink-Outdoor-4/dp/B0D483ZWDS?ref_=dp_pba_bcd_vb" target="_blank">discounted to AU$31</a>, which is an all-time low price for the camera itself, making the bundle deal with the freebie doorbell even more attractive! </p><p>If this bundle doesn't quite tickle your fancy, there's a full list of deals on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">Blink's Amazon storefront</a> that will cover all your home security needs. Do keep in mind that Blink's cameras come with a 30-day free trial to its subscription plan, which includes features like cloud footage backup and person detection. After the trial period, Blink's plans start from<a href="https://www.amazon.com.au/Blink-Plus-Plan-monthly-auto-renewal/dp/B0D3V7W9KK" target="_blank"> AU$4.95p/m for a basic subscription</a>. </p><p>You'll need to act fast to nab this discount, though — Blink's bundle deal will wrap up by the end of Prime Week on Monday, July 13. </p><div class="product"><a data-dimension112="a2ce7eea-400a-45b4-8dd0-7612fdcb6981" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$35" href="https://www.amazon.com.au/Blink-Doorbell-Wireless-Security-Detection/dp/B0GZJM54MJ" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="grswHLWvmjbDaJhq7Tq6e3" name="blink-outdoor-4-1pk-system--free-blink-v-9b7782ec-6688-4fad-b409-5847f09e9f41.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/grswHLWvmjbDaJhq7Tq6e3.jpg" mos="" align="middle" fullscreen="" width="500" height="500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Now 85% off, <a href="https://www.tomsguide.com/reviews/blink-outdoor-4" data-dimension112="a2ce7eea-400a-45b4-8dd0-7612fdcb6981" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$35">Blink's Outdoor 4</a> is weatherproof and can be used outside — it records 1080p HD real-time footage, has infrared night vision, two-way audio and a wider field of view, so you can see all the nooks and crannies outside your home. The camera also features dual-zone detection and comes with a Blink Sync Module 2, which allows you to store your footage locally.</p><p>Plus it comes with one of Blink's latest additions, the <a href="https://www.tomsguide.com/reviews/blink-video-doorbell">Video Doorbell</a>. Much like the Outdoor 4, Blink's doorbell has a two-year battery life, meaning you won't have to worry about hardwiring if you're renting. It also has a 150° head-to-toe view, can automatically send you parcel and person alerts, and help keep your worries at bay with continuous live view. <a class="view-deal button" href="https://www.amazon.com.au/Blink-Doorbell-Wireless-Security-Detection/dp/B0GZJM54MJ" target="_blank" rel="nofollow" data-dimension112="a2ce7eea-400a-45b4-8dd0-7612fdcb6981" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$35">View Deal</a></p></div><p>Despite falling in the budget category, Blink's cameras offer some incredible features for a low cost, such as 1080p HD live view, infrared night vision and two-way audio, and come with an accompanying free Blink app so users can monitor their homes when they're away. If you're an Alexa fan, you can also sync up Blink cameras to the app, making it all the easier to control your smart home from your phone. </p><p>The biggest standout in our 4-star <a href="https://www.tomsguide.com/reviews/blink-outdoor-4">Blink Outdoor 4 review </a>was that the camera's battery life can last for up to two years with just two AA batteries, so you don't have to worry about keeping them plugged in (or finding a spare power outlet). </p><p>Better yet, when combined with the <a href="https://www.tomsguide.com/home/home-security/blink-video-doorbell-2nd-gen" target="_blank">Blink Video Doorbell</a>, you'll have eyes (and ears) on your home when you're away. It is worth noting that Blink's doorbell is a no-frills option and offers pretty basic features, like head-to-toe live HD view, two-year battery life and real-time alerts.  </p><p>Most of Blink's best features are locked behind a paywall in the form of a subscription. A Blink subscription plan allows customers to save, share and view live recordings from their Blink devices, all while being saved in unlimited cloud storage for up to 60 days. Additionally, features like person detection and "Blink Moments"  — which streamline clips from multiple cameras into one video — are only accessible with a subscription, which starts at AU$5p/m for Basic and AU$15p/m for Plus. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Last chance: nab this solar-powered TP-Link Tapo home security kit for just AU$189 in the final hours of EOFY ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/last-chance-nab-this-solar-powered-tp-link-tapo-home-security-kit-for-just-au-usd189-in-the-final-hours-of-eofy</link>
                                                                            <description>
                            <![CDATA[ Need a new home security system that won't break the bank? This TP-Link Tapo C460 kit is one to consider, now AU$90 off. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tDq4AtJNT3mzgpWKFcRKLL</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/RpoMfMfA2NyCaVC296m9eK-1280-80.png" type="image/png" length="0"></enclosure>
                                                                        <pubDate>Mon, 29 Jun 2026 00:17:27 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/png" url="https://cdn.mos.cms.futurecdn.net/RpoMfMfA2NyCaVC296m9eK-1280-80.png">
                                                            <media:credit><![CDATA[Future / TP-Link Tapo]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[TP Link Tapo camera]]></media:description>                                                            <media:text><![CDATA[TP Link Tapo camera]]></media:text>
                                <media:title type="plain"><![CDATA[TP Link Tapo camera]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/RpoMfMfA2NyCaVC296m9eK-1280-80.png" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's the final hours of <a href="https://www.tomsguide.com/deals/eofy-sale-australia">EOFY sales</a>, and if you've been considering making a purchase, the time to act is now. There are discounts on almost every category — such as <a href="https://www.tomsguide.com/deals/eofy-sale-australia" target="_blank">tech</a>, <a href="https://www.tomsguide.com/sales-events/activewear-deals-eofy">activewear</a>, <a href="https://www.tomsguide.com/wellness/i-swear-by-this-whipped-moisturiser-thats-become-an-essential-part-of-my-daily-skincare-routine-and-saved-me-hundreds">beauty bits</a>, <a href="https://www.tomsguide.com/computing/internet/ive-trawled-through-over-115-eofy-nbn-discounts-these-4-are-the-ones-worth-switching-for">NBN</a> and mobile plans, just to name a few — including some of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras" target="_blank">best home security cameras</a>. </p><p>One of our top-rated brands, TP-Link Tapo, has slashed prices across its inventory on its <a href="https://au.store.tapo.com/pages/eofy-2026june" target="_blank">website</a> and at retailers like <a href="https://www.jbhifi.com.au/products/tp-link-tapo-c460-4k-solar-powered-security-camera-kit" target="_blank">JB Hi-Fi</a>. However, there's only one home security kit that caught my eye, thanks to its hassle-free solar-powered set. </p><p>The <a href="https://www.jbhifi.com.au/products/tp-link-tapo-c460-4k-solar-powered-security-camera-kit" target="_blank">TP-Link Tapo C460 kit is now discounted to just AU$189</a>, from AU$279 at <a href="https://www.jbhifi.com.au/products/tp-link-tapo-c460-4k-solar-powered-security-camera-kit" target="_blank">JB Hi-Fi</a>. What makes this kit stand out above the rest is its solar panel, which eliminates the need to plug in the device or worry about recharging the 10,000mAh battery. Within just 45 minutes of direct sunlight, the panel can fully charge the battery to last one day, and if it's constantly connected to the panel, there's potentially very little to no maintenance required.</p><p>Better yet, the camera can record in 4K resolution, has subscription-free AI detection for people, packages and vehicles, and can save up to 512GB of footage locally with a microSD. You'll need to act fast to nab this home security deal, though, as it will expire in the wee hours of tomorrow, <strong>June 30, 2026. </strong></p><div class="product star-deal"><a data-dimension112="e69f3a72-88fe-4fef-9bb2-d4d44ec1a46c" data-action="Star Deal Block" data-label="Worried about your home security camera batteries dying while you're away? It may be time to consider a solar-powered option. This bundle from Tapo TP-Link comes with one camera and a solar panel, which will keep your cam charged for up to 180 days. Even better, though, you can place your camera anywhere post-sun-charging, and it'll work seamlessly, whether it's indoors or outside. What a win." data-dimension48="Worried about your home security camera batteries dying while you're away? It may be time to consider a solar-powered option. This bundle from Tapo TP-Link comes with one camera and a solar panel, which will keep your cam charged for up to 180 days. Even better, though, you can place your camera anywhere post-sun-charging, and it'll work seamlessly, whether it's indoors or outside. What a win." data-dimension25="$189" href="https://www.jbhifi.com.au/products/tp-link-tapo-c460-4k-solar-powered-security-camera-kit" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:480px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3EQcAmB9boT45SGFGxYDMT" name="tplink-tapo-c460-4k-solarpowered-securit-ce9c0e68-f370-4551-b340-c93c6e78d6e1.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3EQcAmB9boT45SGFGxYDMT.jpg" mos="" align="middle" fullscreen="" width="480" height="480" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Worried about your home security camera batteries dying while you're away? It may be time to consider a solar-powered option. This bundle from Tapo TP-Link comes with one camera and a solar panel, which will keep your cam charged for up to 180 days. </p><p>Even better, though, you can place your camera anywhere post-sun-charging, and it'll work seamlessly, whether it's indoors or outside. What a win. <a class="view-deal button" href="https://www.jbhifi.com.au/products/tp-link-tapo-c460-4k-solar-powered-security-camera-kit" target="_blank" rel="nofollow" data-dimension112="e69f3a72-88fe-4fef-9bb2-d4d44ec1a46c" data-action="Star Deal Block" data-label="Worried about your home security camera batteries dying while you're away? It may be time to consider a solar-powered option. This bundle from Tapo TP-Link comes with one camera and a solar panel, which will keep your cam charged for up to 180 days. Even better, though, you can place your camera anywhere post-sun-charging, and it'll work seamlessly, whether it's indoors or outside. What a win." data-dimension48="Worried about your home security camera batteries dying while you're away? It may be time to consider a solar-powered option. This bundle from Tapo TP-Link comes with one camera and a solar panel, which will keep your cam charged for up to 180 days. Even better, though, you can place your camera anywhere post-sun-charging, and it'll work seamlessly, whether it's indoors or outside. What a win." data-dimension25="$189">View Deal</a></p></div><p>We haven't reviewed this particular set just yet; however, I have spent some hands-on time with it in the past few weeks — and you can consider me impressed. Gone are the days of needing a subscription to maintain or operate your smart home products to their fullest potential, as TP-Link's kit doesn't need one to complete all of its included features. </p><p>This was one of my biggest gripes as a Ring camera user, as I needed a subscription to use package and person alerts, whereas with the TP-Link, I don't need to pay an additional fee to see if my package was delivered or my dog somehow made it out the front door. Now, I can simply rewind the footage on the app (or via my laptop with the microSD card), and hey, presto, I can locate the accurate time of my postie's delivery. </p><p>What's even more impressive is that this extends to most of <a href="https://www.jbhifi.com.au/collections/connected-home/security-cameras?Brand=TP-LINK" target="_blank">TP-Link Tapo's camera lineup</a>, so if the C460 kit doesn't quite tickle your fancy, there are plenty of other options to choose from. With multi-cam kits, indoor and pan-tilt devices, and outdoor floodlights, I've selected six of the best TP-Link Tapo camera deals for your perusal below. </p>        <div class="featured_product_block featured_block_hero" data-id="fed6873f-8e90-41bd-9b3d-a32faaaab122">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-2k-pan-tilt-wi-fi-security-camera-2-pack" data-model-name="2k Pan & Tilt Wi-Fi Security Camera (2 Pack)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/EawdBL4Bnkcg39cTwUAy4H.jpg" alt="Tp-Link Tapo 2k Pan & Tilt Wi-Fi Security Camera [2 Pack]"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">2k Pan & Tilt Wi-Fi Security Camera (2 Pack)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="54d2bc7b-3a90-4897-9e15-7c8f2a932cf5">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-2k-solar-powered-pan-tilt-4g-lte-security-camera-kit" data-model-name="2k Solar-Powered Pan Tilt 4G LTE Security Camera Kit" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/GEhu2j7GbdJ862suAN8CWG.jpg" alt="Tp-Link Tapo 2k Solar-Powered Pan/tilt 4g Lte Security Camera Kit"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">2k Solar-Powered Pan Tilt 4G LTE Security Camera Kit</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="fe9cf8d6-294a-48e0-9adb-dc965d11f0ed">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-2k-indoor-outdoor-dual-lens-pan-tilt-security-camera" data-model-name="2k Indoor/Outdoor Dual Lens Pan Tilt Security Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/GyxhQkXy5zT2aPVfx8v4WG.jpg" alt="Tp-Link Tapo 2k Indoor/outdoor Dual Lens Pan/tilt Security Camera"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">2k Indoor/Outdoor Dual Lens Pan Tilt Security Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="732d035b-ee8d-412b-8f08-a0ed4ccf9f84">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-smart-floodlight-camera-2k-wired" data-model-name="Smart Floodlight Camera 2k (wired)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/j7cFYxYxg6Br4YkZybZfQG.jpg" alt="Tp-Link Tapo Smart Floodlight Camera 2k (wired)"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">Smart Floodlight Camera 2k (wired)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="75188155-a458-4f8d-b978-6dd300609d58">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-2k-3mp-smart-wire-free-security-system-2-pack" data-model-name="2k 3mp Smart Wire-Free Security System (2-Pack)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/S68HxpnysbmzumaeDTdJNG.jpg" alt="Tp-Link Tapo 2k 3mp Smart Wire-Free Security System (2-Pack)"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">2k 3mp Smart Wire-Free Security System (2-Pack)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="94da834e-4fc6-4f31-81f0-04aded09e3ad">            <a href="https://www.jbhifi.com.au/products/tp-link-tapo-4k-pan-tilt-ai-home-security-camera" data-model-name="4k Pan & Tilt Ai Home Security Camera" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/Zt2Z8bcdquFfTB4S7AuVKG.jpg" alt="Tp-Link Tapo 4k Pan & Tilt Ai Home Security Camera"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-LINK Tapo</div>                                        <div class="featured__title">4k Pan & Tilt Ai Home Security Camera</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/deals/eofy-sale-australia" target="_blank">EOFY sales 2026: Australia's end of financial year sales are now on</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Forget Ring — these security cameras don't require a subscription and are on sale for Prime Day, starting at just $17 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/forget-ring-these-security-cameras-dont-require-a-subscription-and-are-on-sale-for-prime-day-starting-at-just-usd17</link>
                                                                            <description>
                            <![CDATA[ These security cameras and video doorbells don't require a subscription and are on sale for Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4dMWurrgboRS9tWPqnbbAm</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/qEFDAws4JKyxRWAEio6B6i-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 24 Jun 2026 13:03:01 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/qEFDAws4JKyxRWAEio6B6i-1280-80.jpg">
                                                            <media:credit><![CDATA[Tapo/Wyze/Eufy]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[subscription-free security cams]]></media:description>                                                            <media:text><![CDATA[subscription-free security cams]]></media:text>
                                <media:title type="plain"><![CDATA[subscription-free security cams]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/qEFDAws4JKyxRWAEio6B6i-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Some of the most popular <a href="https://www.tomsguide.com/news/amazon-prime-day-2021-date-and-best-early-deals-now">Prime Day deals</a> are smart home devices, such as security cameras, video doorbells, and smart speakers. But while you'll often see deep discounts on a lot of these gadgets — upwards of 40% off — many come with a hidden fee: subscriptions.</p><p>You see, these companies realized that they can create a recurring revenue stream by charging you a monthly fee for something as simple as being able to record and save video from your security cameras. </p><p>Don't be lured into these cheap deals, only to realize later that it wasn't the bargain it seemed. To help you, I've put together a list of deals on the best security cameras and video doorbells from companies that don't charge a subscription. That way, your mind — and your wallet — can rest easy. </p><h3 class="article-body__section" id="section-quick-links"><span>Quick links</span></h3><ul><li><strong>Blink Mini 2K+: </strong><a href="https://www.amazon.com/dp/B0F3BB8D37?ref=amzdv_ucc_dp_lod_B0BWWZXWPL_B0F3BB8D37&th=1" target="_blank" rel="nofollow"><strong>was $39 now $17 @ Amazon</strong></a><strong></strong></li><li><strong>Blink Outdoor 2K+: </strong><a href="https://www.amazon.com/dp/B0F95XH6ZM?ref=amzdv_ucc_dp_lod_B0BWWZXWPL_B0F95XH6ZM&th=1" target="_blank" rel="nofollow"><strong>was $89 now $30 @ Amazon</strong></a><strong></strong></li><li><strong>Tapo 4K 8MP Wired Pan/Tilt Outdoor Security Camera: </strong><a href="https://www.amazon.com/TP-Link-Tapo-Detection-Recording-C520WS/dp/B0F5LDVSG3/?th=1" target="_blank" rel="nofollow"><strong>was $99 now $79 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy SoloCam E42: </strong><a href="https://www.amazon.com/dp/B0FP2FKZ5Z" target="_blank" rel="nofollow"><strong>was $179 now $113 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Duo Cam Pan: </strong><a href="https://www.amazon.com/WYZE-Outdoor-Security-Compatible-Assistant/dp/B0DPL136V6" target="_blank" rel="nofollow"><strong>was $69 now $53 @ Amazon</strong></a><strong></strong></li><li><strong>Blink Battery Doorbell 2K+: </strong><a href="https://www.amazon.com/Blink-Video-Doorbell/dp/B08SG2MS3V?ref_=ast_sto_dp&th=1&psc=1" target="_blank" rel="nofollow"><strong>was $69 now $34 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Wireless Duo Cam Video Doorbell: </strong><a href="https://www.amazon.com/WYZE-Wireless-Doorbell-Included-Battery/dp/B0DCJB43TH" target="_blank" rel="nofollow"><strong>was $119 now $94 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy E340 Video Doorbell: </strong><a href="https://www.amazon.com/gp/aw/d/B0CD7NT4Y9" target="_blank" rel="nofollow"><strong>was $149 now $99 @ Amazon</strong></a><strong></strong></li><li><strong>Tapo 2K Wireless Smart Video Doorbell: </strong><a href="https://www.amazon.com/Tapo-Smart-Wireless-Doorbell-Camera/dp/B0F5M75XCV?" target="_blank" rel="nofollow"><strong>was $49 now $34 @ Amazon</strong></a></li></ul><h3 class="article-body__section" id="section-security-cameras"><span>Security cameras</span></h3><div class="product"><a data-dimension112="cd8f6523-7416-43fb-904a-4decab03ce86" data-action="Deal Block" data-label="Blink Sync Module 2 ($49, sold separately" data-dimension48="Blink Sync Module 2 ($49, sold separately" data-dimension25="$17" href="https://www.amazon.com/dp/B0F3BB8D37" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="airedale-Qq3czKFZUEio5bpGTjn4L8-0" name="Blink Mini 2: was $39 now $29 @ Amazon.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DU9Eig3tBs6JZTSyq75GAF.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Blink Mini 2K+ is Blink's new indoor security camera. It has a 2K resolution and comes with several useful features like color night vision, person detection and an easy-to-use companion app. In order to go subscription-free, you will need to purchase the <a href="https://www.amazon.com/Blink-Sync-Module-2/dp/B084RQ6MHJ?" target="_blank" rel="nofollow" data-dimension112="cd8f6523-7416-43fb-904a-4decab03ce86" data-action="Deal Block" data-label="Blink Sync Module 2 ($49, sold separately" data-dimension48="Blink Sync Module 2 ($49, sold separately" data-dimension25="$17">Blink Sync Module 2 ($49, sold separately</a>) as well as a USB stick, but your all-in cost is still under $100.<a class="view-deal button" href="https://www.amazon.com/dp/B0F3BB8D37" target="_blank" rel="nofollow" data-dimension112="cd8f6523-7416-43fb-904a-4decab03ce86" data-action="Deal Block" data-label="Blink Sync Module 2 ($49, sold separately" data-dimension48="Blink Sync Module 2 ($49, sold separately" data-dimension25="$17">View Deal</a></p></div><div class="product"><a data-dimension112="9b542410-d37b-42f3-b650-b3c9230caa8c" data-action="Deal Block" data-label="The Blink Outdoor is a fully wireless home security camera that records video in 2K, lets you store video locally (or in the cloud), and has a two-year battery life. As with Blink's indoor camera, you'll need to pick up the Sync Module 2 if you want to store video locally." data-dimension48="The Blink Outdoor is a fully wireless home security camera that records video in 2K, lets you store video locally (or in the cloud), and has a two-year battery life. As with Blink's indoor camera, you'll need to pick up the Sync Module 2 if you want to store video locally." data-dimension25="$30" href="https://www.amazon.com/dp/B0F95XH6ZM" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="airedale-Qq3czKFZUEio5bpGTjn4L8-1" name="Blink Outdoor 4: was $99 now $59 @ Amazon.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/y7KXxcMKvbBfvKJuwwReuE.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Blink Outdoor is a fully wireless home security camera that records video in 2K, lets you store video locally (or in the cloud), and has a two-year battery life. As with Blink's indoor camera, you'll need to pick up the Sync Module 2 if you want to store video locally.<a class="view-deal button" href="https://www.amazon.com/dp/B0F95XH6ZM" target="_blank" rel="nofollow" data-dimension112="9b542410-d37b-42f3-b650-b3c9230caa8c" data-action="Deal Block" data-label="The Blink Outdoor is a fully wireless home security camera that records video in 2K, lets you store video locally (or in the cloud), and has a two-year battery life. As with Blink's indoor camera, you'll need to pick up the Sync Module 2 if you want to store video locally." data-dimension48="The Blink Outdoor is a fully wireless home security camera that records video in 2K, lets you store video locally (or in the cloud), and has a two-year battery life. As with Blink's indoor camera, you'll need to pick up the Sync Module 2 if you want to store video locally." data-dimension25="$30">View Deal</a></p></div><div class="product"><a data-dimension112="829fbb6d-cdc7-4887-8ec3-f6196d0b25f6" data-action="Deal Block" data-label="This camera boasts a 4K resolution , and its body can rotate a full 360 degrees, so it can follow the action around your yard. It has color night vision, free person and vehicle detection, and uses local AI — which means faster and more secure responses. It does need to be plugged in to work, though." data-dimension48="This camera boasts a 4K resolution , and its body can rotate a full 360 degrees, so it can follow the action around your yard. It has color night vision, free person and vehicle detection, and uses local AI — which means faster and more secure responses. It does need to be plugged in to work, though." data-dimension25="$79" href="https://www.amazon.com/TP-Link-Tapo-Detection-Recording-C520WS/dp/B0F5LDVSG3/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1135px;"><p class="vanilla-image-block" style="padding-top:103.61%;"><img id="gKyFWLrabDR6kzT2QmeyK7" name="4K 8MP Wired Pan/Tilt Outdoor Security Camera" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gKyFWLrabDR6kzT2QmeyK7.jpg" mos="" align="middle" fullscreen="" width="1135" height="1176" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This camera boasts a 4K resolution , and its body can rotate a full 360 degrees, so it can follow the action around your yard. It has color night vision, free person and vehicle detection, and uses local AI — which means faster and more secure responses. It does need to be plugged in to work, though.<a class="view-deal button" href="https://www.amazon.com/TP-Link-Tapo-Detection-Recording-C520WS/dp/B0F5LDVSG3/" target="_blank" rel="nofollow" data-dimension112="829fbb6d-cdc7-4887-8ec3-f6196d0b25f6" data-action="Deal Block" data-label="This camera boasts a 4K resolution , and its body can rotate a full 360 degrees, so it can follow the action around your yard. It has color night vision, free person and vehicle detection, and uses local AI — which means faster and more secure responses. It does need to be plugged in to work, though." data-dimension48="This camera boasts a 4K resolution , and its body can rotate a full 360 degrees, so it can follow the action around your yard. It has color night vision, free person and vehicle detection, and uses local AI — which means faster and more secure responses. It does need to be plugged in to work, though." data-dimension25="$79">View Deal</a></p></div><div class="product"><a data-dimension112="da774a54-e422-4acb-a0b8-09ec8129f9d1" data-action="Deal Block" data-label="Eufy's products deliver great value; this solar-powered 4K camera has AI-enabled motion tracking, can rotate 360 degrees, and recognize license plates from as far as 33 feet away. It supports up to 128GB of local storage, and if you pair it with an Eufy HomeBase, it can store up to 16TB of video." data-dimension48="Eufy's products deliver great value; this solar-powered 4K camera has AI-enabled motion tracking, can rotate 360 degrees, and recognize license plates from as far as 33 feet away. It supports up to 128GB of local storage, and if you pair it with an Eufy HomeBase, it can store up to 16TB of video." data-dimension25="$113" href="https://www.amazon.com/dp/B0FP2FKZ5Z" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:507px;"><p class="vanilla-image-block" style="padding-top:133.93%;"><img id="tEiKmgM2553U6BZpXBCbZK" name="SoloCam E42" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tEiKmgM2553U6BZpXBCbZK.jpg" mos="" align="middle" fullscreen="" width="507" height="679" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Eufy's products deliver great value; this solar-powered 4K camera has AI-enabled motion tracking, can rotate 360 degrees, and recognize license plates from as far as 33 feet away. It supports up to 128GB of local storage, and if you pair it with an Eufy HomeBase, it can store up to 16TB of video.<a class="view-deal button" href="https://www.amazon.com/dp/B0FP2FKZ5Z" target="_blank" rel="nofollow" data-dimension112="da774a54-e422-4acb-a0b8-09ec8129f9d1" data-action="Deal Block" data-label="Eufy's products deliver great value; this solar-powered 4K camera has AI-enabled motion tracking, can rotate 360 degrees, and recognize license plates from as far as 33 feet away. It supports up to 128GB of local storage, and if you pair it with an Eufy HomeBase, it can store up to 16TB of video." data-dimension48="Eufy's products deliver great value; this solar-powered 4K camera has AI-enabled motion tracking, can rotate 360 degrees, and recognize license plates from as far as 33 feet away. It supports up to 128GB of local storage, and if you pair it with an Eufy HomeBase, it can store up to 16TB of video." data-dimension25="$113">View Deal</a></p></div><div class="product"><a data-dimension112="8e8dc5f2-9027-41ca-a306-20133fad376d" data-action="Deal Block" data-label="Two cameras are better than one. This dual-cam setup has one fixed camera and one that can pan and swivel, so if it's tracking someone, you still don't lose sight of the rest of your room. It has a 2K resolution and is IP65 rated, so you can use it indoors or outside. Both cameras have a small spotlight, and they have a 98dB alarm to scare off would-be intruders." data-dimension48="Two cameras are better than one. This dual-cam setup has one fixed camera and one that can pan and swivel, so if it's tracking someone, you still don't lose sight of the rest of your room. It has a 2K resolution and is IP65 rated, so you can use it indoors or outside. Both cameras have a small spotlight, and they have a 98dB alarm to scare off would-be intruders." data-dimension25="$53" href="https://www.amazon.com/WYZE-Outdoor-Security-Compatible-Assistant/dp/B0DPL136V6" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:629px;"><p class="vanilla-image-block" style="padding-top:136.09%;"><img id="EwfLbttj3BPkciURg5Hs9K" name="Duo Cam Pan" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EwfLbttj3BPkciURg5Hs9K.jpg" mos="" align="middle" fullscreen="" width="629" height="856" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Two cameras are better than one. This dual-cam setup has one fixed camera and one that can pan and swivel, so if it's tracking someone, you still don't lose sight of the rest of your room. It has a 2K resolution and is IP65 rated, so you can use it indoors or outside. Both cameras have a small spotlight, and they have a 98dB alarm to scare off would-be intruders.<a class="view-deal button" href="https://www.amazon.com/WYZE-Outdoor-Security-Compatible-Assistant/dp/B0DPL136V6" target="_blank" rel="nofollow" data-dimension112="8e8dc5f2-9027-41ca-a306-20133fad376d" data-action="Deal Block" data-label="Two cameras are better than one. This dual-cam setup has one fixed camera and one that can pan and swivel, so if it's tracking someone, you still don't lose sight of the rest of your room. It has a 2K resolution and is IP65 rated, so you can use it indoors or outside. Both cameras have a small spotlight, and they have a 98dB alarm to scare off would-be intruders." data-dimension48="Two cameras are better than one. This dual-cam setup has one fixed camera and one that can pan and swivel, so if it's tracking someone, you still don't lose sight of the rest of your room. It has a 2K resolution and is IP65 rated, so you can use it indoors or outside. Both cameras have a small spotlight, and they have a 98dB alarm to scare off would-be intruders." data-dimension25="$53">View Deal</a></p></div><h3 class="article-body__section" id="section-video-doorbells"><span>Video doorbells</span></h3><div class="product"><a data-dimension112="3c9677b8-c782-4a2b-81ea-0dcefc30e957" data-action="Deal Block" data-label="Blink Battery Doorbell 2K+ review" data-dimension48="Blink Battery Doorbell 2K+ review" data-dimension25="$34" href="https://www.amazon.com/Blink-Video-Doorbell/dp/B08SG2MS3V" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:938px;"><p class="vanilla-image-block" style="padding-top:159.91%;"><img id="XM2D4KP5GZkmjmGoiU7nX9" name="Battery Doorbell 2K+" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XM2D4KP5GZkmjmGoiU7nX9.jpg" mos="" align="middle" fullscreen="" width="938" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>In our <a href="https://www.tomsguide.com/home/smart-home/the-blink-battery-doorbell-2k-checks-all-of-the-boxes-for-a-budget-friendly-video-doorbell" target="_blank" data-dimension112="3c9677b8-c782-4a2b-81ea-0dcefc30e957" data-action="Deal Block" data-label="Blink Battery Doorbell 2K+ review" data-dimension48="Blink Battery Doorbell 2K+ review" data-dimension25="$34">Blink Battery Doorbell 2K+ review</a>, we said it "checks all of the boxes for a budget-friendly video doorbell" with 2K video, an easy installation, and up to two years of battery life. You will need to purchase the Sync Module 2 separately if you want to save on a video subscription.<a class="view-deal button" href="https://www.amazon.com/Blink-Video-Doorbell/dp/B08SG2MS3V" target="_blank" rel="nofollow" data-dimension112="3c9677b8-c782-4a2b-81ea-0dcefc30e957" data-action="Deal Block" data-label="Blink Battery Doorbell 2K+ review" data-dimension48="Blink Battery Doorbell 2K+ review" data-dimension25="$34">View Deal</a></p></div><div class="product"><a data-dimension112="7356e4b6-19e3-44ab-9664-ccd004fe62f3" data-action="Deal Block" data-label="This video doorbell has two cameras, one of which is pointed at the foot of your door, to make it much easier to see when someone has left a package for you. The cameras deliver 2K resolution and full color night video, and the removable battery pack will last up to 6 months on a charge." data-dimension48="This video doorbell has two cameras, one of which is pointed at the foot of your door, to make it much easier to see when someone has left a package for you. The cameras deliver 2K resolution and full color night video, and the removable battery pack will last up to 6 months on a charge." data-dimension25="$94" href="https://www.amazon.com/WYZE-Wireless-Doorbell-Included-Battery/dp/B0DCJB43TH" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1332px;"><p class="vanilla-image-block" style="padding-top:107.73%;"><img id="ogKWAP4748wQm5siQYaZwT" name="Wireless Duo Cam Video Doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ogKWAP4748wQm5siQYaZwT.jpg" mos="" align="middle" fullscreen="" width="1332" height="1435" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This video doorbell has two cameras, one of which is pointed at the foot of your door, to make it much easier to see when someone has left a package for you. The cameras deliver 2K resolution and full color night video, and the removable battery pack will last up to 6 months on a charge.<a class="view-deal button" href="https://www.amazon.com/WYZE-Wireless-Doorbell-Included-Battery/dp/B0DCJB43TH" target="_blank" rel="nofollow" data-dimension112="7356e4b6-19e3-44ab-9664-ccd004fe62f3" data-action="Deal Block" data-label="This video doorbell has two cameras, one of which is pointed at the foot of your door, to make it much easier to see when someone has left a package for you. The cameras deliver 2K resolution and full color night video, and the removable battery pack will last up to 6 months on a charge." data-dimension48="This video doorbell has two cameras, one of which is pointed at the foot of your door, to make it much easier to see when someone has left a package for you. The cameras deliver 2K resolution and full color night video, and the removable battery pack will last up to 6 months on a charge." data-dimension25="$94">View Deal</a></p></div><div class="product"><a data-dimension112="f2961686-cc24-4702-879f-9cc57393cc96" data-action="Deal Block" data-label="we reviewed it in 2022" data-dimension48="we reviewed it in 2022" data-dimension25="$99" href="https://www.amazon.com/gp/aw/d/B0CD7NT4Y9" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1431px;"><p class="vanilla-image-block" style="padding-top:98.18%;"><img id="JZQBmjkFZRATzcHYXs6BPG" name="61Sfuf3fyEL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JZQBmjkFZRATzcHYXs6BPG.jpg" mos="" align="middle" fullscreen="" width="1431" height="1405" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Eufy's video doorbell also has two 2K cameras to better spot packages. It has 8GB of built-in storage and can be paired with a local Homebase hub so you can save even more video. It has a quick-release battery, but can also be hardwired, so you have a backup in case the power goes out. This video doorbell is a little old — <a href="https://www.tomsguide.com/reviews/eufy-video-doorbell-dual" target="_blank" data-dimension112="f2961686-cc24-4702-879f-9cc57393cc96" data-action="Deal Block" data-label="we reviewed it in 2022" data-dimension48="we reviewed it in 2022" data-dimension25="$99">we reviewed it in 2022</a> — but it's still just as good now as it was then.<a class="view-deal button" href="https://www.amazon.com/gp/aw/d/B0CD7NT4Y9" target="_blank" rel="nofollow" data-dimension112="f2961686-cc24-4702-879f-9cc57393cc96" data-action="Deal Block" data-label="we reviewed it in 2022" data-dimension48="we reviewed it in 2022" data-dimension25="$99">View Deal</a></p></div><div class="product"><a data-dimension112="a6f23f2a-2cab-4a08-8692-856b9ede8843" data-action="Deal Block" data-label="While it doesn't have a dual-camera setup, its single 2K camera can cover up to 160 degrees, a pretty wide field of view. You can fit it with up to 512GB of local storage, or purchase a Tapo home hub to store video over your local network. The doorbell has a 5,200mAh built-in rechargeable lithium-ion battery that will last up to 180 days." data-dimension48="While it doesn't have a dual-camera setup, its single 2K camera can cover up to 160 degrees, a pretty wide field of view. You can fit it with up to 512GB of local storage, or purchase a Tapo home hub to store video over your local network. The doorbell has a 5,200mAh built-in rechargeable lithium-ion battery that will last up to 180 days." data-dimension25="$34" href="https://www.amazon.com/Tapo-Smart-Wireless-Doorbell-Camera/dp/B0F5M75XCV?" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:544px;"><p class="vanilla-image-block" style="padding-top:275.74%;"><img id="y5tVJCXBX8fb3tHfEzvvw4" name="2K Wireless Smart Video Doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/y5tVJCXBX8fb3tHfEzvvw4.jpg" mos="" align="middle" fullscreen="" width="544" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>While it doesn't have a dual-camera setup, its single 2K camera can cover up to 160 degrees, a pretty wide field of view. You can fit it with up to 512GB of local storage, or purchase a Tapo home hub to store video over your local network. The doorbell has a 5,200mAh built-in rechargeable lithium-ion battery that will last up to 180 days.<a class="view-deal button" href="https://www.amazon.com/Tapo-Smart-Wireless-Doorbell-Camera/dp/B0F5M75XCV?" target="_blank" rel="nofollow" data-dimension112="a6f23f2a-2cab-4a08-8692-856b9ede8843" data-action="Deal Block" data-label="While it doesn't have a dual-camera setup, its single 2K camera can cover up to 160 degrees, a pretty wide field of view. You can fit it with up to 512GB of local storage, or purchase a Tapo home hub to store video over your local network. The doorbell has a 5,200mAh built-in rechargeable lithium-ion battery that will last up to 180 days." data-dimension48="While it doesn't have a dual-camera setup, its single 2K camera can cover up to 160 degrees, a pretty wide field of view. You can fit it with up to 512GB of local storage, or purchase a Tapo home hub to store video over your local network. The doorbell has a 5,200mAh built-in rechargeable lithium-ion battery that will last up to 180 days." data-dimension25="$34">View Deal</a></p></div><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=smart+home&view_mode=savings_squad&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=transparent" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function getTimeAgo(dateString) {        if (!dateString) return '';        const date = new Date(dateString);        const now = new Date();        const diffInSeconds = Math.floor((now.getTime() - date.getTime()) / 1000);        if (diffInSeconds < 60) return 'Just now';        const diffInMinutes = Math.floor(diffInSeconds / 60);        if (diffInMinutes < 60) return `${diffInMinutes} min${diffInMinutes > 1 ? 's' : ''} ago`;        const diffInHours = Math.floor(diffInMinutes / 60);        if (diffInHours < 24) return `${diffInHours} hr${diffInHours > 1 ? 's' : ''} ago`;        const diffInDays = Math.floor(diffInHours / 24);        if (diffInDays < 30) return `${diffInDays} day${diffInDays > 1 ? 's' : ''} ago`;        const diffInMonths = Math.floor(diffInDays / 30);        if (diffInMonths < 12) return `${diffInMonths} mo${diffInMonths > 1 ? 's' : ''} ago`;        const diffInYears = Math.floor(diffInDays / 365);        return `${diffInYears} yr${diffInYears > 1 ? 's' : ''} ago`;      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;      position: relative;      z-index: 20;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      margin: 0 auto;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {      display: grid;      width: 100%;      grid-template-columns: repeat(4, 1fr);      gap: 12px;      margin: 0 auto;      max-width: 800px;    }                 .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;      width: 100%;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      width: 100%;      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }    @container tg-df (max-width: 768px) {      .tg-df-filters-container {      position: relative;      width: 100%;      max-width: 800px;    }    .tg-df-scroll-btn {      display: none;      position: absolute;      top: 50%;      transform: translateY(-50%);      width: 32px;      height: 32px;      background: white;      border: 1px solid var(--tg-df-border);      border-radius: 50%;      align-items: center;      justify-content: center;      cursor: pointer;      z-index: 10;      box-shadow: 0 2px 8px rgba(0,0,0,0.1);      color: var(--tg-df-text-primary);      padding: 0;    }    .tg-df-scroll-btn svg {      width: 16px;      height: 16px;    }    .tg-df-scroll-btn:hover {      background: #f4f4f4;    }    .tg-df-scroll-btn.left {      left: 0px;    }    .tg-df-scroll-btn.right {      right: 0px;    }    @container tg-df (max-width: 768px) {      .tg-df-scroll-btn {        display: flex;        top: 22px; /* vertically center within the 44px high filter buttons */      }    }    .tg-df-filters {        width: 100%;        margin: 0;        margin-bottom: -320px;        padding: 0 16px 320px 16px;        display: flex;        flex-wrap: nowrap;        gap: 8px;        overflow-x: auto;        overflow-y: hidden;        pointer-events: none;        scrollbar-width: none;        -webkit-overflow-scrolling: touch;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }      .tg-df-sort-wrapper {        pointer-events: auto;        flex: 0 0 auto;        width: 175px;        min-width: 175px;      }    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 120px;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 16px 16px 8px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }                  .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;        width: auto;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;      width: 100vw;      max-width: 1200px;      position: relative;      left: 50%;      transform: translateX(-50%);    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 14px;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }        .tg-df-container .tg-df-carousel-scroll-left,    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-left { left: 8px; }    .tg-df-container .tg-df-carousel-scroll-right { right: 8px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-left { left: 0px; }    .tg-df-carousel-filters-outer .tg-df-carousel-scroll-right { right: 0px; }    .tg-df-carousel-filters-outer { margin-left: -24px; margin-right: -24px; padding-left: 24px; padding-right: 24px; }    .tg-df-grid-wrapper { position: relative; }    @container tg-df (max-width: 599px) { .tg-df-carousel-filters-outer { margin-left: -16px; margin-right: -16px; padding-left: 16px; padding-right: 16px; } }        .tg-df-container .tg-df-carousel-scroll-left:hover,    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn {      display: inline-flex;      align-items: center;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.40);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #1f69ff; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #0056e0; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }    .tg-df-savings-squad-header { margin-bottom: 24px; text-align: center; display: none; }    .tg-df-banner-img-desktop { display: block; width: 100%; height: auto; margin-bottom: 32px; }    .tg-df-banner-img-mobile { display: none; width: 100%; height: auto; margin-bottom: 32px; }    @container tg-df (max-width: 600px) {      .tg-df-banner-img-desktop { display: none; }      .tg-df-banner-img-mobile { display: block; }    }    .tg-df-header-title { font-size: 28px; font-weight: 700; color: var(--tg-df-text); margin: 32px 0 12px 0; line-height: 1.3; }    .tg-df-header-subtitle { font-size: 16px; color: var(--tg-df-text-muted); margin: 0 0 32px 0; line-height: 1.5; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3Cdiv class="tg-df-savings-squad-header" id="tg-df-savings-squad-header">      \x3Cpicture>        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/xkh2og7m3d1778189998.png" alt="Deals Banner" class="tg-df-banner-img-desktop" />        \x3Cimg src="https://cdn.mos.cms.futurecdn.net/flexiimages/gmak6rtdf41778245089.png" alt="Deals Banner Mobile" class="tg-df-banner-img-mobile" />      \x3C/picture>      \x3Cdiv class="tg-df-header-text">        \x3Ch2 class="tg-df-header-title" id="tg-df-header-title">Editor's Choice Deals\x3C/h2>        \x3Cp class="tg-df-header-subtitle" id="tg-df-header-subtitle">Discover the best discounts currently available, curated daily by the Tom's Guide Savings Squad.\x3C/p>      \x3C/div>    \x3C/div>    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-roundels">                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Televisions" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/wcMxTsHgqu3roMbAx7RLnT-132-100.png" alt="TVs" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">TVs\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Phones" data-pr="over50">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/G3KGaRGzj24F6PUsw4bWpT-132-100.png" alt="Phones" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Phones\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Computing" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/znNvsLzx8NEgNkD9HSFSnT-132-100.png" alt="Computing" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Computing\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Gaming" data-pr="all">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/Pgew8yaRQeZFHqHjTzvBnT-132-100.png" alt="Gaming" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Gaming\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Mattresses" data-pr="over500">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/cW7xsaLyesxkHFVSiC4kmT-132-100.png" alt="Mattresses" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Mattresses\x3C/span>            \x3C/div>                      \x3Cdiv class="tg-df-roundel tg-df-carousel-cat" data-query="Audio" data-pr="over30">              \x3Cdiv class="tg-df-roundel-img-box">                 \x3Cimg src="https://cdn.mos.cms.futurecdn.net/pCvBVHuhaQVjKt3VgCjbqT-132-100.png" alt="Audio" />              \x3C/div>              \x3Cspan class="tg-df-roundel-label">Audio\x3C/span>            \x3C/div>                  \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.parentElement.querySelector('.tg-df-carousel-roundels').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-outer" style="position: relative;">          \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>          \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>        \x3C/div>        \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('.tg-df-carousel-filters-wrap').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3C/div>    \x3C/div>    \x3C/div>      \x3C!-- Search & Filter Controls --\x3E      \x3Cdiv class="tg-df-top-bar" id="tg-df-top-bar" style="position: relative; z-index: 100; margin: 0 auto 20px;">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>      \x3C/div>    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">              \x3Cdiv class="tg-df-filters-container" style="position: relative; width: 100%; max-width: 800px; margin: 0 auto;">          \x3Cbutton class="tg-df-scroll-btn left" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: -200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M15 18l-6-6 6-6"/>\x3C/svg>          \x3C/button>          \x3Cbutton class="tg-df-scroll-btn right" style="display: none;" onclick="this.parentElement.querySelector('.tg-df-filters').scrollBy({left: 200, behavior: 'smooth'})">            \x3Csvg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">\x3Cpath d="M9 18l6-6-6-6"/>\x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-filters">          \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>          \x3C/div>        \x3C/div>        \x3C/div>      \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cbutton class="tg-df-carousel-scroll-left" type="button" aria-label="Scroll left" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: -200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m15 18-6-6 6-6">\x3C/path>\x3C/svg>\x3C/button>      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>      \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" style="display:none;" onclick="this.parentElement.querySelector('#tg-df-grid').scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();        }        getViewMode() {          console.log("DEBUG getViewMode -> override:", this.viewModeOverride, "editorMode:", this.editorMode);          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          console.log("[DEBUG] applyLayoutMode CALLED! mode=", mode);          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          const topBarDiv = this.root.querySelector('#tg-df-top-bar');          const headerElement = this.root.querySelector('#tg-df-savings-squad-header');          if (headerElement) {             headerElement.style.display = mode === 'savings_squad' ? 'block' : 'none';          }          if (mode === 'carousel') {             this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (topBarDiv) topBarDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.add('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (topBarDiv) topBarDiv.style.display = 'block';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!this.viewModeOverride && initialViewMode) {            this.viewModeOverride = initialViewMode;          }          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Gaming laptops';          }          const website = params.get('website') || 'tomsguide';          this.website = website;          if (website === 'techradar') {            const squadHeader = this.root.querySelector('.tg-df-savings-squad-header');            if (squadHeader) {               const pic = squadHeader.querySelector('picture');               if (pic) pic.style.display = 'none';            }            const style = document.createElement('style');            style.innerHTML = `              .tg-df-container .hawk-affiliate-link-deal-button { background-color: #5DAF08 !important; }              .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a8c06 !important; }            `;            this.root.appendChild(style);          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (this.viewModeSelect && params.has('view_mode')) {            this.viewModeSelect.value = params.get('view_mode');          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'date_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }          const headerTitleEl = this.root.querySelector('#tg-df-header-title');          const headerSubtitleEl = this.root.querySelector('#tg-df-header-subtitle');          if (params.has('widget_title') && headerTitleEl) {             headerTitleEl.textContent = params.get('widget_title');          }          if (params.has('widget_subtitle') && headerSubtitleEl) {             headerSubtitleEl.textContent = params.get('widget_subtitle');          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            if (this.getViewMode() === 'savings_squad') {              this.searchInput.value = '';            } else {              this.searchInput.value = this.currentQuery;            }          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'date_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const handleFiltersScroll = () => {            const filters = this.root.querySelector('.tg-df-filters');            const leftBtn = this.root.querySelector('.tg-df-scroll-btn.left');            const rightBtn = this.root.querySelector('.tg-df-scroll-btn.right');            if (filters && leftBtn && rightBtn) {              const { scrollLeft, scrollWidth, clientWidth } = filters;              leftBtn.style.display = scrollLeft > 0 ? 'flex' : 'none';              rightBtn.style.display = Math.ceil(scrollLeft + clientWidth) < scrollWidth - 5 ? 'flex' : 'none';            }          };          const filters = this.root.querySelector('.tg-df-filters');          if (filters) {            filters.addEventListener('scroll', handleFiltersScroll);            window.addEventListener('resize', handleFiltersScroll);            setTimeout(handleFiltersScroll, 100);                        // Also call after rendering dropdowns            const origRenderCategories = this.renderCategories;            if (origRenderCategories) {               this.renderCategories = (...args) => {                 origRenderCategories.apply(this, args);                 setTimeout(handleFiltersScroll, 50);               };            }          }                const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                if (typeof trackHawkEvent !== 'undefined') {                     trackHawkEvent({                         clickType: "CC",                         widgetId: this.widgetId,                         productCategoryName: "deals",                         zeroBasedProductIndexOrNull: null,                         totalDealsOrProducts: null,                         areaClicked: "Category Roundel",                         revenueId: this.revenueId,                         isoCurrencyCode: typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD',                         queryName: q,                         widgetTypeName: this.widgetTypeName                     });                 }                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          const showAutocomplete = () => {             if (this.getViewMode() !== 'savings_squad' || !this.autocompleteDropdown || !this.airedaleTags) return;                          let terms = this.airedaleTags;             if (this.airedaleBrands) {                terms = terms.concat(this.airedaleBrands.map(b => b.formatted_value));             }             terms = [...new Set(terms)];                          const query = this.searchInput.value.trim();             let matches = [];             if (query.length > 0) {                 matches = terms.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase());             } else {                 matches = terms;             }                          if (matches.length > 0) {                 this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                 this.autocompleteDropdown.classList.add('active');             } else {                 this.autocompleteDropdown.classList.remove('active');             }          };          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('focus', showAutocomplete);            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              showAutocomplete();              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  if (this.getViewMode() === 'savings_squad') {                    this.activeDealTag = null;                    this.currentQuery = '';                    if (this.categoryFilter) this.categoryFilter.value = 'all';                    this.fetchDeals('');                  } else {                    this.deals = [];                    this.render();                  }                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                                let isTag = false;                if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;                if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;                this.activeDealTag = isTag ? query : null;                                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   if (query.length === 0 && this.getViewMode() === 'savings_squad') {                       if (this.categoryFilter) this.categoryFilter.value = 'all';                   }                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   if (this.categoryFilter && this.airedaleTags.includes(tag)) {                       this.categoryFilter.value = tag;                   }                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                            let isTag = false;              if (this.airedaleTags && this.airedaleTags.includes(query)) isTag = true;              if (this.airedaleBrands && this.airedaleBrands.some(b => b.formatted_value === query)) isTag = true;              this.activeDealTag = isTag ? query : null;                            this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 if (query.length === 0 && this.getViewMode() === 'savings_squad') {                     if (this.categoryFilter) this.categoryFilter.value = 'all';                 }                 this.fetchDeals(query);              }            });          }          if(this.sortSelect && this.sortSelect.querySelector('option[value="date_desc"]') === null) {              const option = document.createElement('option');              option.value = "date_desc";              option.text = "Newest First";              this.sortSelect.insertBefore(option, this.sortSelect.firstChild);          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               if (val) {                 this.currentQuery = val;               } else {                 if (this.searchInput && this.currentQuery === document.querySelector('#tg-df-brand-trigger')?.getAttribute('data-active-brand')) {                     // don't clear current query if a brand is selected                 } else if (this.searchInput) {                     this.currentQuery = '';                     this.searchInput.value = '';                 }               }               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = 'date_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }          this.setupScrollListeners();        }        setupScrollListeners() {          const containers = [             this.root.querySelector('.tg-df-carousel-roundels'),             this.root.querySelector('.tg-df-carousel-filters-wrap'),             this.root.querySelector('#tg-df-grid')          ];                    containers.forEach(container => {             if (!container) return;                          const checkScroll = () => {                if (!container.parentElement) return;                const leftBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-left');                const rightBtn = container.parentElement.querySelector('.tg-df-carousel-scroll-right');                                if (leftBtn) {                   if (container.scrollLeft <= 5) leftBtn.style.display = 'none';                   else leftBtn.style.display = 'flex';                }                                if (rightBtn) {                   if (container.scrollWidth <= container.clientWidth) {                       rightBtn.style.display = 'none';                   } else if (container.scrollLeft >= container.scrollWidth - container.clientWidth - 5) {                       rightBtn.style.display = 'none';                   } else {                       rightBtn.style.display = 'flex';                   }                }             };                          container.addEventListener('scroll', checkScroll);             checkScroll();                          window.addEventListener('resize', checkScroll);                          const observer = new MutationObserver(checkScroll);             observer.observe(container, { childList: true, subtree: true, characterData: false });          });        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }        async fetchDeals(query) {          this.showLoading();          this.deals = [];          this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;                    try {            console.log("getViewMode returns:", this.getViewMode());            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad();            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query);               } else {                 await this.fetchHawkDeals(query);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1781000519267.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (!this.activeDealTag && this.currentQuery) {             const tagMatch = this.airedaleTags.find(t => t.toLowerCase() === this.currentQuery.toLowerCase());             if (tagMatch) {                this.activeDealTag = tagMatch;             }          }          if (this.activeDealTag) {             const cleanTag = this.activeDealTag.toLowerCase().replace(/&/g, '').replace(/[^a-z0-9]+/g, '-').replace(/-+/g, '-').replace(/^-|-$/g, '');             const encodedTag = encodeURIComponent(cleanTag);             const url = `https://airedale.futurecdn.net/feeds/feed_1781000519267.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let seenUrls = new Set();                    let overallBrandsCounts = {};                    // First pass: extract ALL brands from topArticles so the dropdown has all options          topArticles.forEach((article) => {             if (!article.articlepage) return;             let pageData = [];             try { pageData = JSON.parse(article.articlepage[0]); } catch(e){ console.warn(e); }             const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');             savingsSquad.forEach((block) => {                const data = block.data || {};                if (data.brand) {                   const cleanBrand = data.brand.replace(/^\d+\.\s*/, '').trim();                   overallBrandsCounts[cleanBrand] = (overallBrandsCounts[cleanBrand] || 0) + 1;                }             });          });          targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                if (externalUrl) {                   if (seenUrls.has(externalUrl)) return;                  seenUrls.add(externalUrl);                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || '',                   authorName: article.articleauthortext ? article.articleauthortext[0] : (article.articleauthor ? article.articleauthor[0] : ''),                   authorRole: article.articleauthorrole ? article.articleauthorrole[0] : '',                   authorImage: article.articleauthormedia ? article.articleauthormedia[0] : '',                   documentUrl: article.documenturl ? article.documenturl[0] : '',                   modifiedDate: article.contentmodifieddate || article.modifieddate || ''                });             });          });                    const airedaleBrandsList = Object.keys(overallBrandsCounts).map(b => ({              formatted_value: b,              count: overallBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : 'date_desc';          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                ${_div}              ${_div}              \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin:0; border-radius:0;">${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map((v, idx) => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              const revenueIdVal = generateRevenueId(linkUrl, offerName, merchantName, null);              const rewrittenLinkUrl = rewriteAffiliateLink(linkUrl, area, revenueIdVal);              return `                \x3Ca href="${this.escapeHTML(rewrittenLinkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item"                  data-action="voucher-click"                  data-product-name="${this.escapeHTML(offerName)}"                  data-merchant-name="${this.escapeHTML(merchantName)}"                  data-analytics-id="${this.escapeHTML(offerObj.offer_id || offerObj.id || v.id || '')}"                  data-price=""                  data-previous-price=""                  data-original-link="${this.escapeHTML(linkUrl)}"                  data-revenue-id="${revenueIdVal}"                  data-index="${idx}"                  data-total="${offers.length}"                  data-in-stock="true"                  data-currency="USD"                  data-model-id="${this.escapeHTML(offerObj.model_id || v.model_id || offerObj.id || v.id || '')}"                  data-merchant-id="${this.escapeHTML(offerObj.merchant_id || offerObj.merchant?.id || '')}"                >                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });            // Attach voucher click tracking            const voucherBtns = content.querySelectorAll('[data-action="voucher-click"]');            voucherBtns.forEach(btn => {              btn.addEventListener('click', (e) => {                if (e.target.closest('[data-action="copy-code"]')) return;                                const productName = btn.getAttribute('data-product-name');                const merchantNameAttr = btn.getAttribute('data-merchant-name');                const productId = btn.getAttribute('data-analytics-id');                const price = parseFloat(btn.getAttribute('data-price')) || null;                const prevPriceStr = btn.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = btn.getAttribute('data-original-link');                const rewrittenLink = btn.getAttribute('href');                const revenueId = btn.getAttribute('data-revenue-id');                const index = parseInt(btn.getAttribute('data-index'), 10) || 0;                const inStock = btn.getAttribute('data-in-stock') === 'true';                const totalText = btn.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: btn.getAttribute('data-model-id') || null,                    matchId: btn.getAttribute('data-match-id') || null,                    brand: btn.getAttribute('data-model-brand') || null,                    parent: btn.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: btn.getAttribute('data-merchant-id') || null,                    network: btn.getAttribute('data-merchant-network') || null,                    url: btn.getAttribute('data-merchant-url') || null,                    name: merchantNameAttr                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: btn.getAttribute('data-currency') || 'USD'                };                if (typeof trackDealClick === 'function') {                  trackDealClick(trackingParams);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)}${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = 'View Deal';              if (isSavingsSquadMode) {                priceGroupHtml = ``;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = isSavingsSquadMode ? `` : `                \x3Cdiv class="tg-df-card-price-group">                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = deal.merchant && deal.merchant.toLowerCase().includes('amazon') ? '' : `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                          \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                          \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                            var c = this.parentNode;                            if (this.dataset.expanded === 'true') {                              var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                              if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                              pd.style.display = '-webkit-box';                              pd.style.webkitLineClamp = '3';                              this.textContent = 'READ MORE';                              this.style.position = 'absolute';                              this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                              this.style.paddingLeft = '16px';                              this.dataset.expanded = 'false';                            } else {                              var pd = this.previousElementSibling;                              pd.style.display = 'inline';                              pd.style.webkitLineClamp = 'unset';                              this.textContent = 'READ LESS';                              this.style.position = 'static';                              this.style.background = 'transparent';                              this.style.paddingLeft = '4px';                              this.dataset.expanded = 'true';                              pd.appendChild(this);                            }                          ">READ MORE${_button}                        \x3C/div>` : ''}                      ${_div}                    ${_div}                    ${deal.authorName ? `                      \x3Cdiv class="tg-df-author-line-mobile" style="padding: 0 0 12px 0; background: transparent;">                         \x3Cdiv style="display: flex; align-items: center; gap: 12px;">                            ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="40" height="40" style="border-radius: 50%; object-fit: cover;">` : ''}                            \x3Cdiv style="display: flex; flex-direction: column;">                               \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">\x3Cspan style="color: #FF6600;">${this.escapeHTML(deal.merchant)}${_span} deal recommended by:${_div}                               \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.3;">                                  \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                  ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                  ${deal.modifiedDate ? `\x3Cdiv style="color: var(--tg-df-text-muted); margin-top: 2px;">${getTimeAgo(deal.modifiedDate)}${_div}` : ''}                               ${_div}                            ${_div}                         ${_div}                      ${_div}                    ` : ''}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>View Deal${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                  \x3Cdiv class="tg-df-card-merchant-wrapper" style="position: absolute; bottom: 0; right: 0; background: transparent; padding: 8px 12px; z-index: 10;">                     \x3Cspan class="tg-df-card-merchant-pill" style="text-align: right; margin-bottom: 0;" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cdiv class="tg-df-card-desc-container" style="margin-bottom: 12px; position: relative;">                    \x3Cp class="tg-df-card-desc-content" style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 0; line-height: 1.4; display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;">${this.escapeHTML(deal.description)}${_p}                    \x3Cbutton type="button" class="tg-df-card-desc-btn" style="display: none; appearance: none; border: none; color: #000000; font-size: 11px; font-weight: 700; text-transform: uppercase; cursor: pointer; font-family: inherit; position: absolute; bottom: 2px; right: 0; background: linear-gradient(to right, transparent, #fff 20%, #fff); padding: 0 0 0 16px;" onclick="                      var c = this.parentNode;                      if (this.dataset.expanded === 'true') {                        var pd = (c.tagName === 'P') ? c : this.previousElementSibling;                        if (c.tagName === 'P') { c.parentNode.appendChild(this); pd = c; }                        pd.style.display = '-webkit-box';                        pd.style.webkitLineClamp = '3';                        this.textContent = 'READ MORE';                        this.style.position = 'absolute';                        this.style.background = 'linear-gradient(to right, transparent, #fff 20%, #fff)';                        this.style.paddingLeft = '16px';                        this.dataset.expanded = 'false';                      } else {                        var pd = this.previousElementSibling;                        pd.style.display = 'inline';                        pd.style.webkitLineClamp = 'unset';                        this.textContent = 'READ LESS';                        this.style.position = 'static';                        this.style.background = 'transparent';                        this.style.paddingLeft = '4px';                        this.dataset.expanded = 'true';                        pd.appendChild(this);                      }                    ">READ MORE${_button}                  \x3C/div>` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${deal.authorName ? `                    \x3Cdiv class="tg-df-author-line-desktop" style="padding: 0 0 ${isSavingsSquadMode ? 0 : 12}px 0;">                       \x3Cdiv style="display: flex; align-items: center; gap: 10px;">                          ${deal.authorImage ? `\x3Cimg src="${this.escapeHTML(deal.authorImage)}" alt="${this.escapeHTML(deal.authorName)}" class="tg-df-author-img" width="36" height="36" style="border-radius: 50%; object-fit: cover;">` : ''}                          \x3Cdiv style="display: flex; flex-direction: column;">                             \x3Cdiv style="font-size: 10px; color: var(--tg-df-text-muted); text-transform: uppercase; letter-spacing: 0.5px; margin-bottom: 2px; font-weight: 600;">Recommended by:${_div}                             \x3Cdiv style="font-size: 11px; color: var(--tg-df-text); line-height: 1.2;">                                \x3Cstrong>\x3Ca href="https://www.tomsguide.com/${this.escapeHTML(deal.documentUrl || '').replace(/^\/+/, '')}" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit; border-bottom: 1px dotted var(--tg-df-text-muted);">${this.escapeHTML(deal.authorName)}${_a}${_strong}                                ${deal.authorRole && !['null', 'nul', 'undefined'].includes(String(deal.authorRole).toLowerCase()) ? ` • ${this.escapeHTML(deal.authorRole)}` : ''}                                ${deal.modifiedDate ? `\x3Cspan style="color: var(--tg-df-text-muted);"> • ${getTimeAgo(deal.modifiedDate)}${_span}` : ''}                             ${_div}                          ${_div}                       ${_div}                    ${_div}                    ` : ''}                    ${priceGroupHtml}                  ${_div}                ${_div}                \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta" style="text-decoration: none; border-radius: 0;">${ctaText}${_a}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit) {            dealsHtml += `              \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer;">Load More${_button}              ${_div}            `;          }                    this.grid.innerHTML = dealsHtml;          // Inject JSON-LD          try {            let targetNode = this.hostContainer || document.head;            let jsonLdScript = targetNode.querySelector('#tg-df-json-ld-' + this.widgetId);            if (!jsonLdScript) {                jsonLdScript = document.createElement('script');                jsonLdScript.type = 'application/ld+json';                jsonLdScript.id = 'tg-df-json-ld-' + this.widgetId;                targetNode.appendChild(jsonLdScript);            }            const jsonLdData = {              "@context": "https://schema.org",              "@type": "ItemList",              "itemListElement": displayDeals.slice(0, this.displayLimit).map((deal, index) => {                 let isoCurrency = "USD";                 if (deal.currency === '£') isoCurrency = "GBP";                 else if (deal.currency === '€') isoCurrency = "EUR";                 else if (deal.currency === 'A$') isoCurrency = "AUD";                 else if (deal.currency === 'CA$') isoCurrency = "CAD";                 const areaCode = typeof this.getAreaCode === 'function' ? this.getAreaCode() : 'US';                 const revenueId = typeof generateRevenueId === 'function' ? generateRevenueId(deal.url, deal.title, deal.merchant, null) : '';                 const rewrittenLink = typeof rewriteAffiliateLink === 'function' ? rewriteAffiliateLink(deal.url, areaCode, revenueId) : deal.url;                 return {                   "@type": "ListItem",                   "position": index + 1,                   "item": {                     "@type": "Product",                     "name": deal.title,                     "image": deal.image || "",                     "description": deal.description || "",                     "brand": {                       "@type": "Brand",                       "name": deal.brand || ""                     },                     "offers": {                       "@type": "Offer",                       "priceCurrency": isoCurrency,                       "price": deal.rawPrice || 0,                       "url": rewrittenLink,                       "seller": {                         "@type": "Organization",                         "name": deal.merchant || ""                       }                     }                   }                 };              }).filter(item => item.item.name)            };            jsonLdScript.textContent = JSON.stringify(jsonLdData);          } catch(e) { console.warn("JSON-LD generation failed", e); }          setTimeout(() => {            const contents = this.root.querySelectorAll('.tg-df-card-desc-content');            contents.forEach(p => {              if (p.scrollHeight > p.clientHeight || p.scrollHeight > 60) {                if (p.nextElementSibling) {                  p.nextElementSibling.style.display = 'block';                }              }            });                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            if (!this.processArticleFired) {                  this.processArticleFired = true;                  document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));               }          }, 50);          const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              this.displayLimit += 12;              this.render();            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve been waiting to buy a video doorbell until the price was right — and this Prime Day, it is ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/ive-been-waiting-to-buy-a-video-doorbell-until-the-price-was-right-and-this-prime-day-it-is</link>
                                                                            <description>
                            <![CDATA[ Upgrade your home security for $23: Score 60% off the Blink Video Doorbell this Prime Day. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">d8p2u7nAh97Y38Sr9dw56d</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 23 Jun 2026 14:28:31 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg">
                                                            <media:credit><![CDATA[Blink ]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink Video Doorbell prime day]]></media:description>                                                            <media:text><![CDATA[Blink Video Doorbell prime day]]></media:text>
                                <media:title type="plain"><![CDATA[Blink Video Doorbell prime day]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/UT6ocbR4JQbBoTihwiyP8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Prime Day is here, consisting of thousands of deals screaming for your attention at once. Every year it gets bigger, every year the discount percentages get bolder, and every year the challenge is finding the ones that are actually worth your time. </p><p>Right now, the <a href="https://www.amazon.com/Blink-Video-Doorbell-Sync-Module-Core-Included-System-Black/dp/B0DGQZ8JZK" target="_blank" rel="nofollow">Blink Video Doorbell is 60% off at Amazon, dropping from $59 to just $23</a>. To put it in perspective, $23 these days will get you a nice lunch at a cafe, maybe a couple of cocktails at dinner. The fact that it also buys you a video doorbell with <em>two years</em> of battery life is the kind of deal you can't turn away from. </p><p>Here's exactly why I've removed it from my Wishlist and popped it straight in the cart. </p><div class="product"><a data-dimension112="eb7b3505-942e-4764-9bd1-668543451f6d" data-action="Deal Block" data-label="Two years of battery life on three AA batteries is a genuinely impressive feat for a video doorbell, and that's before you factor in the HD video, night vision, and two-way audio through the app. Wired or wireless, setup takes minutes, and it works straight out of the box with Alexa." data-dimension48="Two years of battery life on three AA batteries is a genuinely impressive feat for a video doorbell, and that's before you factor in the HD video, night vision, and two-way audio through the app. Wired or wireless, setup takes minutes, and it works straight out of the box with Alexa." data-dimension25="$23" href="https://www.amazon.com/Blink-Video-Doorbell-Sync-Module-Core-Included-System-Black/dp/B0DGQZ8JZK" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1612px;"><p class="vanilla-image-block" style="padding-top:86.60%;"><img id="tcqqYFb3J3AWqsS4RccVfQ" name="Blink Video Doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tcqqYFb3J3AWqsS4RccVfQ.png" mos="" align="middle" fullscreen="" width="1612" height="1396" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Two years of battery life on three AA batteries is a genuinely impressive feat for a video doorbell, and that's before you factor in the HD video, night vision, and two-way audio through the app. Wired or wireless, setup takes minutes, and it works straight out of the box with Alexa.<a class="view-deal button" href="https://www.amazon.com/Blink-Video-Doorbell-Sync-Module-Core-Included-System-Black/dp/B0DGQZ8JZK" target="_blank" rel="nofollow" data-dimension112="eb7b3505-942e-4764-9bd1-668543451f6d" data-action="Deal Block" data-label="Two years of battery life on three AA batteries is a genuinely impressive feat for a video doorbell, and that's before you factor in the HD video, night vision, and two-way audio through the app. Wired or wireless, setup takes minutes, and it works straight out of the box with Alexa." data-dimension48="Two years of battery life on three AA batteries is a genuinely impressive feat for a video doorbell, and that's before you factor in the HD video, night vision, and two-way audio through the app. Wired or wireless, setup takes minutes, and it works straight out of the box with Alexa." data-dimension25="$23">View Deal</a></p></div><p>I've recently become a homeowner, and a video doorbell has been at the top of my purchase list. I knew I wanted one, I just wanted to wait until the price was right. And thanks to <a href="https://www.tomsguide.com/live/news/prime-day-2026-handpicked-editor-recommended-deals-live">Prime Day 2026</a>, that time is now.</p><p>The Blink Video Doorbell comes with a Sync Module Core included in the box, which matters more than it sounds. Without it, you're limited in what the doorbell can do. With it, you get local storage, better connectivity, and a system that functions as advertised from day one.</p><p>So what do you get? Well, actually, quite a lot. The doorbell shoots HD video with a head-to-toe field of view, meaning you see the person at your door and the package they're holding, not just a face floating in the frame. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SpBMoBEYvriLxzNpWWsY23" name="TG_Blink-Video-Doorbell_5.jpg" alt="Blink Video Doorbell on frame" src="https://cdn.mos.cms.futurecdn.net/SpBMoBEYvriLxzNpWWsY23.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Night vision is handled by infrared, while two-way audio works through the Blink app, and setup takes minutes, whether you wire it into your existing doorbell or go completely wireless. Battery life runs up to two years on three AA lithium batteries, which are included. Nice.</p><p>It's not the most feature-packed video doorbell on the market. Person detection and clip storage require a subscription, and you'll need an Alexa-enabled device to get the most out of the voice controls. But at this price, it doesn't need to be perfect. It just needs to show you who's at the door, and it does that very well.</p><h3 class="article-body__section" id="section-we-re-tracking-all-the-best-prime-day-deals"><span>We're tracking all the best Prime Day deals</span></h3><div class="vizualizer-embed"><div class="tg-df-widget-host" data-widget-config="?search=Everything&min_discount_ratio=0.95&offer_type=all&view_mode=carousel&widget_title=Top+Deals+Handpicked+by+Our+Editors&widget_subtitle=Discover+the+best+discounts+currently+available%2C+curated+daily+by+the+Tom%27s+Guide+Savings+Squad.&bg_color=light_blue" data-vizualizer-embed="true"></div>    <script>    /**     * Tom's Guide Deals Finder - Vanilla JS Encapsulated Engine     */    (function() {      // --- Freyr Analytics Adapter ---      function initAnalytics() {        window.dataLayer = window.dataLayer || [];        window.googletag = window.googletag || {};        window.googletag.cmd = window.googletag.cmd || [];        window.hawk = window.hawk || { analytics: { freyr: [] } };        window.hawk.analytics = window.hawk.analytics || { freyr: [] };        window.hawk.analytics.freyr = window.hawk.analytics.freyr || [];        window.freyr = window.freyr || { cmd: [] };        const scriptSrc = 'https://freyr.futurecdn.net/freyr.js';        const hostname = typeof window !== 'undefined' ? window.location.hostname : '';        const isTestEnv = typeof window.navigator !== 'undefined' && (window.navigator.webdriver || window.navigator.userAgent.includes('Headless'));        const shouldSendRealAnalytics = !isTestEnv && hostname && hostname !== 'localhost' && hostname !== '127.0.0.1' && !hostname.includes('run.app');        if (shouldSendRealAnalytics && !document.querySelector(`script[src="${scriptSrc}"]`)) {          const script = document.createElement('script');          script.src = scriptSrc;          script.async = true;          document.head.appendChild(script);        }      }      function storeEventForDebug(name, data) {        if (!window.hawk || !window.hawk.analytics || !window.hawk.analytics.freyr) return;        window.hawk.analytics.freyr.push({ name, data });        try {          if (typeof window !== 'undefined' && window.localStorage) {            window.localStorage.setItem("hawk", JSON.stringify(window.hawk));          }        } catch (e) {          // Ignore storage issues        }        try {          window.dispatchEvent(new CustomEvent("hawk-analytics-update"));        } catch (e) {}      }      function sendToFreyr(eventName, data) {        if (typeof window === 'undefined') return;        window.freyr = window.freyr || { cmd: [] };        window.freyr.cmd.push(() => {          if (window.freyr && window.freyr.pushAndUpdate) {            window.freyr.pushAndUpdate(eventName, data);          }        });      }      function sendEvent(event, skip = false) {        try {          storeEventForDebug(event.name, event.data);          if (!skip) {            sendToFreyr(event.name, event.data);          }        } catch (e) {          // Ensure tracking errors don't surface to the user        }      }      function getCookie(name) {        try {          const match = document.cookie.match(new RegExp('(^| )' + name + '=([^;]+)'));          return match ? match[2] : null;        } catch (e) {          return null;        }      }      function normalizeCurrency(symbol) {        const map = {          '£': 'GBP',          '$': 'USD',          'A$': 'AUD',          'CA$': 'CAD',          '€': 'EUR'        };        return map[symbol] || symbol;      }      function trackElementInteraction(props) {        sendEvent({          name: 'elementInteraction',          data: {            element: {              action: props.action || "click",              id: props.id || undefined,              class: props.class || undefined,              name: props.name || undefined,              text: props.text || undefined,              label: props.label || undefined,              container: props.container || undefined,              url: props.url || undefined,              articleId: props.articleId || undefined            }          }        });      }      function generateRevenueId(url, productName, merchantName, modelId) {        const str = `${window.location.href}|${productName}|${merchantName}|${modelId || ''}|${new Date().toDateString()}|tomsguide`;        let hash = 0;        for (let i = 0; i < str.length; i++) {          const char = str.charCodeAt(i);          hash = ((hash << 5) - hash) + char;          hash = hash & hash;        }        let numericStr = Math.abs(hash).toString();        while (numericStr.length < 19) {          numericStr += Math.floor(Math.random() * 10).toString();        }        return numericStr.substring(0, 19);      }      function rewriteAffiliateLink(url, territory, revenueId) {        if (!url) return url;        const t = (territory || 'gb').toLowerCase();        return url.replace(/hawk-custom-tracking/g, `tomsguide-${t}-${revenueId}`);      }      function trackHawkEvent(params) {        const { clickType, widgetId, productCategoryName, product, productsArray, zeroBasedProductIndexOrNull, totalDealsOrProducts, areaClicked, merchant, revenueId, isoCurrencyCode, queryName, widgetTypeName } = params;        const data = {          event: "hawkEvent",          category: "Affiliates",          affiliate: {            action: {              type: clickType,              id: widgetId,              event: clickType === "appeared" ? "viewed" : "Click from",              timestamp: Date.now()            },            component: {              flag: "Editor",              product: productCategoryName || "deals",              category: `Signal Deal Finder ${widgetTypeName || "Carousel"} widget`,              type: clickType === "appeared" ? "review" : "signal product",              label: queryName || (product ? (product.name || "") : ""),              index: zeroBasedProductIndexOrNull === null || zeroBasedProductIndexOrNull === undefined ? -1 : zeroBasedProductIndexOrNull,              linkCount: totalDealsOrProducts || 0,              blockLayout: "",              areaClicked: areaClicked || ""            }          },          products: productsArray || (product && merchant ? [            {              product: {                primary: {                  id: product.id || product.matchId || null,                  name: product.name,                  type: "deal",                  price: product.price,                  previousPrice: product.previousPrice || null,                  currency: isoCurrencyCode || "USD",                  preorder: false,                  labels: [],                  link: product.link,                  originalLink: product.originalLink || null,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: null,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: product.globalId || null,                  inStock: product.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: isoCurrencyCode || "USD"                }              },              merchant: {                id: merchant.id || null,                name: merchant.name,                url: merchant.url || null,                network: merchant.network || null              },              model: {                id: product.modelId || null,                brand: product.brand || null,                name: product.name,                parent: product.parent || null              }            }          ] : []),          reviews: [],          _clear: true,          "gtm.uniqueEventId": Date.now() % 10000        };        sendEvent({ name: 'hawkEvent', data });      }      function trackDealClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card" });      }      function trackViewSimilarClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Product Card View Similar" });      }      function trackPriceComparisonClick(params) {        trackHawkEvent({ ...params, clickType: "retailer", areaClicked: "Signal Price Comparison" });      }      function trackReviewClick(params) {        trackHawkEvent({ ...params, clickType: "review", areaClicked: "Signal Product Card Review Link" });      }      function trackShare(params) {        trackHawkEvent({ ...params, clickType: "share", areaClicked: "Signal Product Card Share" });      }      function trackDealsAppeared(widgetId, deals, revenueId, currency, queryName, widgetTypeName) {         if (!deals || deals.length === 0) return;                  const productsArray = deals.slice(0, 50).map((deal) => {            let voucherPct = null;            let rawPrice = parseFloat(deal.rawPrice) || parseFloat(deal.price) || null;            let rawMsrp = parseFloat(deal.rawMsrp) || parseFloat(deal.msrp) || null;            if (rawMsrp > rawPrice && rawPrice > 0) {              voucherPct = Math.round((1 - (rawPrice / rawMsrp)) * 100);            }            let numId = null;            if (deal.externalProductId && !isNaN(parseInt(deal.externalProductId))) {              numId = parseInt(deal.externalProductId);            } else if (deal.id && !isNaN(parseInt(deal.id))) {              numId = parseInt(deal.id);            } else {              numId = deal.matchId || null;            }            return {              product: {                primary: {                  id: numId,                  name: deal.productName || deal.title || "",                  type: "deal",                  price: rawPrice,                  previousPrice: rawMsrp,                  currency: currency || 'USD',                  preorder: false,                  labels: deal.modelBrand || deal.brand ? [                     { type: "brand", value: deal.modelBrand || deal.brand }                  ] : [],                  link: deal.url,                  originalLink: deal.url,                  revenueId: revenueId || null,                  startTime: null,                  endTime: null,                  voucherCode: null,                  voucherAudience: null,                  voucherPercentageSaving: voucherPct,                  voucherMoneySaving: null,                  voucherType: null,                  offerExclusive: false,                  offerScope: null,                  globalId: deal.productKey || null,                  inStock: deal.inStock !== false,                  contractProvider: null,                  contractMinutes: null,                  contractTexts: null,                  contractData: null,                  contractLength: null,                  contractMonthlyPrice: null,                  contractCurrency: currency || 'USD'                }              },              merchant: {                id: deal.merchantId ? parseInt(deal.merchantId) : null,                name: deal.merchant || "Retailer",                url: deal.merchantUrl || null,                network: deal.merchantNetwork || null              },              model: {                id: deal.modelId ? parseInt(deal.modelId) : null,                brand: deal.modelBrand || deal.brand || null,                name: deal.productName || deal.title || "",                parent: deal.modelParent || null              }            };         });                  trackHawkEvent({             clickType: "appeared",             widgetId: widgetId,             productCategoryName: "deals",             zeroBasedProductIndexOrNull: null,             totalDealsOrProducts: deals.length,             productsArray: productsArray,             queryName: queryName,             widgetTypeName: widgetTypeName         });      }      // 1. Setup Shadow DOM Sandbox      const currentScript = document.currentScript;      let hostContainer = null;      let template = null;            if (currentScript) {        let prev = currentScript.previousElementSibling;        while (prev) {          if (prev.tagName === 'TEMPLATE' && prev.classList.contains('tg-df-widget-template')) {            template = prev;          } else if (prev.tagName === 'DIV' && prev.classList.contains('tg-df-widget-host') && !prev.hasAttribute('data-initialized')) {            hostContainer = prev;            break;          }          prev = prev.previousElementSibling;        }      }            // Fallbacks in case script is deferred      if (!hostContainer) {        const hosts = document.querySelectorAll('.tg-df-widget-host:not([data-initialized])');        if (hosts.length > 0) hostContainer = hosts[0];      }            // Safely embedded template for CMS environments      const rawTemplate = `  \x3Cstyle>    /* --- Shadow DOM Base Reset --- */    *, *::before, *::after {      box-sizing: border-box;    }    img, picture, svg, video {      max-width: 100%;      height: auto;      display: block;    }    /*       1. Scoped CSS for Tom's Guide Deals Widget       All classes are prefixed with \`tg-df-\` to prevent CMS style leakage.    */    .tg-df-container {      container-type: inline-size;      container-name: tg-df;      --tg-df-blue: #1F69FF;      --tg-df-blue-hover: #004d8c;      --tg-df-text: #222222;      --tg-df-text-muted: #555555;      --tg-df-bg: #ffffff;      --tg-df-bg-secondary: #f4f4f4;      --tg-df-border: #e2e8f0;      font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;      color: var(--tg-df-text);      background-color: transparent;       width: 100%;      max-width: 1200px;      margin: 0 auto;      padding-bottom: 24px;    }    .tg-df-container *, .tg-df-container *::before, .tg-df-container *::after {      margin: 0;      padding: 0;      box-sizing: border-box;    }    .tg-df-container img {      border: none;      margin: 0;      padding: 0;    }    .tg-df-container a {      text-decoration: none;      color: inherit;    }    /*       2. Search & Filter Bar    */    .tg-df-controls {      display: flex;      flex-direction: column;      align-items: center;      gap: 20px;      margin-bottom: 32px;      width: 100%;    }    .tg-df-top-bar {      display: flex;      width: 100%;      max-width: 760px;      gap: 12px;      align-items: center;    }    .tg-df-search-wrapper {      position: relative;      flex: 1;      width: 100%;      box-shadow: 0 8px 24px rgba(0,0,0,0.06);      border-radius: 40px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      z-index: 100;    }    .tg-df-autocomplete-dropdown {      position: absolute;      top: calc(100% + 4px);      left: 0;      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      max-height: 300px;      overflow-y: auto;      z-index: 200;      display: none;    }    .tg-df-autocomplete-dropdown.active {      display: block;    }    .tg-df-autocomplete-item {      padding: 12px 24px;      cursor: pointer;      font-size: 14px;      color: var(--tg-df-text);      transition: background 0.1s ease;    }    .tg-df-autocomplete-item:hover {      background: var(--tg-df-bg-secondary);    }    .tg-df-search-input {      width: 100%;      padding: 16px 64px 16px 24px;      font-size: 16px;      border: 2px solid transparent;      border-radius: 40px;      outline: none;      transition: border-color 0.2s ease, box-shadow 0.2s ease;      color: var(--tg-df-text);      background: transparent;    }    .tg-df-search-input:focus {      border-color: transparent;      box-shadow: 0 0 0 3px rgba(0, 108, 196, 0.15);    }    .tg-df-search-input::placeholder {      color: #999999;    }        .tg-df-search-btn {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      width: 40px;      height: 40px;      border-radius: 50%;      background: #222;      border: none;      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: background 0.2s ease;    }        .tg-df-search-btn:hover {      background: #000;    }    .tg-df-search-icon {      width: 16px;      height: 16px;      fill: #fff;    }    .tg-df-settings-wrapper {      position: relative;    }        .tg-df-settings-btn {      width: 48px;      height: 48px;      border-radius: 50%;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      box-shadow: 0 4px 12px rgba(0,0,0,0.04);      display: flex;      align-items: center;      justify-content: center;      cursor: pointer;      transition: all 0.2s ease;      color: var(--tg-df-text-muted);      flex-shrink: 0;    }    .tg-df-settings-btn:hover {      background: var(--tg-df-bg-secondary);      border-color: #0000ff;      color: var(--tg-df-text);    }    .tg-df-settings-btn svg {      width: 24px;      height: 24px;      fill: currentColor;    }    .tg-df-settings-dropdown {      position: absolute;      top: calc(100% + 8px);      right: 0;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 12px;      box-shadow: 0 8px 32px rgba(0,0,0,0.12);      width: 280px;      padding: 20px;      display: none;      z-index: 100;      flex-direction: column;      gap: 20px;    }    .tg-df-settings-dropdown.active {      display: flex;    }        .tg-df-settings-dropdown-backdrop {      display: none;      position: fixed;      inset: 0;      z-index: 99;    }        .tg-df-settings-dropdown-backdrop.active {      display: block;    }    .tg-df-setting-item {      display: flex;      flex-direction: column;      gap: 10px;    }    .tg-df-setting-label {      font-size: 11px;      font-weight: 700;      color: var(--tg-df-text-muted);      text-transform: uppercase;      letter-spacing: 0.5px;    }        .tg-df-region-select {        padding: 10px 12px;        border-radius: 8px;        border: 1px solid var(--tg-df-border);        font-size: 15px;        outline: none;        background: var(--tg-df-bg-secondary);        color: var(--tg-df-text);        cursor: pointer;        width: 100%;    }    .tg-df-toggle {        position: relative;        display: inline-block;        width: 44px;        height: 24px;        flex-shrink: 0;    }    .tg-df-toggle input {        opacity: 0;        width: 0;        height: 0;    }    .tg-df-slider {        position: absolute;        cursor: pointer;        top: 0; left: 0; right: 0; bottom: 0;        background-color: #ccc;        transition: .2s;        border-radius: 24px;    }    .tg-df-slider:before {        position: absolute;        content: "";        height: 18px;        width: 18px;        left: 3px;        bottom: 3px;        background-color: white;        transition: .2s;        border-radius: 50%;    }    .tg-df-toggle input:checked + .tg-df-slider {        background-color: #1F69FF;    }    .tg-df-toggle input:checked + .tg-df-slider:before {        transform: translateX(20px);    }    .tg-df-dl-row {        flex-direction: row;        align-items: center;        justify-content: space-between;    }    .tg-df-dl-row-text {        font-size: 14px;        font-weight: 600;        color: var(--tg-df-text);    }    .tg-df-dl-row-subtext {        font-size: 12px;        font-weight: 400;        line-height: 1.3;        color: var(--tg-df-text-muted);        margin-top: 4px;        display: block;    }    .tg-df-filters {      display: flex;      gap: 12px;      justify-content: center;      flex-wrap: wrap;    }    .tg-df-sort-wrapper {      position: relative;      display: flex;      align-items: center;    }        .tg-df-sort-icon {      position: absolute;      left: 14px;      width: 14px;      height: 14px;      fill: var(--tg-df-text-muted);      pointer-events: none;    }    .tg-df-sort-select, .tg-df-filter-select {      padding: 10px 36px 10px 38px;      font-size: 14px;      border: 1px solid var(--tg-df-border);      border-radius: 100px;      outline: none;      appearance: none;      background-color: var(--tg-df-bg-secondary);      background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 12 12'%3E%3Cpath fill='%23555555' d='M6 8L1 3h10z'/%3E%3C/svg%3E");      background-repeat: no-repeat;      background-position: right 14px center;      color: var(--tg-df-text);      cursor: pointer;      font-weight: 500;      transition: all 0.2s ease;    }        .tg-df-price-input::-webkit-outer-spin-button,    .tg-df-price-input::-webkit-inner-spin-button {      -webkit-appearance: none;      margin: 0;    }    .tg-df-price-input {      -moz-appearance: textfield;    }    .tg-df-sort-select:hover, .tg-df-filter-select:hover {      background-color: #e2e8f0;    }    .tg-df-multiselect-container {      position: relative;    }        .tg-df-multiselect-trigger {      display: block;      background: #fff;      user-select: none;      width: 100%;      overflow: hidden;      white-space: nowrap;      text-overflow: ellipsis;    }        .tg-df-multiselect-dropdown {      display: none;      position: absolute;      top: calc(100% + 4px);      left: 0;      width: 100%;      min-width: 220px;      max-height: 300px;      overflow-y: auto;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;      box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);      z-index: 100;      padding: 8px 0;    }    .tg-df-multiselect-dropdown.active {      display: block;    }    .tg-df-ms-option {      padding: 8px 16px;      display: flex;      align-items: center;      gap: 8px;      cursor: pointer;      font-size: 14px;    }    .tg-df-ms-option:hover {      background-color: var(--tg-df-bg-secondary);    }        .tg-df-ms-option input {      cursor: pointer;      accent-color: #1f69ff;    }    .tg-df-sort-select:focus, .tg-df-filter-select:focus {      border-color: #0000ff;      box-shadow: 0 0 0 3px rgba(0, 0, 255, 0.2);      background-color: var(--tg-df-bg);    }    /*       3. Deal Grid Layout    */    .tg-df-grid.tg-df-grid-auto {      padding-top: 24px;    }    .tg-df-grid, .tg-df-grid.layout-grid {      display: grid;      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));      gap: 10px;    }    .tg-df-grid.layout-row {      grid-template-columns: 1fr;      gap: 16px;    }        .tg-df-grid.layout-row .tg-df-card {      flex-direction: row;      align-items: stretch;      height: auto;      box-shadow: none;      border-bottom: 1px solid var(--tg-df-border);    }    .tg-df-grid.layout-row .tg-df-card:hover {      box-shadow: none;    }    .tg-df-grid.layout-row .tg-df-card-image-box {      width: 140px;      min-width: 140px;      aspect-ratio: 3/4;      border-right: none;      padding: 16px 16px 16px 32px;    }    .tg-df-grid.layout-row .tg-df-card-body {      padding: 16px;      justify-content: space-between;    }    .tg-df-grid.layout-row .tg-df-card-title {      font-size: 15px;      margin-bottom: 16px;    }    .tg-df-grid.layout-row .tg-df-card-stars { margin-bottom: 8px; }    .tg-df-grid.layout-row .tg-df-card-footer {      flex-direction: column;      align-items: flex-start;      gap: 0;    }    .tg-df-grid.layout-row .tg-df-card-merchant-pill {      margin-bottom: 4px;    }    .tg-df-grid.layout-row .tg-df-card-price-group {      margin-bottom: 8px;    }    .tg-df-grid.layout-row .tg-df-price-group {      width: auto;    }    .tg-df-grid.layout-row .tg-df-card-cta {      width: 100%;      max-width: 200px;      padding: 10px 24px;      font-size: 13px;      flex-shrink: 0;      text-align: center;      justify-content: center;    }    /*       4. Deal Card Design    */    .tg-df-card {      position: relative;      display: flex;      flex-direction: column;      background-color: #ffffff;      border-radius: 0;      overflow: hidden;      transition: transform 0.2s ease, box-shadow 0.2s ease;      text-decoration: none;      color: inherit;      height: 100%;      box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);      border: 1px solid var(--tg-df-border);    }    .tg-df-card:hover {      box-shadow: 0 0 24px rgba(0, 0, 0, 0.12);    }    .tg-df-card-image-box {      width: 100%;      aspect-ratio: 3/4;      background-color: #f8f8f8;      display: flex;      align-items: center;      justify-content: center;      position: relative;      overflow: hidden;      padding: 32px;      flex: 0 0 auto;    }    .tg-df-card-image {      max-width: 100%;      max-height: 100%;      width: auto;      height: auto;      object-fit: contain;      mix-blend-mode: multiply; /* Helps white background images blend into secondary bg */      transition: transform 0.3s ease;    }    .tg-df-card:hover .tg-df-card-image {      transform: scale(1.05); /* Zoom in on hover */    }    .tg-df-card-discount-badge {      position: absolute;      top: 12px;      left: 12px;      background: #dc2626; /* Red */      color: #ffffff;      padding: 6px 8px;      font-size: 11px;      font-weight: 500;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      z-index: 10;    }        .tg-df-card-merchant-pill {      display: block;      padding: 0;      font-size: 11px;      font-weight: 600;      text-transform: uppercase;      letter-spacing: 0.5px;      border-radius: 0;      color: var(--tg-df-text-muted);      margin-bottom: 8px;      white-space: nowrap;      overflow: hidden;      text-overflow: ellipsis;    }    .tg-df-card-body {      padding: 16px;      display: flex;      flex-direction: column;      flex-grow: 1;      min-width: 0;    }    .tg-df-card-badges {      display: flex;      flex-wrap: wrap;      gap: 6px;      margin-bottom: 8px;    }    .tg-df-tag {      display: inline-flex;      align-items: center;      padding: 4px 6px;      font-size: 11px;      font-weight: 700;      text-transform: uppercase;      border-radius: 4px;      gap: 4px;    }    .tg-df-tag-prime {      background-color: #00A8E1;      color: #fff;    }    .tg-df-tag-coupons {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-coupons:hover {      background-color: #e2e8f0;    }        .tg-df-tag-outline {      background-color: #f1f5f9;      color: #334155;      border: 1px solid #cbd5e1;      cursor: pointer;      transition: background-color 0.2s;    }    .tg-df-tag-outline:hover {      background-color: #e2e8f0;    }        @keyframes tg-df-spin {      0% { transform: rotate(0deg); }      100% { transform: rotate(360deg); }    }    .tg-df-coupon-spinner {      border: 2px solid #e2e8f0;      border-top: 2px solid #3b82f6;      border-radius: 50%;      width: 14px;      height: 14px;      animation: tg-df-spin 1s linear infinite;      margin: 4px 8px;      display: inline-block;    }        /* Vouchers Modal */    .tg-df-modal-backdrop {      position: fixed;      top: 0; left: 0; right: 0; bottom: 0;      background: rgba(0,0,0,0.5);      z-index: 10000;      display: flex;      align-items: center;      justify-content: center;      opacity: 0;      pointer-events: none;      transition: opacity 0.3s;    }    .tg-df-modal-backdrop.active {      opacity: 1;      pointer-events: auto;    }    .tg-df-modal {      background: #fff;      border-radius: 12px;      width: 90%;      max-width: 400px;      max-height: 80vh;      display: flex;      flex-direction: column;      box-shadow: 0 10px 40px rgba(0,0,0,0.2);      transform: translateY(20px);      transition: transform 0.3s;    }    .tg-df-modal-backdrop.active .tg-df-modal {      transform: translateY(0);    }    .tg-df-modal-header {      padding: 16px;      border-bottom: 1px solid #e2e8f0;      display: flex;      align-items: center;      justify-content: space-between;    }    .tg-df-modal-title {      font-size: 16px;      font-weight: 600;      margin: 0;    }    .tg-df-modal-close {      background: none;      border: none;      cursor: pointer;      padding: 4px;      color: #64748b;    }    .tg-df-modal-body {      padding: 16px;      overflow-y: auto;    }    .tg-df-voucher-item {      padding: 12px;      border: 1px dashed #cbd5e1;      border-radius: 8px;      margin-bottom: 10px;      background: #f8fafc;      display: flex;      align-items: center;      gap: 12px;      text-decoration: none;      color: inherit;      transition: background-color 0.2s, border-color 0.2s;    }    .tg-df-voucher-item:hover {      background: #f1f5f9;      border-color: #94a3b8;    }    .tg-df-voucher-item:last-child {      margin-bottom: 0;    }    .tg-df-voucher-logo {      width: 48px;      height: 48px;      object-fit: contain;      border-radius: 4px;      background: #fff;      border: 1px solid #e2e8f0;      flex-shrink: 0;    }    .tg-df-voucher-content {      flex: 1;      min-width: 0;    }    .tg-df-voucher-title {      font-size: 14px;      font-weight: 600;      margin: 0 0 4px 0;      line-height: 1.3;      color: #0f172a;    }    .tg-df-voucher-expiry {      font-size: 12px;      color: #64748b;      display: flex;      align-items: center;      gap: 4px;      margin-top: 6px;    }    .tg-df-voucher-code {      display: inline-flex;      align-items: center;      background: #f1f5f9;      border: 1px dashed #cbd5e1;      padding: 6px 10px;      font-family: monospace;      font-weight: 700;      font-size: 14px;      color: #0f172a;      border-radius: 4px;      margin-top: 8px;      cursor: pointer;      transition: all 0.2s ease;    }    .tg-df-voucher-code:hover {      background: #e2e8f0;      border-color: #94a3b8;    }    .tg-df-voucher-code.copied {      background: #ecfdf5;      border-color: #10b981;      color: #10b981;    }    .tg-df-voucher-cta {      display: inline-block;      margin-top: 8px;      font-size: 13px;      font-weight: 600;      color: #2563eb;      text-decoration: none;    }    .tg-df-card-title {      font-size: 15px;      font-weight: 400;      line-height: 1.4;      margin: 0 0 12px 0;      color: var(--tg-df-text);      display: -webkit-box;      -webkit-line-clamp: 2;      -webkit-box-orient: vertical;      overflow: hidden;    }    .tg-df-card-footer {      margin-top: auto;      display: flex;      flex-direction: column;      width: 100%;    }    .tg-df-card-price-group {      display: flex;      flex-direction: row;      align-items: center;      gap: 8px;      margin-bottom: 12px;    }    .tg-df-card-price {      font-size: 16px;      font-weight: 700;      color: #dc2626; /* Red price */      line-height: 1;    }        .tg-df-card-msrp {      font-size: 13px;      color: var(--tg-df-text-muted);      text-decoration: line-through;    }    .tg-df-container .tg-df-card-cta {      display: flex;      align-items: center;      justify-content: center;      width: 100%;      box-sizing: border-box;      background-color: #1f69ff;      color: #ffffff;      font-size: 12px;      font-weight: 700;      text-transform: uppercase;      letter-spacing: 0.5px;      padding: 12px 16px;      border-radius: 0;      border: none;      cursor: pointer;      transition: background-color 0.2s ease;    }    .tg-df-card:hover .tg-df-card-cta,    .tg-df-card-cta:hover {      background-color: #1555cc;    }    .tg-df-container .tg-df-card-cta.tg-df-cta-savings-squad {      background-color: #3c8d0d;    }    .tg-df-card:hover .tg-df-card-cta.tg-df-cta-savings-squad,    .tg-df-card-cta.tg-df-cta-savings-squad:hover {      background-color: #2b6509;    }    /*       5. State & Skeleton Styles    */    .tg-df-message {      grid-column: 1 / -1;      text-align: center;      padding: 48px 24px;      color: var(--tg-df-text-muted);      font-size: 16px;      background: var(--tg-df-bg);      border: 1px solid var(--tg-df-border);      border-radius: 8px;    }    @keyframes tg-df-shimmer {      0% { background-position: -200% 0; }      100% { background-position: 200% 0; }    }    .tg-df-skeleton {      background: linear-gradient(90deg, var(--tg-df-bg-secondary) 25%, #e2e8f0 50%, var(--tg-df-bg-secondary) 75%);      background-size: 200% 100%;      animation: tg-df-shimmer 1.5s infinite;      border-radius: 4px;    }    .tg-df-skeleton-img {      width: 100%;      height: 100%;      position: absolute;      top: 0; left: 0;    }        .tg-df-skeleton-text {      height: 16px;      margin-bottom: 8px;      width: 100%;    }    .tg-df-skeleton-text.short { width: 40%; }    .tg-df-skeleton-text.title { height: 20px; margin-bottom: 16px; }    /* Editor Floating Bar & Elements */    .tg-df-editor-bar {      position: sticky;      top: 0;      z-index: 1000;      background: #111827;      color: #fff;      padding: 12px 16px;      border-radius: 8px;      margin-bottom: 16px;      display: flex;      align-items: center;      justify-content: space-between;      box-shadow: 0 4px 12px rgba(0,0,0,0.15);    }    .tg-df-editor-bar-text {      font-weight: 600;      font-size: 14px;    }    .tg-df-editor-copy-btn {      background: #10b981;      color: #fff;      padding: 6px 16px;      border: none;      border-radius: 4px;      font-weight: 600;      cursor: pointer;      display: flex;      align-items: center;      font-size: 13px;    }    .tg-df-editor-copy-btn:hover { background: #059669; }        .tg-df-deal-checkbox {      position: absolute;      top: 12px;      right: 12px;      z-index: 10;      width: 20px;      height: 20px;      cursor: pointer;      pointer-events: auto;    }    /*       6. Mobile List View (Stacks into a cleaner horizontal row/list)    */    @container tg-df (max-width: 599px) {      .tg-df-controls {        padding: 0 16px;      }            .tg-df-top-bar {        width: 100%;      }            .tg-df-settings-dropdown {        position: fixed;        top: auto;        bottom: 0;        left: 0;        right: 0;        width: 100%;        border-radius: 20px 20px 0 0;        padding: 24px;        box-shadow: 0 -8px 32px rgba(0,0,0,0.15);        z-index: 1000;        border: none;        border-top: 1px solid var(--tg-df-border);      }            .tg-df-settings-dropdown-backdrop.active {        background: rgba(0,0,0,0.4);      }            .tg-df-search-wrapper {        box-shadow: 0 0 16px rgba(0,0,0,0.08);      }            .tg-df-filters {        width: calc(100% + 32px);        margin: 0 -16px;        padding: 0 16px 4px 16px;        display: flex;        justify-content: flex-start;        gap: 8px;        flex-wrap: nowrap;        overflow-x: auto;        -webkit-overflow-scrolling: touch;        scrollbar-width: none;      }      .tg-df-filters::after {        content: "";        display: block;        flex: 0 0 8px;      }      .tg-df-filters::-webkit-scrollbar {        display: none;      }            .tg-df-sort-wrapper {        flex: 0 0 max(42%, 130px);        min-width: 0;      }      .tg-df-sort-wrapper.tg-df-price-range-wrapper {        flex: 0 0 auto;        min-width: max-content;      }            .tg-df-sort-select, .tg-df-filter-select {        width: 100%;        text-align: left;        padding: 10px 24px 10px 32px;        background-position: right 8px center;        text-overflow: ellipsis;        white-space: nowrap;        overflow: hidden;      }      .tg-df-sort-icon {        left: 10px;      }      .tg-df-grid:not(.layout-grid):not(.layout-row),      .tg-df-grid.layout-row {        grid-template-columns: 1fr;        gap: 16px;      }            .tg-df-grid.tg-df-grid-auto {        padding-top: 24px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card,      .tg-df-grid.layout-row .tg-df-card {        flex-direction: row;        align-items: stretch;        height: auto;        box-shadow: none; /* simple line on mobile if preferred, or keep */        border-bottom: 1px solid var(--tg-df-border);      }      .tg-df-grid.tg-df-grid-auto .tg-df-card:hover,      .tg-df-grid.layout-row .tg-df-card:hover {        box-shadow: none;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-image-box,      .tg-df-grid.layout-row .tg-df-card-image-box {        width: 120px;        min-width: 120px;        aspect-ratio: 3/4;        border-right: none;        padding: 12px;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-body,      .tg-df-grid.layout-row .tg-df-card-body {        padding: 12px;        justify-content: space-between;      }      .tg-df-grid.tg-df-grid-auto .tg-df-card-title,      .tg-df-grid.layout-row .tg-df-card-title {        font-size: 14px;        margin-bottom: 12px;        -webkit-line-clamp: 3;      }      /* Single column mobile grid override */      .tg-df-grid.layout-grid {        grid-template-columns: 1fr;        gap: 16px;      }      .tg-df-grid.layout-grid .tg-df-card-image-box {        padding: 12px;      }      .tg-df-grid.layout-grid .tg-df-card-body {        padding: 10px;      }      .tg-df-grid.layout-grid .tg-df-card-title {        font-size: 13px;        -webkit-line-clamp: 3;        margin-bottom: 8px;      }      .tg-df-grid.layout-grid .tg-df-card-price {        font-size: 14px;      }            .tg-df-card-footer {        flex-direction: column;        align-items: stretch;        gap: 0;        width: 100%;        min-width: 0;      }      .tg-df-card-merchant-pill {        margin-bottom: 4px;      }      .tg-df-card-price-group {        flex: 1 1 auto;        margin-bottom: 8px;      }      .tg-df-card-price {        font-size: 16px;      }      .tg-df-card-msrp {        display: block;       }      .tg-df-grid.layout-row .tg-df-card-cta,      .tg-df-container .tg-df-card-cta {        width: 100%;        max-width: none;        min-width: 0;        box-sizing: border-box;        padding: 8px 16px;        font-size: 12px;        flex: 0 0 auto;        text-align: center;        white-space: normal;        line-height: 1.2;      }    }    .tg-df-container.is-carousel {      min-height: 760px;      background-color: #E7F0FF;      padding: 0 0 24px 0;      border-radius: 24px;    }    .tg-df-container.is-carousel.hide-header-details {      min-height: 480px;    }    /*       7. Carousel View Mode    */    .tg-df-container .tg-df-carousel-host {      /* Layout is now handled by container wrapper */    }    .tg-df-container .tg-df-carousel-eyebrow {      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      padding: 24px 16px 0 16px;      display: none;    }    .tg-df-container .tg-df-carousel-query-title {      color: #011535;      font-size: 28px;      font-weight: 600;      padding: 0 16px 24px 16px;      line-height: 1.2;      display: none;    }    .tg-df-container .tg-df-carousel-blue-box {      background-color: transparent;      border-radius: 0;      padding: 24px 24px 0 24px;      margin: 0;      color: #1F69FF;          position: relative;      overflow: hidden;    }    .tg-df-container .tg-df-carousel-bg-circle-1 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-2 {      display: none;    }    .tg-df-container .tg-df-carousel-bg-circle-3 {      display: none;    }    .tg-df-container .tg-df-carousel-box-content {      position: relative;      z-index: 10;    }    .tg-df-container .tg-df-carousel-box-eyebrow {      background-color: transparent;      color: #1F69FF;      font-weight: 700;      font-size: 14px;      text-transform: uppercase;      letter-spacing: 1px;      display: inline-block;      padding: 0;      border-radius: 0;    }    .tg-df-container .tg-df-carousel-box-title {      font-size: 28px;      font-weight: 600;      line-height: 1.2;      margin-top: 8px;      color: #1e293b;    }    .tg-df-container .tg-df-countdown-wrapper {      position: absolute;      top: 0;      right: 0;      display: flex;      flex-direction: column;      align-items: flex-end;      gap: 12px;      transform: scale(0.67);      transform-origin: top right;    }    .tg-df-container .tg-df-countdown-title {      font-size: 16px;      text-align: center;      width: 100%;      font-weight: 600;      color: #011535;      margin: 0;    }    .tg-df-container .tg-df-countdown-blocks {      display: flex;      gap: 16px;    }    .tg-df-container .tg-df-countdown-item {      display: flex;      flex-direction: column;      align-items: center;      gap: 4px;    }    .tg-df-container .tg-df-countdown-box {      width: 59px;      height: 59px;      background: #03FE9E;      border-radius: 15px;      display: flex;      align-items: center;      justify-content: center;    }    .tg-df-container .tg-df-countdown-num {      font-family: 'Inter', sans-serif;      font-weight: 700;      font-size: 20px;      line-height: normal;      color: #011535;    }    .tg-df-container .tg-df-countdown-label {      font-family: 'Inter', sans-serif;      font-weight: 500;      font-size: 16px;      line-height: normal;      color: #1e293b;      text-transform: uppercase;    }    .tg-df-container .tg-df-carousel-box-subtitle {      font-size: 16px;      margin-top: 8px;      font-weight: 300;      color: #1e293b;      line-height: 24px;    }    .tg-df-container .tg-df-carousel-roundels-wrapper {      position: relative;      margin-top: 24px;      margin-left: -24px;      margin-right: -24px;    }    .tg-df-container .tg-df-carousel-roundels {      display: flex;      gap: 16px;      overflow-x: auto;            scrollbar-width: none;      padding-top: 12px;      padding-bottom: 24px;      padding-left: 24px;      padding-right: 24px;      margin-left: 0;      margin-right: 0;    }    .tg-df-container .tg-df-carousel-scroll-right {      position: absolute;      right: 8px;      top: 50%;      transform: translateY(-50%);      height: 36px;      width: 36px;      display: flex;      align-items: center;      justify-content: center;      border-radius: 50%;      background-color: #ffffff;      border: 1px solid #e2e8f0;      box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);      color: #1F69FF;      cursor: pointer;      transition: all 0.2s;      margin-top: -4px;      z-index: 20;    }    .tg-df-container .tg-df-carousel-scroll-right:hover {      background-color: #f8fafc;      border-color: #cbd5e1;    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right {      right: 0;      background-color: rgba(255, 255, 255, 0.4);      border: none;      box-shadow: none;      backdrop-filter: blur(4px);      -webkit-backdrop-filter: blur(4px);    }    .tg-df-carousel-roundels-wrapper .tg-df-carousel-scroll-right:hover {      background-color: rgba(255, 255, 255, 0.6);      border: none;    }    .tg-df-container .tg-df-carousel-roundels::-webkit-scrollbar {      display: none;    }    .tg-df-container .tg-df-carousel-roundels::after {      content: "";      flex: 0 0 32px;    }    .tg-df-container .tg-df-roundel {      display: flex;      flex-direction: column;      align-items: center;      gap: 8px;      cursor: pointer;      min-width: 120px;      flex-shrink: 0;    }    .tg-df-container .tg-df-roundel-img-box {      width: 120px;      height: 120px;      border-radius: 50%;      background: white;      display: flex;      align-items: center;      justify-content: center;      overflow: hidden;      box-shadow: 0px 3px 14px 0px rgba(30, 41, 59, 0.08);      transition: box-shadow 0.2s;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-img-box {      box-shadow: 0 0 0 2px #E7F0FF, 0 0 0 4px #1F69FF;    }    .tg-df-container .tg-df-roundel:hover .tg-df-roundel-img-box img {      transform: scale(1.08);    }    .tg-df-container .tg-df-roundel-img-box img {      width: 100%;      height: 100%;      object-fit: contain;      padding: 10px;      box-sizing: border-box;      transition: transform 0.3s ease;    }    .tg-df-container .tg-df-roundel-label {      font-size: 13px;      font-weight: 400;      color: #1e293b;      text-align: center;      transition: font-weight 0.2s;    }    .tg-df-container .tg-df-roundel.active .tg-df-roundel-label {      font-weight: 700;    }    .tg-df-container .tg-df-carousel-filters-label {      font-size: 16px;      font-weight: 400;      color: #1e293b;      white-space: nowrap;      margin-right: 4px;    }    .tg-df-container .tg-df-carousel-filters-wrap {      display: flex;      align-items: center;      flex-wrap: nowrap;      gap: 8px;      margin-top: 8px;      overflow-x: auto;      scrollbar-width: none;      -webkit-overflow-scrolling: touch;      padding-bottom: 8px;      margin-left: -24px;      margin-right: -24px;      padding-left: 24px;      padding-right: 24px;    }    .tg-df-container .tg-df-carousel-filters-wrap::-webkit-scrollbar {      display: none;    }        .tg-df-container .tg-df-carousel-filter-btn img,    .tg-df-container .tg-df-carousel-filter-btn picture {      height: 20px;      width: 20px;      object-fit: contain;      object-position: center;      display: inline-flex;      align-items: center;      justify-content: center;      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn picture img {      margin-right: 0;      height: 100%;      width: 100%;    }    .tg-df-container .tg-df-carousel-filter-btn img.active-img,    .tg-df-container .tg-df-carousel-filter-btn picture:has(.active-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.inactive-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.inactive-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.inactive-img) {      display: none;    }    .tg-df-container .tg-df-carousel-filter-btn:hover img.active-img,    .tg-df-container .tg-df-carousel-filter-btn.active img.active-img,    .tg-df-container .tg-df-carousel-filter-btn:hover picture:has(.active-img),    .tg-df-container .tg-df-carousel-filter-btn.active picture:has(.active-img) {      display: inline-flex;    }    .tg-df-container .tg-df-carousel-filter-btn {      background: #ffffff;      border: 2px solid #1e293b;      color: #1e293b;      border-radius: 24px;      padding: 6px 16px;      font-size: 14px;      font-weight: 600;      cursor: pointer;      transition: all 0.2s;      flex-shrink: 0;      white-space: nowrap;      display: inline-flex;      align-items: center;      justify-content: center;      min-height: 36px;      box-sizing: border-box;    }    .tg-df-container .tg-df-carousel-filter-btn svg {      margin-right: 6px;    }    .tg-df-container .tg-df-carousel-filter-btn:hover {      background: #1e293b;      color: white;      border-color: #1e293b;    }    .tg-df-container .tg-df-carousel-filter-btn.active {      background: #1e293b;      color: white;      border-color: #1e293b;    }        .tg-df-grid.carousel-compact {      display: flex;      flex-wrap: nowrap;      overflow-x: auto;      gap: 16px;      padding: 16px 24px;      align-items: stretch;      scrollbar-width: none;    }    .tg-df-grid.carousel-compact::after {      content: "";      flex: 0 0 32px;    }    .tg-df-grid-wrapper {      position: relative;    }    .tg-df-grid.carousel-compact::-webkit-scrollbar {      display: none;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card {      flex: 0 0 auto;      width: 100px;      border-radius: 15px;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      border: 2px solid #1e293b;      background: white;      color: #1e293b;      display: flex;      flex-direction: column;      justify-content: center;      align-items: center;      font-weight: 600;      font-size: 14px;      cursor: pointer;      padding: 16px;      text-align: center;      transition: all 0.2s;    }    .tg-df-grid.carousel-compact .tg-df-load-more-card:hover {      background: #1e293b;      color: white;    }    .tg-df-grid.carousel-compact .tg-df-card {      flex: 0 0 auto;      width: 200px;      min-height: auto;      height: auto;      display: flex;      flex-direction: column;      border-radius: 15px;      border: none;      box-shadow: 0 0 16px rgba(0,0,0,0.08);      overflow: visible;    }    .tg-df-grid.carousel-compact .tg-df-card-image-box {      padding: 12px;      background-color: transparent;      border-radius: 15px 15px 0 0;      height: 130px;    }    .tg-df-grid.carousel-compact .tg-df-card-image {      mix-blend-mode: normal;    }    .tg-df-grid.carousel-compact .tg-df-card-discount-badge {      border-radius: 0;      top: 0px;      left: 0px;      padding: 4px 8px;      font-size: 11px;    }    .tg-df-grid.carousel-compact .tg-df-card-body {      padding: 8px 12px 12px 12px;    }    .tg-df-grid.carousel-compact .tg-df-card-title {      font-size: 14px;      font-weight: 400;      -webkit-line-clamp: 2;      margin-bottom: 8px;      color: #011535;    }    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):not(:has(.tg-df-tag-prime)):not(:has(.tg-df-coupon-wrapper:not([style*="none"]))) > .tg-df-card-title,    .tg-df-grid.carousel-compact .tg-df-card-body:not(:has(.tg-df-card-stars)):has(> .tg-df-card-title:first-child) > .tg-df-card-title {      -webkit-line-clamp: 3;    }    .tg-df-grid.carousel-compact .tg-df-card-cta {      border-radius: 5px;      padding: 8px 10px;      margin-top: 4px;      background-color: #1F69FF;    }    .tg-df-grid.carousel-compact .tg-df-card-price-group {      margin-bottom: 2px;    }    .tg-df-grid.carousel-compact .tg-df-card-merchant-pill {      margin-bottom: 2px;    }    @container tg-df (max-width: 599px) {      .tg-df-container .tg-df-carousel-blue-box-title {        font-size: 24px;      }      .tg-df-container .tg-df-countdown-title {        display: none;      }      .tg-df-container .tg-df-countdown-wrapper {        position: absolute;        top: 0;        right: 0;        align-items: flex-end;        transform: scale(0.45);        transform-origin: top right;      }      .tg-df-container .tg-df-roundel {        min-width: 88px;      }      .tg-df-container .tg-df-roundel-img-box {        width: 88px;        height: 88px;      }    }    /* REPLICA BLOCK STYLES */    .tg-df-grid.layout-replica-2 { grid-template-columns: repeat(2, 1fr) !important; gap: 20px; }    .tg-df-grid.layout-replica-1 { grid-template-columns: 1fr !important; gap: 20px; }        .tg-df-container .hawk-deal-widget-container { border-bottom: 1px solid #e5e7eb; display: flex; flex-direction: column; margin: 0; padding: 20px 0; box-sizing: border-box; font-family: inherit; }    .tg-df-container .hawk-deal-widget-wrap { display: flex; flex-direction: row; align-items: flex-start; width: 100%; gap: 24px; }    .tg-df-container .hawk-deal-widget-image-container { display: flex; flex-shrink: 0; justify-content: center; width: 160px; height: 160px; align-items: center; background: white; margin-bottom: 0px; }    .tg-df-container .hawk-deal-widget-title-product-title { color: #111827; font-size: 18px; font-weight: 700; line-height: 1.4; display: inline; }    .tg-df-container .hawk-deal-widget-title-price { font-size: 18px; font-weight: 700; line-height: 1.4; white-space: nowrap; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-price-now { font-weight: 700; }    .tg-df-container .hawk-deal-widget-title-retailer-price:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-title-retailer { font-size: 18px; font-weight: 700; line-height: 1.4; color: #2563eb; }    .tg-df-container .hawk-deal-widget-title-was-price { color: #dc2626; font-size: 16px; font-weight: 500; line-height: 1.4; text-decoration: line-through; white-space: nowrap; margin-left: 8px; margin-right: 8px; }    .tg-df-container .hawk-deal-widget-text-body-container { position: relative; width: 100%; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-text-body-main { font-size: 16px; width: 100%; margin-bottom: 12px; }    .tg-df-container .hawk-deal-widget-text-body-description { display: block; font-size: 15px; margin-top: 12px; color: #4b5563; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-body-description p { margin: 0; line-height: 1.6; }    .tg-df-container .hawk-deal-widget-text-cta-container { display: flex; flex-direction: column; gap: 12px; width: 100%; flex: 1; min-width: 0; box-sizing: border-box; }    .tg-df-container .hawk-deal-widget-footer { display: flex; justify-content: flex-end; width: 100%; margin-top: auto; }    .tg-df-container .hawk-deal-widget-button-wrapper { display: flex; flex-direction: column; align-items: flex-end; justify-content: flex-end; width: 100%; }    .tg-df-container .hawk-deal-widget-preferred-partner-wrapper { display: flex; flex-direction: row; }        @container tg-df (min-width: 600px) {      .tg-df-mobile-only { display: none !important; }    }    @container tg-df (max-width: 599px) {      .tg-df-desktop-only { display: none !important; }      .tg-df-grid.layout-replica-2 { grid-template-columns: 1fr !important; }      .tg-df-grid.savings-squad-cards { grid-template-columns: 1fr !important; display: flex; flex-direction: column; }    }    .tg-df-grid.savings-squad-cards .tg-df-card-title {      -webkit-line-clamp: unset !important;      display: block !important;      overflow: visible !important;    }    @container tg-df (max-width: 500px) {      .tg-df-container .hawk-deal-widget-wrap { display: block; }      .tg-df-container .hawk-deal-widget-image-container { display: block; float: left; margin: 0 16px 8px 0; width: 120px; max-width: 120px; height: auto; align-items: normal; justify-content: normal; }      .tg-df-container .hawk-deal-widget-text-cta-container { display: block; text-align: left; }      .tg-df-container .hawk-deal-widget-footer { display: block; margin-top: 16px; clear: both; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-deal-widget-button-wrapper .hawk-deal-widget-preferred-partner-wrapper { display: block; width: 100%; }      .tg-df-container .hawk-affiliate-link-deal-button { box-sizing: border-box !important; display: flex !important; max-width: none !important; width: 100% !important; margin: 0 !important; }    }        .tg-df-container .hawk-affiliate-link-deal-button {       align-items: center; background-color: #5aaf0b; box-sizing: border-box; color: #ffffff !important; display: flex; font-size: 14px; font-weight: 700; justify-content: center; letter-spacing: 0.5px; line-height: 1; min-width: 160px; padding: 14px 24px; text-align: center; text-decoration: none; text-transform: uppercase; width: 100%; word-break: normal; border-radius: 4px; border: 0; transition: background-color 0.2s;     }    .tg-df-container .hawk-affiliate-link-deal-button:hover { background-color: #4a9109; text-decoration: none; }    .tg-df-container .hawk-lazy-image-deal-widget { display: block; height: auto; margin: auto; max-height: 160px; max-width: 100%; mix-blend-mode: multiply; object-fit: contain; }    .tg-df-container .hawk-deal-widget-text-cta-container a { color: #2563eb; text-decoration: none; display: inline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover { text-decoration: underline; }    .tg-df-container .hawk-deal-widget-text-cta-container a:has(.hawk-deal-widget-title-product-title) { color: #111827; }    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-product-title,    .tg-df-container .hawk-deal-widget-text-cta-container a:hover .hawk-deal-widget-title-retailer-price { text-decoration: underline; }  \x3C/style>  \x3C!-- Widget Container --\x3E  \x3Cdiv class="tg-df-container" id="signal-deals-finder-root">    \x3C!-- Editor Floating Bar --\x3E    \x3Cdiv class="tg-df-editor-bar" id="tg-df-editor-bar" style="display:none;">      \x3Cdiv class="tg-df-editor-bar-text" style="display: flex; align-items: center;">        \x3Cspan id="tg-df-selected-count">0\x3C/span>\x26nbsp;Deals Selected        \x3Cbutton class="tg-df-editor-clear-btn" id="tg-df-editor-clear" type="button" style="margin-left: 12px; font-size: 13px; color: #9ca3af; background: none; border: none; cursor: pointer; text-decoration: underline;">Clear All\x3C/button>      \x3C/div>      \x3Cbutton class="tg-df-editor-copy-btn" id="tg-df-editor-copy" type="button">        \x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">\x3C/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">\x3C/path>\x3C/svg>        Copy to CMS      \x3C/button>    \x3C/div>    \x3Cdiv class="tg-df-carousel-host" id="tg-df-carousel-host" style="display: none;">      \x3Cdiv class="tg-df-carousel-eyebrow">DEAL FINDER\x3C/div>      \x3Cdiv class="tg-df-carousel-query-title" id="tg-df-carousel-title-label">Best Deals\x3C/div>            \x3Cdiv class="tg-df-carousel-blue-box">        \x3Cdiv class="tg-df-carousel-bg-circle-1" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-2" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-bg-circle-3" aria-hidden="true">\x26nbsp;\x3C/div>        \x3Cdiv class="tg-df-carousel-box-content">          \x3Cdiv class="tg-df-countdown-wrapper" id="tg-df-countdown-wrapper" style="display:none;">            \x3Cdiv class="tg-df-countdown-title" id="tg-df-countdown-title">Prime Day starts in\x3C/div>            \x3Cdiv class="tg-df-countdown-blocks">              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-days">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">DAYS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-hrs">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">HRS\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-min">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">MIN\x3C/div>\x3C/div>              \x3Cdiv class="tg-df-countdown-item">\x3Cdiv class="tg-df-countdown-box">\x3Cdiv class="tg-df-countdown-num" id="tg-df-cd-sec">0\x3C/div>\x3C/div>\x3Cdiv class="tg-df-countdown-label">SEC\x3C/div>\x3C/div>            \x3C/div>          \x3C/div>          \x3Cdiv class="tg-df-carousel-box-eyebrow">DEAL FINDER\x3C/div>          \x3Cdiv class="tg-df-carousel-box-title">Find Deals Fast\x3C/div>          \x3Cdiv class="tg-df-carousel-box-subtitle">The latest deals from the biggest retailers, all in one place\x3C/div>                    \x3Cdiv class="tg-df-carousel-roundels-wrapper">          \x3Cdiv class="tg-df-carousel-roundels">            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>            \x3Cdiv class="tg-df-roundel tg-df-roundel-skeleton">\x3Cdiv class="tg-df-roundel-img-box tg-df-skeleton">\x3C/div>\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="margin: 4px auto 0 auto; height: 13px; width: 48px;">\x3C/div>\x3C/div>          \x3C/div>          \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: 'smooth'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-carousel-filters-wrap">                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="0">All\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_lightning">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-ot="amazon_prime">              \x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>            \x3Cbutton class="tg-df-carousel-filter-btn" data-d="10">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 10% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="15">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 15% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-d="25">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>            Min 25% off\x3C/button>                      \x3Cbutton class="tg-df-carousel-filter-btn" data-pr="under50">              \x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>            Under $50\x3C/button>\n        \x3C/div>\n      \x3C/div>\n    \x3C/div>          \x3C!-- Search & Filter Controls --\x3E    \x3Cdiv class="tg-df-controls" id="tg-df-controls" style="display:flex;">      \x3Cdiv class="tg-df-top-bar">        \x3Cdiv class="tg-df-search-wrapper">          \x3Cinput type="text" class="tg-df-search-input" placeholder="Search for deals, products, or brands...">          \x3Cbutton type="button" class="tg-df-search-btn" aria-label="Search">              \x3Csvg class="tg-df-search-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">                \x3Cpath d="M15.5 14h-.79l-.28-.27C15.41 12.59 16 11.11 16 9.5 16 5.91 13.09 3 9.5 3S3 5.91 3 9.5 5.91 16 9.5 16c1.61 0 3.09-.59 4.23-1.57l.27.28v.79l5 4.99L20.49 19l-4.99-5zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z"/>              \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-autocomplete-dropdown" id="tg-df-autocomplete">\x3C/div>        \x3C/div>                \x3Cdiv class="tg-df-settings-wrapper">          \x3Cbutton type="button" class="tg-df-settings-btn" aria-label="Settings" id="tg-df-settings-toggle">            \x3Csvg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" width="20" height="20">                \x3Cpath d="M19.14 12.94c.04-.3.06-.61.06-.94 0-.32-.02-.64-.06-.94l2.03-1.58c.18-.14.23-.41.12-.61l-1.92-3.32c-.12-.22-.37-.29-.59-.22l-2.39.96c-.5-.38-1.03-.7-1.62-.94l-.36-2.54c-.04-.24-.24-.41-.48-.41h-3.84c-.24 0-.43.17-.47.41l-.36 2.54c-.59.24-1.13.57-1.62.94l-2.39-.96c-.22-.08-.47 0-.59.22L2.73 8.87c-.12.21-.08.47.12.61l2.03 1.58c-.05.3-.09.63-.09.94s.02.64.06.94l-2.03 1.58c-.18.14-.23.41-.12.61l1.92 3.32c.12.22.37.29.59.22l2.39-.96c.5.38 1.03.7 1.62.94l.36 2.54c.05.24.24.41.48.41h3.84c.24 0 .43-.17.47-.41l.36-2.54c.59-.24 1.13-.56 1.62-.94l2.39.96c.22.08.47 0 .59-.22l1.92-3.32c.12-.22.07-.49-.12-.61l-2.01-1.58zM12 15.6c-1.98 0-3.6-1.62-3.6-3.6s1.62-3.6 3.6-3.6 3.6 1.62 3.6 3.6-1.62 3.6-3.6 3.6z"/>            \x3C/svg>          \x3C/button>          \x3Cdiv class="tg-df-settings-dropdown-backdrop" id="tg-df-settings-backdrop">\x3C/div>          \x3Cdiv class="tg-df-settings-dropdown" id="tg-df-settings-panel">            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Search Region\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-region-select">                \x3Coption value="auto">🌍 Auto-detect\x3C/option>                \x3Coption value="US">🇺🇸 United States (US)\x3C/option>                \x3Coption value="GB">🇬🇧 United Kingdom (UK)\x3C/option>                \x3Coption value="CA">🇨🇦 Canada (CA)\x3C/option>                \x3Coption value="AU">🇦🇺 Australia (AU)\x3C/option>                \x3Coption value="DE">🇩🇪 Germany (DE)\x3C/option>                \x3Coption value="FR">🇫🇷 France (FR)\x3C/option>                \x3Coption value="IT">🇮🇹 Italy (IT)\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Retailer\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-retailer-select">                \x3Coption value="">All Retailers\x3C/option>                \x3Coption value="Amazon">Amazon\x3C/option>                \x3Coption value="Walmart">Walmart\x3C/option>                \x3Coption value="Best Buy">Best Buy\x3C/option>                \x3Coption value="Target">Target\x3C/option>                \x3Coption value="John Lewis">John Lewis\x3C/option>                \x3Coption value="Currys">Currys\x3C/option>                \x3Coption value="Argos">Argos\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Offer Type\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-offer-type-select">                \x3Coption value="">All Offers\x3C/option>                \x3Coption value="amazon_prime">Amazon Prime\x3C/option>                \x3Coption value="recommended_promo">Recommended Promo\x3C/option>                \x3Coption value="amazon_lightning">Amazon Lightning Deal\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">Result Count\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-rows-select">                \x3Coption value="3">3 Items\x3C/option>                \x3Coption value="4">4 Items\x3C/option>                \x3Coption value="6">6 Items\x3C/option>                \x3Coption value="12" selected>12 Items\x3C/option>                \x3Coption value="24">24 Items\x3C/option>                \x3Coption value="48">48 Items\x3C/option>              \x3C/select>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Deal Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Only show products with active offers or previous prices (was_price)\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-deal-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item tg-df-dl-row">              \x3Cdiv>                \x3Cspan class="tg-df-dl-row-text">Editor Mode\x3C/span>                \x3Cspan class="tg-df-dl-row-subtext">Enable multi-select to copy deals to CMS\x3C/span>              \x3C/div>              \x3Clabel class="tg-df-toggle">                \x3Cinput type="checkbox" id="tg-df-editor-mode">                \x3Cspan class="tg-df-slider">\x3C/span>              \x3C/label>            \x3C/div>            \x3Cdiv class="tg-df-setting-item">              \x3Clabel class="tg-df-setting-label">View Mode\x3C/label>              \x3Cselect class="tg-df-region-select" id="tg-df-view-mode-select">                \x3Coption value="auto">Auto Collection\x3C/option>                \x3Coption value="carousel">Carousel\x3C/option>                \x3Coption value="savings_squad">Savings Squad\x3C/option>                \x3Coption value="grid">Grid (Columns)\x3C/option>                \x3Coption value="row">Row (List)\x3C/option>              \x3C/select>            \x3C/div>          \x3C/div>        \x3C/div>      \x3C/div>      \x3Cdiv class="tg-df-filters">        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-category-filter-wrapper" style="display: none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M10 18h4v-2h-4v2zM3 6v2h18V6H3zm3 7h12v-2H6v2z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-category-filter" aria-label="Category">            \x3Coption value="all">All Categories\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-multiselect-container" id="tg-df-brand-filter-wrapper" style="display:none;">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M4.25 5.61C6.27 8.2 10 13 10 13v6c0 .55.45 1 1 1h2c.55 0 1-.45 1-1v-6s3.72-4.8 5.74-7.39A.998.998 0 0 0 18.95 4H5.04c-.83 0-1.3.95-.79 1.61z"/>          \x3C/svg>          \x3Cdiv class="tg-df-filter-select tg-df-multiselect-trigger" id="tg-df-brand-trigger" tabindex="0">            Any Brand          \x3C/div>          \x3Cdiv class="tg-df-multiselect-dropdown" id="tg-df-brand-dropdown">            \x3C!-- Populated via script --\x3E          \x3C/div>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M9 3L5 6.99h3V14h2V6.99h3L9 3zm7 14.01V10h-2v7.01h-3L15 21l4-3.99h-3z"/>          \x3C/svg>          \x3Cselect class="tg-df-sort-select" aria-label="Sort Deals">            \x3Coption value="date_desc">Newest First\x3C/option>            \x3Coption value="best_match">Sort by: Match\x3C/option>            \x3Coption value="price_asc">Price Low to High\x3C/option>            \x3Coption value="price_desc">Price High to Low\x3C/option>            \x3Coption value="discount_desc">Biggest Discount\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper tg-df-price-range-wrapper" id="tg-df-custom-price-wrapper" style="display: flex; align-items:center; justify-content:center; padding: 10px 20px; gap: 8px; border: 1px solid var(--tg-df-border); border-radius: 100px; background-color: var(--tg-df-bg);">          \x3Cspan style="font-size:14px; font-weight:500; color:var(--tg-df-text-primary);">Price\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-min" placeholder="Min" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">          \x3Cspan style="color:var(--tg-df-text-muted)">-\x3C/span>          \x3Cinput type="number" class="tg-df-price-input" id="tg-df-custom-price-max" placeholder="Max" style="width: 48px; background: transparent; border: none; color: var(--tg-df-text-primary); outline: none; font-size: 14px; text-align: center; padding: 0;">        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-legacy-price-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-price-filter" aria-label="Filter Prices">            \x3Coption value="all">All Prices\x3C/option>            \x3Coption value="under50">Under $50\x3C/option>            \x3Coption value="50_100">$50 - $100\x3C/option>            \x3Coption value="100_200">$100 - $200\x3C/option>            \x3Coption value="200_500">$200 - $500\x3C/option>            \x3Coption value="over500">Over $500\x3C/option>          \x3C/select>        \x3C/div>        \x3Cdiv class="tg-df-sort-wrapper" id="tg-df-discount-filter-wrapper">          \x3Csvg class="tg-df-sort-icon" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor">            \x3Cpath d="M21.41 11.58l-9-9C12.05 2.22 11.55 2 11 2H4c-1.1 0-2 .9-2 2v7c0 .55.22 1.05.59 1.42l9 9c.36.36.86.58 1.41.58.55 0 1.05-.22 1.41-.59l7-7c.37-.36.59-.86.59-1.41 0-.55-.23-1.06-.59-1.42zM5.5 7C4.67 7 4 6.33 4 5.5S4.67 4 5.5 4 7 4.67 7 5.5 6.33 7 5.5 7z"/>          \x3C/svg>          \x3Cselect class="tg-df-filter-select" id="tg-df-discount-filter" aria-label="Discount Amount">            \x3Coption value="all">Any discount\x3C/option>            \x3Coption value="5">Min 5%\x3C/option>            \x3Coption value="10">Min 10%\x3C/option>            \x3Coption value="15">Min 15%\x3C/option>            \x3Coption value="20">Min 20%\x3C/option>            \x3Coption value="25">Min 25%\x3C/option>            \x3Coption value="30">Min 30%\x3C/option>            \x3Coption value="40">Min 40%\x3C/option>            \x3Coption value="50">Min 50%\x3C/option>            \x3Coption value="60">Min 60%\x3C/option>            \x3Coption value="70">Min 70%\x3C/option>          \x3C/select>        \x3C/div>      \x3C/div>    \x3C/div>    \x3C!-- Deals Grid Wrapper --\x3E    \x3Cdiv class="tg-df-grid-wrapper tg-df-carousel-cards-wrapper" id="tg-df-grid-wrapper">      \x3Cdiv class="tg-df-grid" id="tg-df-grid">        \x3C!-- Content populated by JavaScript --\x3E      \x3C/div>    \x3C/div>        \x3C!-- Vouchers Modal --\x3E    \x3Cdiv class="tg-df-modal-backdrop" id="tg-df-vouchers-modal">      \x3Cdiv class="tg-df-modal">        \x3Cdiv class="tg-df-modal-header">          \x3Ch3 class="tg-df-modal-title" id="tg-df-vouchers-title">Available Coupons & Deals\x3C/h3>          \x3Cbutton class="tg-df-modal-close" id="tg-df-vouchers-close">            \x3Csvg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">              \x3Cline x1="18" y1="6" x2="6" y2="18">\x3C/line>              \x3Cline x1="6" y1="6" x2="18" y2="18">\x3C/line>            \x3C/svg>          \x3C/button>        \x3C/div>        \x3Cdiv class="tg-df-modal-body" id="tg-df-vouchers-content">          \x3C!-- Vouchers injected here --\x3E        \x3C/div>      \x3C/div>    \x3C/div>  \x3C/div>`;      if (!template) {        template = document.createElement('template');        template.innerHTML = rawTemplate;      }      let shadowRoot = null;      if (hostContainer && template) {        hostContainer.setAttribute('data-initialized', 'true');        shadowRoot = hostContainer.attachShadow({ mode: 'open' });        shadowRoot.appendChild(template.content.cloneNode(true));      }      class DealsFinderWidget {        constructor(config) {          this.rootNode = config.rootNode || document;          this.hostContainer = config.hostContainer || null;          this.rootId = config.rootId || 'signal-deals-finder-root';          this.root = this.rootNode.querySelector('#' + this.rootId);          if (!this.root) return;          this.widgetId = (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'widget-' + Date.now() + '-' + Math.random().toString(36).slice(2);          this.grid = this.root.querySelector('#tg-df-grid');          this.tagsContainer = this.root.querySelector('#tg-df-tags-container');          this.categoryFilter = this.root.querySelector('#tg-df-category-filter');          this.categoryFilterWrapper = this.root.querySelector('#tg-df-category-filter-wrapper');          this.searchInput = this.root.querySelector('.tg-df-search-input');          this.autocompleteDropdown = this.root.querySelector('#tg-df-autocomplete');          this.sortSelect = this.root.querySelector('.tg-df-sort-select');          this.searchBtn = this.root.querySelector('.tg-df-search-btn');                    this.settingsToggle = this.root.querySelector('#tg-df-settings-toggle');          this.settingsPanel = this.root.querySelector('#tg-df-settings-panel');          this.settingsBackdrop = this.root.querySelector('#tg-df-settings-backdrop');          this.regionSelect = this.root.querySelector('#tg-df-region-select');          this.retailerSelect = this.root.querySelector('#tg-df-retailer-select');          this.offerTypeSelect = this.root.querySelector('#tg-df-offer-type-select');          this.viewModeSelect = this.root.querySelector('#tg-df-view-mode-select');          this.rowsSelect = this.root.querySelector('#tg-df-rows-select');          this.dealModeToggle = this.root.querySelector('#tg-df-deal-mode');          this.editorModeToggle = this.root.querySelector('#tg-df-editor-mode');          this.priceFilter = this.root.querySelector('#tg-df-price-filter');          this.discountFilter = this.root.querySelector('#tg-df-discount-filter');                    this.editorBar = this.root.querySelector('#tg-df-editor-bar');          this.editorSelectedCount = this.root.querySelector('#tg-df-selected-count');          this.editorCopyBtn = this.root.querySelector('#tg-df-editor-copy');          this.editorClearBtn = this.root.querySelector('#tg-df-editor-clear');                    this.apiUrl = 'https://search-api.fie.future.net.uk/widget.php';          this.deals = [];          this.displayLimit = 12;          this.airedaleArticles = null;          this.airedaleTags = [];          this.airedaleTagCounts = {};          this.activeDealTag = null;          this.selectedBrands = [];          this.currentQuery = '';          this.editorMode = this.hostContainer ? this.hostContainer.hasAttribute('data-editor-mode') : false;          this.viewModeOverride = this.hostContainer ? this.hostContainer.getAttribute('data-view-mode') : null;          this.selectedDeals = new Map();                    this.brandFilterWrapper = this.root.querySelector('#tg-df-brand-filter-wrapper');          this.brandTrigger = this.root.querySelector('#tg-df-brand-trigger');          this.brandDropdown = this.root.querySelector('#tg-df-brand-dropdown');                    this.customPriceWrapper = this.root.querySelector('#tg-df-custom-price-wrapper');          this.customPriceMin = this.root.querySelector('#tg-df-custom-price-min');          this.customPriceMax = this.root.querySelector('#tg-df-custom-price-max');          this.legacyPriceWrapper = this.root.querySelector('#tg-df-legacy-price-wrapper');          this.discountFilterWrapper = this.root.querySelector('#tg-df-discount-filter-wrapper');          this.initResizeObserver();          this.init();            if (['carousel', 'carousel-compact', 'auto', 'grid', 'row'].includes(this.getViewMode())) { this.loadCarouselSpreadsheet(); }        }        getViewMode() {          if (this.viewModeOverride && (!this.editorMode || !this.viewModeSelect)) {            return this.viewModeOverride;          }          return (this.viewModeSelect && this.viewModeSelect.value) ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');        }        applyLayoutMode() {          if (!this.grid) return;          const mode = this.getViewMode();          this.grid.classList.remove('layout-row', 'layout-grid', 'tg-df-grid-auto', 'carousel-compact', 'layout-replica-1', 'layout-replica-2');                    const carouselHost = this.root.querySelector('#tg-df-carousel-host');          const controlsDiv = this.root.querySelector('#tg-df-controls');          if (mode === 'carousel' || mode === 'auto' || mode === 'grid' || mode === 'row') {             if (mode === 'carousel') this.grid.classList.add('carousel-compact');             if (carouselHost) carouselHost.style.display = 'block';             if (controlsDiv) controlsDiv.style.display = 'none';             if (this.root.classList.contains('tg-df-container') && mode === 'carousel') {               this.root.classList.add('is-carousel');             } else if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          } else {             if (carouselHost) carouselHost.style.display = 'none';             if (controlsDiv) controlsDiv.style.display = 'flex';             if (this.root.classList.contains('tg-df-container')) {               this.root.classList.remove('is-carousel');             }          }          if (mode === 'grid') {            this.grid.classList.add('layout-grid');          } else if (mode === 'row') {            this.grid.classList.add('layout-row');          } else if (mode === 'savings_squad') {            this.grid.classList.add('tg-df-grid-auto', 'savings-squad-cards');          } else if (mode !== 'carousel') {            this.grid.classList.add('tg-df-grid-auto');          }                    const settingsWrapper = this.root.querySelector('.tg-df-settings-wrapper');          if (settingsWrapper) {            settingsWrapper.style.display = mode === 'auto' ? 'none' : 'block';          }          if (this.customPriceWrapper) {             this.customPriceWrapper.style.display = mode === 'auto' ? 'flex' : 'none';          }          if (this.legacyPriceWrapper) {             this.legacyPriceWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }          if (this.discountFilterWrapper) {             this.discountFilterWrapper.style.display = mode === 'auto' ? 'none' : 'flex';          }        }        initResizeObserver() {          try {            if (window.parent === window) return;          } catch (e) {            // cross origin frame check threw          }          const emitHeight = () => {            try {              const height = document.documentElement.scrollHeight || document.body.scrollHeight;              const msg = { type: 'embed-size', height: height };              if (window.parent && window.parent !== window) {                window.parent.postMessage(msg, '*');                window.parent.postMessage(JSON.stringify({ ...msg, sentinel: 'amp' }), '*');              }            } catch (e) {}          };                    if (window.ResizeObserver) {            try {              const ro = new ResizeObserver(() => emitHeight());              ro.observe(document.body);              if (this.root) ro.observe(this.root);            } catch(e){ console.warn(e); }          }          window.addEventListener('resize', emitHeight);          setTimeout(emitHeight, 300);        }        initCountdown() {          this.cdWrapper = this.root.querySelector('#tg-df-countdown-wrapper');                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          this.showCountdown = params.get('show_countdown') === 'true';          const showHeaderDetails = params.get('show_header_details') !== 'false';          const eyebrow = this.root.querySelector('.tg-df-carousel-box-eyebrow');          const title = this.root.querySelector('.tg-df-carousel-box-title');          const subtitle = this.root.querySelector('.tg-df-carousel-box-subtitle');          if (!showHeaderDetails) {            let containerElement = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (containerElement) containerElement.classList.add('hide-header-details');            if (eyebrow) eyebrow.style.display = 'none';            if (title) title.style.display = 'none';            if (subtitle) subtitle.style.display = 'none';          }          if (!this.cdWrapper) return;          this.cdTitle = this.root.querySelector('#tg-df-countdown-title');          this.cdDays = this.root.querySelector('#tg-df-cd-days');          this.cdHrs = this.root.querySelector('#tg-df-cd-hrs');          this.cdMin = this.root.querySelector('#tg-df-cd-min');          this.cdSec = this.root.querySelector('#tg-df-cd-sec');          this.updateCountdown();          this.cdInterval = setInterval(() => this.updateCountdown(), 1000);        }        updateCountdown() {          if (!this.cdWrapper) return;          if (!this.showCountdown) {            this.cdWrapper.style.display = 'none';            return;          }          const area = this.getAreaCode();          let offset = '-04:00';          if (['DE', 'FR', 'IT', 'ES', 'NL'].includes(area)) {             offset = '+02:00';          } else if (['GB', 'IE', 'UK'].includes(area)) {             offset = '+01:00';          }          const startTime = new Date('2026-06-23T00:00:00' + offset).getTime();          const endTime = new Date('2026-06-26T00:00:00' + offset).getTime();          const now = Date.now();          let targetTime = 0;          if (now < startTime) {             targetTime = startTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day starts in';             this.cdWrapper.style.display = 'flex';          } else if (now < endTime) {             targetTime = endTime;             if (this.cdTitle) this.cdTitle.textContent = 'Prime Day ends in';             this.cdWrapper.style.display = 'flex';          } else {             this.cdWrapper.style.display = 'none';             if (this.cdInterval) clearInterval(this.cdInterval);             return;          }          const diff = Math.max(0, targetTime - now);          const d = Math.floor(diff / (1000 * 60 * 60 * 24));          const h = Math.floor((diff / (1000 * 60 * 60)) % 24);          const m = Math.floor((diff / 1000 / 60) % 60);          const s = Math.floor((diff / 1000) % 60);          if (this.cdDays) this.cdDays.textContent = d;          if (this.cdHrs) this.cdHrs.textContent = h;          if (this.cdMin) this.cdMin.textContent = m;          if (this.cdSec) this.cdSec.textContent = s;        }        init() {          this.initCountdown();          try {            initAnalytics();          } catch (e) {            console.warn('Deals Widget Analytics Error:', e);          }                    this.bindEvents();                    let initialQuery = '';                    let searchSource = window.location.search;          if (this.hostContainer && this.hostContainer.hasAttribute('data-widget-config')) {            searchSource = this.hostContainer.getAttribute('data-widget-config');          } else if (typeof window !== 'undefined' && window.__WIDGET_CONFIG__) {            searchSource = window.__WIDGET_CONFIG__;          }          const params = new URLSearchParams(searchSource);          let initialViewMode = params.get('view_mode');          if (!params.has('search') && !params.has('q') && !params.has('query') && initialViewMode !== 'savings_squad') {             initialQuery = 'Everything';             if (this.discountFilter && !params.has('min_discount_ratio')) {               this.discountFilter.value = '5';             }          }                    if (this.regionSelect) {            this.regionSelect.value = params.get('region') || 'auto';            this.updatePriceDropdownCurrency();          }                    if (this.retailerSelect && params.has('retailer')) {            this.retailerSelect.value = params.get('retailer');          }                    if (params.has('brands')) {            const b = params.get('brands');            if (b) {              this.selectedBrands = b.split(',');            }          }                    if (this.offerTypeSelect && params.has('offer_type')) {            this.offerTypeSelect.value = params.get('offer_type');          }          if (params.has('bg_color')) {            const bg = params.get('bg_color');            if (bg === 'white') {              this.root.style.setProperty('background-color', '#ffffff', 'important');            } else if (bg === 'transparent') {              this.root.style.setProperty('background-color', 'transparent', 'important');            } else if (bg === 'light_blue') {              this.root.style.setProperty('background-color', '#E7F0FF', 'important');            }          } else {             this.root.style.removeProperty('background-color');          }                    if (params.has('view_mode')) {            if (this.viewModeSelect) {              this.viewModeSelect.value = params.get('view_mode');            } else {              this.viewModeOverride = params.get('view_mode');            }          }          if (this.rowsSelect && params.has('rows')) {            this.rowsSelect.value = params.get('rows');          }          if (params.has('price')) {            const priceVal = params.get('price');            if (this.priceFilter) {               // Try assigning it directly to select. If it's not present implicitly ignores               this.priceFilter.value = priceVal;            }            if (priceVal.includes('_')) {               const parts = priceVal.split('_');               if (this.customPriceMin && parts[0]) this.customPriceMin.value = parts[0];               if (this.customPriceMax && parts[1]) this.customPriceMax.value = parts[1];            }          }          if (this.discountFilter && params.has('min_discount_ratio')) {            // Need to convert back from ratio (e.g. 0.8) to select value (e.g. "20")            const ratioStr = params.get('min_discount_ratio');            const ratioFloat = parseFloat(ratioStr);            if (!isNaN(ratioFloat)) {               const percentage = Math.round((1 - ratioFloat) * 100);               this.discountFilter.value = percentage.toString();            }          }          if (this.sortSelect) {            this.sortSelect.value = params.get('sort') || 'discount_desc';          }          if (this.dealModeToggle && params.has('deal_mode')) {            this.dealModeToggle.checked = params.get('deal_mode') === 'true' || params.get('deal_mode') === '1';          }                    // Re-apply layout after params have updated control values          this.applyLayoutMode();                    if (params.get('search')) {            initialQuery = params.get('search');          } else if (params.get('q')) {            initialQuery = params.get('q');          } else if (params.get('query')) {            initialQuery = params.get('query');          }                    this.currentQuery = initialQuery;          if (this.searchInput) {            this.searchInput.value = this.currentQuery;          }                    if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {            this.fetchDeals(this.currentQuery);          } else {            this.render();          }        }        updatePriceDropdownCurrency() {          if (!this.priceFilter || !this.regionSelect) return;          const currencySymbols = {            'US': '$',            'GB': '£',            'CA': '$CA',            'AU': '$AU',            'DE': '€',            'FR': '€',            'IT': '€',          };          const area = this.getAreaCode();          const cur = currencySymbols[area || 'US'] || '$';                    const options = this.priceFilter.options;          for (let i = 0; i < options.length; i++) {            const opt = options[i];            if (opt.value === 'all') {              opt.innerText = 'All Prices';            } else if (opt.value === 'under50') {              opt.innerText = `Under ${cur}50`;            } else if (opt.value === '50_100') {              opt.innerText = `${cur}50 - ${cur}100`;            } else if (opt.value === '100_200') {              opt.innerText = `${cur}100 - ${cur}200`;            } else if (opt.value === '200_500') {              opt.innerText = `${cur}200 - ${cur}500`;            } else if (opt.value === 'over500') {              opt.innerText = `Over ${cur}500`;            }          }        }        populateBrandDropdown(values) {          if (!this.brandDropdown || !this.brandFilterWrapper) return;          this.brandFilterWrapper.style.display = 'flex'; // show the wrapper                    let html = '';          const allChecked = this.selectedBrands.length === 0 ? 'checked' : '';          const _div = '<' + '/div>';          const _span = '<' + '/span>';          html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="" ${allChecked} class="tg-df-brand-chk"> Any Brand${_div}`;                    values.forEach(v => {             if (!v.formatted_value || v.formatted_value === 'Any Brand') return;             const isChecked = this.selectedBrands.includes(v.formatted_value) ? 'checked' : '';             html += `\x3Cdiv class="tg-df-ms-option">\x3Cinput type="checkbox" value="${this.escapeHTML(v.formatted_value)}" ${isChecked} class="tg-df-brand-chk"> ${this.escapeHTML(v.formatted_value)} \x3Cspan style="color:var(--tg-df-text-muted);font-size:12px">(${v.count || 0})${_span}${_div}`;          });                    this.brandDropdown.innerHTML = html;                    // Re-bind listeners          const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');          chks.forEach(chk => {            chk.addEventListener('change', (e) => {              const val = e.target.value;              if (val === '') {                this.selectedBrands = [];              } else {                if (e.target.checked) {                   if (!this.selectedBrands.includes(val)) this.selectedBrands.push(val);                } else {                   this.selectedBrands = this.selectedBrands.filter(b => b !== val);                }              }                            if (this.selectedBrands.length === 0) {                 this.brandTrigger.innerText = 'Any Brand';              } else if (this.selectedBrands.length === 1) {                 this.brandTrigger.innerText = this.selectedBrands[0];              } else {                 this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;              }                            // Only call API if changed from UI interactions              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.updateURLParams();                 this.fetchDeals(this.currentQuery);              }            });          });                    // Update button text on load          if (this.selectedBrands.length === 0) {             this.brandTrigger.innerText = 'Any Brand';          } else if (this.selectedBrands.length === 1) {             this.brandTrigger.innerText = this.selectedBrands[0];          } else {             this.brandTrigger.innerText = `${this.selectedBrands.length} Brands selected`;          }        }        updateURLParams() {          const url = new URL(window.location);          if (this.currentQuery && this.currentQuery !== 'Gaming laptops') {            url.searchParams.set('q', this.currentQuery);          } else {            url.searchParams.delete('q');            url.searchParams.delete('search');            url.searchParams.delete('query');          }                    if (this.regionSelect && this.regionSelect.value !== 'auto') {            url.searchParams.set('region', this.regionSelect.value);          } else {            url.searchParams.delete('region');          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.set('retailer', this.retailerSelect.value);          } else {            url.searchParams.delete('retailer');          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.set('brands', this.selectedBrands.join(','));          } else {            url.searchParams.delete('brands');          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.set('offer_type', this.offerTypeSelect.value);          } else {            url.searchParams.delete('offer_type');          }                    if (this.viewModeSelect && this.viewModeSelect.value !== 'auto') {            url.searchParams.set('view_mode', this.viewModeSelect.value);          } else {            url.searchParams.delete('view_mode');          }                    if (this.rowsSelect && this.rowsSelect.value !== '12') {            url.searchParams.set('rows', this.rowsSelect.value);          } else {            url.searchParams.delete('rows');          }                    const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             url.searchParams.set('price', `${min}_${max}`);          } else if (this.priceFilter && this.priceFilter.value !== 'all') {            url.searchParams.set('price', this.priceFilter.value);          } else {            url.searchParams.delete('price');          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {               const ratio = (100 - v) / 100;               url.searchParams.set('min_discount_ratio', ratio.toString());            }          } else {            url.searchParams.delete('min_discount_ratio');          }                    if (this.sortSelect && this.sortSelect.value !== 'discount_desc') {            url.searchParams.set('sort', this.sortSelect.value);          } else {            url.searchParams.delete('sort');          }                    if (this.dealModeToggle && this.dealModeToggle.checked) {            url.searchParams.set('deal_mode', 'true');          } else {            url.searchParams.delete('deal_mode');          }                    window.history.replaceState({}, '', url);        }        bindEvents() {          const roundels = this.root.querySelectorAll('.tg-df-carousel-cat.original-hardcoded');          roundels.forEach(r => {             r.addEventListener('click', () => {                const q = r.getAttribute('data-query');                const pr = r.getAttribute('data-pr');                this.currentQuery = q;                const label = this.root.querySelector('#tg-df-carousel-title-label');                if (label) label.textContent = 'Best ' + q;                if (this.priceFilter) this.priceFilter.value = pr || 'all';                if (this.discountFilter) this.discountFilter.value = '5';                if (this.searchInput) this.searchInput.value = q;                                roundels.forEach(ro => ro.classList.remove('active'));                r.classList.add('active');                this.fetchDeals(this.currentQuery);             });          });          const discBtns = this.root.querySelectorAll('.tg-df-carousel-filter-btn');          discBtns.forEach(b => {             b.addEventListener('click', () => {                const d = b.getAttribute('data-d');                const pr = b.getAttribute('data-pr');                const ot = b.getAttribute('data-ot');                let label = b.innerText ? b.innerText.trim() : '';                let filterType = 'unknown';                let filterVal = 'unknown';                if (d !== null) { filterType = 'discount'; filterVal = d; }                else if (pr !== null) { filterType = 'price'; filterVal = pr; }                else if (ot !== null) { filterType = 'offertype'; filterVal = ot; }                if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-${filterType}-${filterVal}`, name: 'Filter Button', label: label });                                if (d !== null) {                   if (this.discountFilter) this.discountFilter.value = this.discountFilter.value === d ? '0' : d;                } else if (pr !== null) {                   if (this.priceFilter) this.priceFilter.value = this.priceFilter.value === pr ? 'all' : pr;                } else if (ot !== null) {                   if (this.offerTypeSelect) this.offerTypeSelect.value = this.offerTypeSelect.value === ot ? 'all' : ot;                } else {                   if (this.discountFilter) this.discountFilter.value = '0';                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.offerTypeSelect) this.offerTypeSelect.value = 'all';                }                if (d === null && pr === null && ot === null && b.getAttribute("data-type") !== "custom") {                   discBtns.forEach(ro => ro.classList.remove('active'));                   b.classList.add('active');                } else if (b.getAttribute("data-type") !== "custom") {                   // Only operate on hardcoded buttons (those without data-type)                   discBtns.forEach(ro => {                      if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active');                   });                                      let makeActive = true;                   if (d !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-d') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (pr !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-pr') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   } else if (ot !== null) {                       if (b.classList.contains('active')) makeActive = false;                       discBtns.forEach(ro => { if (ro.getAttribute('data-ot') !== null && ro.getAttribute('data-type') !== 'custom') ro.classList.remove('active') });                   }                                      if (makeActive) b.classList.add('active');                                      // Check if anything is active, if not activate "All"                   let anyActive = false;                   discBtns.forEach(ro => { if (ro.classList.contains('active') && ro.getAttribute('data-type') !== 'custom') anyActive = true; });                   if (!anyActive) {                       discBtns.forEach(ro => { if (!ro.getAttribute('data-d') && !ro.getAttribute('data-pr') && !ro.getAttribute('data-ot') && ro.getAttribute('data-type') !== 'custom') ro.classList.add('active'); });                   }                }                                this.fetchDeals(this.currentQuery);             });          });          if (this.brandTrigger && this.brandDropdown) {            this.brandTrigger.addEventListener('click', () => {              this.brandDropdown.classList.toggle('active');            });            document.addEventListener('click', (e) => {              if (this.brandFilterWrapper && !e.composedPath().includes(this.brandFilterWrapper)) {                this.brandDropdown.classList.remove('active');              }            });          }          let debounceTimer;          if(this.searchInput) {            this.searchInput.addEventListener('input', (e) => {              clearTimeout(debounceTimer);              const query = e.target.value.trim();              this.currentQuery = query;              if (this.getViewMode() === 'savings_squad' && this.autocompleteDropdown && this.airedaleTags && query.length > 0) {                 const matches = this.airedaleTags.filter(t => t.toLowerCase().includes(query.toLowerCase()) && t.toLowerCase() !== query.toLowerCase()).slice(0, 5);                 if (matches.length > 0) {                    this.autocompleteDropdown.innerHTML = matches.map(m => `\x3Cdiv class="tg-df-autocomplete-item" data-tag="${this.escapeHTML(m)}">${this.escapeHTML(m)}<` + `/div>`).join('');                    this.autocompleteDropdown.classList.add('active');                 } else {                    this.autocompleteDropdown.classList.remove('active');                 }              } else if (this.autocompleteDropdown) {                 this.autocompleteDropdown.classList.remove('active');              }              debounceTimer = setTimeout(() => {                this.updateURLParams();                if (query.length > 2) {                  this.fetchDeals(query);                } else if (query.length === 0) {                  this.deals = [];                  this.render();                }              }, 400);            });            this.searchInput.addEventListener('keypress', (e) => {              if (e.key === 'Enter') {                if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');                clearTimeout(debounceTimer);                const query = e.target.value.trim();                this.currentQuery = query;                this.activeDealTag = null;                trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });                this.updateURLParams();                if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                   this.fetchDeals(query);                }              }            });          }          if (this.autocompleteDropdown) {             this.autocompleteDropdown.addEventListener('click', (e) => {                const item = e.target.closest('.tg-df-autocomplete-item');                if (item) {                   const tag = item.getAttribute('data-tag');                   this.currentQuery = tag;                   if (this.searchInput) this.searchInput.value = tag;                   this.activeDealTag = tag;                   this.autocompleteDropdown.classList.remove('active');                   this.updateURLParams();                   this.fetchDeals(tag);                }             });             document.addEventListener('click', (e) => {               if (this.autocompleteDropdown && this.searchInput && !e.composedPath().includes(this.searchInput) && !e.composedPath().includes(this.autocompleteDropdown)) {                 this.autocompleteDropdown.classList.remove('active');               }             });          }          if (this.searchBtn) {            this.searchBtn.addEventListener('click', () => {              if (this.autocompleteDropdown) this.autocompleteDropdown.classList.remove('active');              clearTimeout(debounceTimer);              const query = this.searchInput.value.trim();              trackElementInteraction({ id: 'search-submit', name: 'Ask', label: 'Ask (main search)', text: query });              this.activeDealTag = null;              this.currentQuery = query;              this.updateURLParams();              if (query.length > 2 || (this.getViewMode() === 'savings_squad')) {                 this.fetchDeals(query);              }            });          }          if(this.sortSelect) this.sortSelect.addEventListener('change', () => {            trackElementInteraction({ id: `sort-option-${this.sortSelect.value}`, name: 'Sort', label: `Sort: ${this.sortSelect.options[this.sortSelect.selectedIndex].text}` });            this.updateURLParams();            if (this.deals.length > 0) {              this.sortData();              this.render();            }          });                    const priceFilter = this.root.querySelector('#tg-df-price-filter');          if (priceFilter) {            this.priceFilter = priceFilter;            this.priceFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-price-${this.priceFilter.value}`, name: 'Price', label: this.priceFilter.options[this.priceFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          const updateCustomPrice = () => {             this.updateURLParams();             if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);             } else {                this.render();             }          };          if (this.customPriceMin) {             this.customPriceMin.addEventListener('change', updateCustomPrice);             this.customPriceMin.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          if (this.customPriceMax) {             this.customPriceMax.addEventListener('change', updateCustomPrice);             this.customPriceMax.addEventListener('keypress', (e) => {                if (e.key === 'Enter') updateCustomPrice();             });          }          const discountFilter = this.root.querySelector('#tg-df-discount-filter');          if (discountFilter) {            this.discountFilter = discountFilter;            this.discountFilter.addEventListener('change', () => {              trackElementInteraction({ id: `filter-discount-${this.discountFilter.value}`, name: 'Discount', label: this.discountFilter.options[this.discountFilter.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }            });          }          if (this.categoryFilter) {            this.categoryFilter.addEventListener('change', (e) => {               const val = e.target.value === 'all' ? null : e.target.value;               this.activeDealTag = val;               this.fetchSavingsSquad();            });          }                    if (this.settingsToggle) {            this.settingsToggle.addEventListener('click', () => {              const o = this.settingsPanel.classList.toggle('active');              this.settingsBackdrop.classList.toggle('active');              if (o) trackElementInteraction({ id: 'filter-open', name: 'Filters', label: 'Open filters' });            });          }                    if (this.settingsBackdrop) {            this.settingsBackdrop.addEventListener('click', () => {              this.settingsPanel.classList.remove('active');              this.settingsBackdrop.classList.remove('active');            });          }                    if (this.regionSelect) {            this.regionSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-region-${this.regionSelect.value}`, name: 'Region', label: this.regionSelect.options[this.regionSelect.selectedIndex].text });              this.updateURLParams();              this.updatePriceDropdownCurrency();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.retailerSelect) {            this.retailerSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-merchant-${this.retailerSelect.value}`, name: 'Retailer', label: this.retailerSelect.options[this.retailerSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.offerTypeSelect) {            this.offerTypeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-offertype-${this.offerTypeSelect.value}`, name: 'Offer Type', label: this.offerTypeSelect.options[this.offerTypeSelect.selectedIndex].text });              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.viewModeSelect) {            this._prevViewMode = this.viewModeSelect.value;            this.viewModeSelect.addEventListener('change', () => {              trackElementInteraction({ id: `filter-viewmode-${this.viewModeSelect.value}`, name: 'View Mode', label: this.viewModeSelect.options[this.viewModeSelect.selectedIndex].text });                            // Reset all active toggles and filters to prevent config carry-over              this.selectedBrands = [];              if (this.brandTrigger) this.brandTrigger.innerText = 'Select Brands';              if (this.brandDropdown) {                const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                chks.forEach(chk => { chk.checked = false; });              }              if (this.priceFilter) this.priceFilter.value = 'all';              if (this.customPriceMin) this.customPriceMin.value = '';              if (this.customPriceMax) this.customPriceMax.value = '';              if (this.sortSelect) this.sortSelect.value = this.viewModeSelect.value === 'savings_squad' ? 'date_desc' : 'discount_desc';              if (this.discountFilter) this.discountFilter.value = '0';              if (this.retailerSelect) this.retailerSelect.value = '';              if (this.offerTypeSelect) this.offerTypeSelect.value = '';              if (this.rowsSelect) this.rowsSelect.value = '12';              if (this.categoryFilter) this.categoryFilter.value = 'all';              this.activeDealTag = null;              this.updateURLParams();              this.applyLayoutMode();                            if (this.getViewMode() === 'savings_squad' || this._prevViewMode === 'savings_squad') {                this.fetchDeals(this.currentQuery);              } else {                this.render();              }              this._prevViewMode = this.viewModeSelect.value;            });          }                    if (this.rowsSelect) {            this.rowsSelect.addEventListener('change', () => {              this.updateURLParams();              if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {                this.fetchDeals(this.currentQuery);              }            });          }                    if (this.dealModeToggle) {            this.dealModeToggle.addEventListener('change', () => {              this.updateURLParams();              this.render();            });          }          if (this.editorModeToggle) {             this.editorModeToggle.addEventListener('change', (e) => {                this.editorMode = e.target.checked;                this.render();                this.updateFloatingCopyBar();             });          }          if (this.editorCopyBtn) {             this.editorCopyBtn.addEventListener('click', () => {                this.copySelectedDealsToCMS();             });          }          if (this.editorClearBtn) {             this.editorClearBtn.addEventListener('click', () => {                this.selectedDeals.clear();                this.render();                this.updateFloatingCopyBar();             });          }          if (this.grid) {            this.grid.addEventListener('change', (e) => {               if (e.target.classList.contains('tg-df-deal-checkbox')) {                  const dealId = e.target.getAttribute('data-id');                  if (e.target.checked) {                     const dealObj = this.deals.find(d => d.id === dealId);                     if (dealObj) this.selectedDeals.set(dealId, dealObj);                  } else {                     this.selectedDeals.delete(dealId);                  }                  this.updateFloatingCopyBar();               }            });            this.grid.addEventListener('click', (e) => {              const dealCard = e.target.closest('[data-action="deal-click"]');              const similarCard = e.target.closest('[data-action="view-similar-click"]');              const cardLink = dealCard || similarCard;              if (cardLink) {                const productName = cardLink.getAttribute('data-product-name');                const merchantName = cardLink.getAttribute('data-merchant-name');                const productId = cardLink.getAttribute('data-analytics-id');                const price = parseFloat(cardLink.getAttribute('data-price')) || null;                const prevPriceStr = cardLink.getAttribute('data-previous-price');                const previousPrice = prevPriceStr ? parseFloat(prevPriceStr) : null;                const originalLink = cardLink.getAttribute('data-original-link');                const rewrittenLink = cardLink.getAttribute('href');                const revenueId = cardLink.getAttribute('data-revenue-id');                const index = parseInt(cardLink.getAttribute('data-index'), 10) || 0;                const inStock = cardLink.getAttribute('data-in-stock') === 'true';                const totalText = cardLink.getAttribute('data-total');                const totalDeals = parseInt(totalText, 10) || 0;                const productCategoryName = 'deals';                const trackingParams = {                  widgetId: this.widgetId,                  productCategoryName: productCategoryName,                  product: {                    modelId: cardLink.getAttribute('data-model-id') || null,                    matchId: cardLink.getAttribute('data-match-id') || null,                    brand: cardLink.getAttribute('data-model-brand') || null,                    parent: cardLink.getAttribute('data-model-parent') || null,                    name: productName,                    price: price,                    previousPrice: previousPrice,                    link: rewrittenLink,                    originalLink: originalLink,                    inStock: inStock                  },                  zeroBasedProductIndexOrNull: index,                  totalDealsOrProducts: totalDeals,                   merchant: {                    id: cardLink.getAttribute('data-merchant-id') || null,                    network: cardLink.getAttribute('data-merchant-network') || null,                    url: cardLink.getAttribute('data-merchant-url') || null,                    name: merchantName                  },                  revenueId: revenueId,                  widgetTypeName: this.widgetTypeName,                  isoCurrencyCode: normalizeCurrency(this.escapeHTML(cardLink.getAttribute('data-currency') || '$'))                };                if (dealCard) {                  trackDealClick(trackingParams);                } else {                  trackViewSimilarClick(trackingParams);                }              }              const couponsBtn = e.target.closest('[data-action="coupons-click"]');              if (couponsBtn) {                trackElementInteraction({                  id: 'product-card-show-coupons',                  name: 'Coupons',                  label: `Product card coupons: ${couponsBtn.getAttribute('data-merchant')}`                });              }            });          }        }        get widgetTypeName() {          const mode = this.viewModeSelect ? this.viewModeSelect.value : (this.viewModeOverride || 'auto');          switch(mode) {              case 'carousel': return 'Carousel';              case 'savings_squad': return 'Savings Squad';              case 'grid': return 'Grid';              case 'row': return 'Row';              default: return 'Auto Collection';          }        }        getAreaCode() {          if (this.regionSelect && this.regionSelect.value) {            if (this.regionSelect.value === 'auto') return null;            return this.regionSelect.value;          }          let area = null;          try {            const locale = window.navigator.language || window.navigator.userLanguage;            if (locale && locale.includes('-')) {              area = locale.split('-')[1].toUpperCase();            } else if (locale && locale.length === 2) {              if (locale.toUpperCase() === 'EN') { area = 'US'; }              else { area = locale.toUpperCase(); }            }          } catch (e) { /* Ignore */ }                    // Map to known valid options or fallback to US          const valid = ['US', 'GB', 'CA', 'AU', 'DE', 'FR', 'IT'];          if (area === 'UK') area = 'GB';          if (valid.includes(area)) {             return area;          }          return 'US';        }                async loadCarouselSpreadsheet() {          try {              const parseCSVRow = (str) => {                  let result = [], cur = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (inQuotes) {                          if (char === '"') {                              if (str[i + 1] === '"') { cur += '"'; i++; }                              else { inQuotes = false; }                          } else { cur += char; }                      } else {                          if (char === '"') { inQuotes = true; }                          else if (char === ',') { result.push(cur); cur = ''; }                          else { cur += char; }                      }                  }                  result.push(cur); return result;              };              const parseCSV = (str) => {                  const rows = []; let curRow = '', inQuotes = false;                  for (let i = 0; i < str.length; i++) {                      let char = str[i];                      if (char === '"') inQuotes = !inQuotes;                      if ((char === '\n' || char === '\r') && !inQuotes) {                          if (char === '\r' && str[i+1] === '\n') i++;                          if (curRow) rows.push(parseCSVRow(curRow));                          curRow = '';                      } else { curRow += char; }                  }                  if (curRow) rows.push(parseCSVRow(curRow));                  return rows;              };              const preloadedCSV = decodeURIComponent(escape(atob("LCwxLDIsMyw0LDUsNiw3LDgsOSwxMCwxMSwxMiwxMywxNCwxNQ0KUm91bmRlbCB0ZXh0LEFsbCxUVnMsRm9vdHdlYXIsQXBwYXJlbCxNYXR0cmVzZXMsQXBwbGlhbmNlcyxXZWFyYWJsZSB0ZWNoLEhlYWRwaG9uZXMsU21hcnQgSG9tZSxTcGVha2VycyxMYXB0b3BzLFRhYmxldHMsQ29tcHV0aW5nLFBob25lcyxHYW1pbmcsTGVnbw0KUm91bmRlbCBpbWFnZSxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2FpLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3R2cy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvN2IzYTIyNGIwNzk2M2M2MjdiNmI5MDliZDc4MzM4MzZlMDJmZjgxOS5qcGcud2VicCxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy84NGRhYzVkNDhlZDJkNDQ4NTU5ZWJhNjdhY2U4MzE0Y2M2N2NjZDk0LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvbWF0dHJlc3Nlcy5wbmcsaHR0cHM6Ly9pbWFnZXMuZmllLmZ1dHVyZWNkbi5uZXQvcHJvZHVjdHMvNzY4ZTk3Y2ViMDcxODAxZmFlMjA5MTBkMDgyMGIxNmY3NDdhZjkzOS5qcGcud2VicCxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3dlbGxuZXNzLnBuZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL2hlYWRwaG9uZXMuanBnLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzg5NTM1YmVlYmUyMGRiYmQ0YTM0NmQ2ZDZiZGZlOTFkOGE4ODRhMjEuanBnLndlYnAsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9hdWRpby5qcGcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9sYXB0b3BzLmpwZyxodHRwczovL2ltYWdlcy5maWUuZnV0dXJlY2RuLm5ldC9wcm9kdWN0cy8yMzk3NTY0ZWQ3YTVmZjk0N2U5YjZiMzBlNTRmNDc0OTRiODQxZjg5LmpwZy53ZWJwLGh0dHBzOi8vd3d3LnRvbXNndWlkZS5jb20vcHJvZHVjdHMvY2Fyb3VzZWwvY29tcHV0aW5nLmpwZyxodHRwczovL3d3dy50b21zZ3VpZGUuY29tL3Byb2R1Y3RzL2Nhcm91c2VsL3Bob25lcy5wbmcsaHR0cHM6Ly93d3cudG9tc2d1aWRlLmNvbS9wcm9kdWN0cy9jYXJvdXNlbC9nYW1pbmcucG5nLGh0dHBzOi8vaW1hZ2VzLmZpZS5mdXR1cmVjZG4ubmV0L3Byb2R1Y3RzLzRmNmM2MjFjYWMwYmMxYTg1ZDU5M2UzNTk0YmE1YjM0OWVmZmQyOTIuanBnLndlYnANClNlYXJjaCBRdWVyeSxFdmVyeXRoaW5nLFRlbGV2aXNpb25zLCJTbmVha2VycywgcnVubmluZyBzaG9lcywgc2FuZGFscyIsQ2xvdGhpbmcsTWF0dHJlc3NlcyxIb21lIEFwcGxpYW5jZXMsV2VhcmFibGVzICYgRml0bmVzcyBUZWNoLEhlYWRwaG9uZXMsSG9tZSBUZWNoLFNwZWFrZXJzLExhcHRvcHMsVGFibGV0cyxDb21wdXRpbmcsUGhvbmVzLEdhbWluZyxDb25zdHJ1Y3Rpb24gVG95cw0KRGlzY291bnQgQW1vdW50LG1pbiA1JSxtaW4gMTAlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUsbWluIDUlLG1pbiA1JSxtaW4gNSUNClByaWNlIFJhbmdlLCwsLCxtaW4gJDQwMCwsLCxtaW4gJDI1LCxtaW4gJDMwMCwsLG1pbiAkMTAwLCwNCkJyYW5kIFNlbGVjdGlvbiwsLCwsLCwsLCwsLCwsLCwNCkZpbHRlciBidXR0b25zLCwsLCwsLCwsLCwsLCwsLA0KMSxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMsTGlnaHRuaW5nIGRlYWxzLExpZ2h0bmluZyBkZWFscyxMaWdodG5pbmcgZGVhbHMNCjIsQW1hem9uIGRlYWxzLFVuZGVyICQxMDAwLDUwJSBvZmYsQWRpZGFzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsNTAlIG9mZixBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscyxBbWF6b24gZGVhbHMsQW1hem9uIGRlYWxzLEFtYXpvbiBkZWFscw0KMyxPdmVyICQ0MDAsVW5kZXIgJDUwMCxIb2thLE5pa2UsU2FhdHZhLE5pbmphLDQwJSBvZmYsSkxhYiwsSkJMLERlbGwsLEFzdXMsQXBwbGUsQ29uc29sZXMsU3RhciBXYXJzDQo0LFVuZGVyICQxMDAwLDUwJSBvZmYsU2tlY2hlcnMsVW5kZXIgQXJtb3VyLEhlbGl4LFNoYXJrLEdhcm1pbixBbmtlciBTb3VuZGNvcmUsUmluZyxTb25vcyxBcHBsZSxBcHBsZSxUUC1saW5rLFNhbXN1bmcsQWNjZXNzb3JpZXMsVW5kZXIgJDI1DQo1LFVuZGVyICQ1MDAsTEcsQXNpY3MsQ29sdW1iaWEsRHJlYW1DbG91ZCxLZXVyaWcsQXBwbGUsU29ueSxHb3ZlZSxUcmliaXQsTGVub3ZvLFNhbXN1bmcsRWVybyxHb29nbGUsR2FtZXMsVW5kZXIgJDUwDQo2LDUwJSBvZmYsU2Ftc3VuZyxOaWtlLFBhdGFnb25pYSxOZWN0YXIsRGUnTG9uZ2hpLEFtYXpmaXQsQXBwbGUsS2FzYSBzbWFydCxTb255LEFsaWVud2FyZSxUQ0wsTmV0Z2VhcixNb3Rvcm9sYSxOaW50ZW5kbyxCb3RhbmljYWxzDQo3LEFtYXpvbixIaXNlbnNlLE5ldyBCYWxhbmNlLEFyYyd0ZXJ5eCxUZW1wdXItcGVkaWMsRHlzb24sRml0Yml0LEJlYXRzLFBoaWxpcHMgSHVlLEFua2VyLEFjZXIsT25lUGx1cyxEZWxsLE9uZVBsdXMsU29ueSxEaXNuZXkNCjgsQXBwbGUsVENMLEFkaWRhcyxDYXJoYXJ0dCxCZWFyLEJpc3NlbGwsU2Ftc3VuZyxFYXJmdW4sQmxpbmssQmVhdHMsTVNJLE1pY3Jvc29mdCxBY2VyLE5vdGhpbmcsWGJveCxNYXJ2ZWwNCjksLFNvbnksU2F1Y29ueSxUaGUgTm9ydGggRmFjZSxTaWVuYSxOdXRyaWJ1bGxldCxPdXJhLFNhbXN1bmcsR29vZ2xlIE5lc3QgLE1hcnNoYWxsLFNhbXN1bmcsTGVub3ZvLExlbm92bywsLFBva2Vtb24NCjEwLCxSb2t1LEJpcmtlbnN0b2NrLENSWiBZb2dhLFdpbmtCZWRzLEJsYWNrIGFuZCBEZWNrZXIsUmluZ2Nvbm4sQ01GLEV1ZnksU2Ftc3VuZyxNaWNyb3NvZnQsUmVNYXJrYWJsZSxBbGllbndhcmUsLCwNCjExLCwsQnJvb2tzLFRoZSBHeW0gUGVvcGxlLEJyb29rbHluIGJlZGRpbmcsTmVzcHJlc3NvLCwxTW9yZSxBcmxvLCxSYXplciwsQ29yc2FpciwsLA0KMTIsLCxDcm9jcywsRWlnaHQgU2xlZXAsQ3Vpc2luYXJ0LCxKQkwsLCwsLEhQLCwsDQpOb3RlcywsLCwsLCwsLCwsLCwsLCwNCiwsIlByaW9yaXRpc2UgYmlnZ2VzdCAlLyQgZGlzY291bnQsIFR2cyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiB0aGUgbW9zdCBwb3B1bGFyIGV2ZW4gaWYgdGhleSBhcmUgc3RpbGwgZXhwZW5zaXZlIiwiTm8gcGF0dGVybiB0byBwcmljaW5nL2Rpc2NvdW50LCByZWFkZXJzIG1haW5seSBzaG9wIGJ5IGJyYW5kL3JlY29nbmlzYWJsZSBzaG9lcyIsIk5vIHBhdHRlcm4gdG8gcHJpY2luZy9kaXNjb3VudCwgcmVhZGVycyBtYWlubHkgc2hvcCBieSBicmFuZCIsIkEgbGFiZWwgd2lsbCBkZWZpbml0ZWx5IGhlbHAgaGVyZSBlLmcuIGJlc3QgZm9yIHNpZGUgc2xlZXBlciwgYmVzdCBtZW1vcnkgZm9hbSIsIkFwcGxpYW5jZXMgaXMgYSBiaWcgY2F0ZWdvcnksIGlzIGl0IHBvc3NpYmxlIHRvIHNwbGl0IGludG8ga2l0Y2hlbiBhcHBsaWFuY2VzLCBmbG9vcmNhcmUsIGFpciBoZWFsdGgvY29vbGluZz8gT3Igc2ltaWxhciIsIkZvY3VzIG9uIHZhbHVlIGZvciBtb25leSwgR2FybWlucyB3aXRoIH41MCUgb2ZmIGhhdmUgYmVlbiBwb3B1bGFyIGV2ZW4gdGhvdWdoIHRoZXkgYXJlIHN0aWxsICQ1MDAiLCwsLCxJbmNsdWRlIEtpbmRsZXMsSSB3b3VsZCBpbmNsdWRlIHdpZmkgcm91dGVycyBoZXJlIGluc3RlYWQgb2Ygc21hcnQgaG9tZSxDYW4gd2Ugc3VyZmFjZSBwaG9uZSBwcm92aWRlciBkZWFscz8gVC1tb2JpbGUgYW5kIHZlcml6b24gd291bGQgbWFrZSBhIGxvdCBtb3JlIG1vbmV5IHRoYW4gQW1hem9uLCwNCiwsaGF2aW5nIGEgJ2Jlc3QgZm9yJyBsYWJlbCB3b3VsZCBiZSBoZWxwZnVsIGUuZy4gYmVzdCBmb3IgYnJpZ2h0IHJvb20sQ2FuIHdlIHN0b3Aga2lkcyBzaG9lcyBmcm9tIHB1bGxpbmcgdGhyb3VnaD8sIldpbGwgdGhpcyBpbmNsdWRlIGFjY2Vzc29yaWVzIGUuZy4gY2FwcywgYmFncywgaWYgc28gbWFrZSBzdXJlIHRoZXNlIGFyZSBtaXhlZCB0aHJvdWdob3V0IGNsb3RoaW5nIGRlYWxzIixXaWxsIHRoaXMgaW5jbHVkZSB0b3BwZXJzIGFuZCBwaWxsb3dzPyBTZWVpbmcgbW9yZSBtb21lbnR1bSB3aXRoIHRoaXMgY2F0ZWdvcnkgcmVjZW50bHkgc28gYSBiZWRkaW5nIHRhYiBtaWdodCB3b3JrLCwiTmVlZCB0byBtYWtlIHN1cmUgYmFuZHMsIHNjcmVlbiBwcm90ZWN0b3JzIGV0Yy4gZG9uJ3QgcHVsbCBpbnRvIGhlcmUiLCwsLCwsLCwsDQosLCJQcmlvcml0aXNlIDY1JycgYW5kIDU1JyBpbmNoIFRWcywgdGhlbiBiaWdnZXIgc2NyZWVucyBiZWZvcmUgdGhlIHNtYWxsZXIgc2l6ZXMiLCwsUXVlZW4gaXMgdGhlIG1vc3QgcG9wdWxhciBzaXplIGluIHRoZSBVUyAtIHByaW9yaXRpc2UgZGVhbHMgZm9yIHRoaXMgc2l6ZSwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpDYXRlZ29yaWVzIHRvIGNvbnNpZGVyLCxQcm9kdWN0cyBpbmNsdWRlZCwsLCwsLCwsLCwsLCwsDQpVbmRlciAkNTA/LCxBaXIgdGFncywsLCwsLCwsLCwsLCwsDQosLFBvcnRhYmxlIGNoYXJnZXJzL3dpcmVsZXNzIGNoYXJnZXJzLCwsLCwsLCwsLCwsLCwNCiwsIldhdGVyIGJvdHRsZXMgKHN0YW5sZXlzLCBPd2FsYSwgSHlkcm8gZmxhc2ssIFlldGkpIiwsLCwsLCwsLCwsLCwsDQosLEhhbmQgaGVsZCBmYW5zLCwsLCwsLCwsLCwsLCwNCiwsLCwsLCwsLCwsLCwsLCwNCmhvbWUgb2ZmaWNlLCxvZmZpY2UgY2hhaXJzLCwsLCwsLCwsLCwsLCwNCiwsc3RhbmRpbmcgZGVza3MsLCwsLCwsLCwsLCwsLA0KLCxtb25pdG9ycywsLCwsLCwsLCwsLCwsDQosLEtleWJvYXJkcywsLCwsLCwsLCwsLCwsDQosLGRvY2tpbmcgc3RhdGlvbiwsLCwsLCwsLCwsLCwsDQosLCwsLCwsLCwsLCwsLCwsDQpHYW1pbmcsLENvbnNvbGVzLCwsLCwsLCwsLCwsLCwNCiwsQWNjZXNzb3JpZXMsLCwsLCwsLCwsLCwsLA0KLCxHYW1lcywsLCwsLCwsLCwsLCwsDQosLENvdWxkIGluY2x1ZGUgTGVnbz8sLCwsLCwsLCwsLCwsLA==")));              const text = preloadedCSV;              const parsed = parseCSV(text);                            const rowsByName = {};              let filterStart = -1;              parsed.forEach((rc, i) => {                 if (rc && rc.length > 0 && rc[0]) rowsByName[rc[0]] = rc;                 if (rc && rc.length > 0 && rc[0] === 'Filter buttons') filterStart = i;              });                            const cols = [];              if(rowsByName['Roundel text']) {                const headerRow = rowsByName['Roundel text'];                for(let col = 1; col < headerRow.length; col++) {                   let label = headerRow[col];                   if (!label) continue;                                      let q = rowsByName['Search Query'] && rowsByName['Search Query'][col] ? rowsByName['Search Query'][col] : '';                   let img = rowsByName['Roundel image'] && rowsByName['Roundel image'][col] ? rowsByName['Roundel image'][col] : '';                   let ds = rowsByName['Discount Amount'] && rowsByName['Discount Amount'][col] ? rowsByName['Discount Amount'][col] : '';                   let pr = rowsByName['Price Range'] && rowsByName['Price Range'][col] ? rowsByName['Price Range'][col] : '';                   let rt = rowsByName['Retailer'] && rowsByName['Retailer'][col] ? rowsByName['Retailer'][col] : '';                   let ot = rowsByName['Offer Type'] && rowsByName['Offer Type'][col] ? rowsByName['Offer Type'][col] : '';                                      let filters = [];                   if(filterStart > 0) {                     for(let r = filterStart + 1; r < parsed.length; r++) {                         if(!parsed[r] || parsed[r][0] === 'Notes' || parsed[r][0] === 'Categories to consider') break;                         let f = parsed[r][col];                         if(f) filters.push(f);                     }                   }                   cols.push({ label, img, q, ds, pr, rt, ot, filters });                }              }              this.carouselData = cols;              if (this.carouselData && this.carouselData.length > 0) {                 const isMatched = this.carouselData.some(c => c.q === this.currentQuery || c.label === this.currentQuery);                 if (!isMatched) {                    const first = this.carouselData[0];                    this.currentQuery = first.q || first.label;                    if (this.priceFilter) this.priceFilter.value = 'all';                    if (this.customPriceMin) this.customPriceMin.value = '';                    if (this.customPriceMax) this.customPriceMax.value = '';                    let dPr = first.pr || 'all';                    if (typeof dPr === 'string' && dPr !== 'all') {                       let prLower = dPr.toLowerCase();                       if (prLower.includes('min') || prLower.includes('over')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else if (prLower.includes('max') || prLower.includes('under')) {                          let m = dPr.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       }                    }                    let dAm = '0';                    if(first.ds && typeof first.ds === 'string') {                       let m = first.ds.match(/(\d+)/);                       if(m) dAm = m[1];                    }                    if (this.discountFilter) this.discountFilter.value = dAm;                    if (this.offerTypeSelect) this.offerTypeSelect.value = first.ot || '';                    if (this.retailerSelect) this.retailerSelect.value = first.rt || '';                    this.selectedBrands = [];                    if (this.brandDropdown) {                        const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                        chks.forEach(chk => chk.checked = false);                    }                    if (this.searchInput) this.searchInput.value = this.currentQuery;                 }              }              this.renderCarouselUI();          } catch(e){ console.warn(e); }        }                renderCarouselUI() {           const roundelWrapper = this.root.querySelector('.tg-df-carousel-roundels');           if(!roundelWrapper || !this.carouselData) return;                      let html = '';           this.carouselData.forEach(r => {              const q = r.q || r.label;              const isActive = (this.currentQuery === q || this.currentQuery === r.label) ? 'active' : '';              const imgHtml = r.img ? `\x3Cimg src="${r.img}" alt="${r.label}" />` : `\x3Csvg width="32" height="32" fill="#1F69FF" viewBox="0 0 24 24">\x3Cpath d="M12 2C6.48 2 2 6.48 2 12s4.48 10 10 10 10-4.48 10-10S17.52 2 12 2zm0 18c-4.41 0-8-3.59-8-8s3.59-8 8-8 8 3.59 8 8-3.59 8-8 8z"/>\x3C/svg>`;              html += `                \x3Cdiv class="tg-df-roundel tg-df-carousel-cat ${isActive}" data-label="${this.escapeHTML(r.label)}">                  \x3Cdiv class="tg-df-roundel-img-box">${imgHtml}\x3C/div>                  \x3Cspan class="tg-df-roundel-label">${this.escapeHTML(r.label)}\x3C/span>                \x3C/div>              `;           });           roundelWrapper.innerHTML = html;                      // Rebind clicks           const roundels = this.root.querySelectorAll('.tg-df-carousel-cat');           roundels.forEach(rNode => {             rNode.addEventListener('click', () => {                const r = this.carouselData.find(c => c.label === rNode.getAttribute('data-label'));                if(!r) return;                this.currentQuery = r.q || r.label;                const labelTitle = this.root.querySelector('#tg-df-carousel-title-label');                if (labelTitle) labelTitle.textContent = 'Best ' + this.currentQuery;                if (this.priceFilter) this.priceFilter.value = 'all';                if (this.customPriceMin) this.customPriceMin.value = '';                if (this.customPriceMax) this.customPriceMax.value = '';                let dPr = r.pr || 'all';                if (typeof dPr === 'string' && dPr !== 'all') {                   let prLower = dPr.toLowerCase();                   if (prLower.includes('min') || prLower.includes('over')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMin) this.customPriceMin.value = m[1];                   } else if (prLower.includes('max') || prLower.includes('under')) {                      let m = dPr.match(/(\d+)/);                      if (m && this.customPriceMax) this.customPriceMax.value = m[1];                   }                }                                let discountAmount = '0';                if(r.ds && typeof r.ds === 'string') {                   let m = r.ds.match(/(\d+)/);                   if(m) discountAmount = m[1];                }                if (this.discountFilter) this.discountFilter.value = discountAmount;                if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                                // Clear brands                    this.selectedBrands = [];                    if (this.brandDropdown) {                    const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                    chks.forEach(chk => chk.checked = false);                }                                if (this.searchInput) this.searchInput.value = this.currentQuery;                                roundels.forEach(ro => ro.classList.remove('active'));                if (rNode) rNode.classList.add('active');                                this.renderCarouselFilters(r);                this.fetchDeals(this.currentQuery);             });           });                      // Auto-highlight active           const activeR = this.carouselData.find(c => c.q === this.currentQuery || c.label === this.currentQuery);           if(activeR) this.renderCarouselFilters(activeR);        }                renderCarouselFilters(r) {           const filtersWrap = this.root.querySelector('.tg-df-carousel-filters-wrap');           if(!filtersWrap) return;                      let html = `\x3Cbutton class="tg-df-carousel-filter-btn" data-type="all">All\x3C/button>`;                      r.filters.forEach(f => {              let fL = f.toLowerCase();              let icon = '';              let logic = `data-type="custom" data-v="${this.escapeHTML(f)}"`;              if (fL === 'amazon deals' || fL === 'prime deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/fwoVXvL79turN3Ph535m38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/u75QjVpt3w2EsMimJiRo38-600-100.png" class="active-img" alt="" /> Prime deals\x3C/button>`;              } else if (fL === 'lightning deals') {                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>\x3Cimg src="https://cdn.mos.cms.futurecdn.net/HqAui7w97ft2NPqBtQ5r38-600-100.png" class="inactive-img" alt="" />\x3Cimg src="https://cdn.mos.cms.futurecdn.net/yWPQ5yyQRhUwVKzGwYbh38-600-100.png" class="active-img" alt="" /> Lightning deals\x3C/button>`;              } else {                 if (fL.includes('lightning')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-zap">\x3Cpolygon points="13 2 3 14 12 14 11 22 21 10 12 10 13 2">\x3C/polygon>\x3C/svg>`;                 } else if (fL.includes('% off')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-tag">\x3Cpath d="M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z">\x3C/path>\x3Ccircle cx="7.5" cy="7.5" r=".5" fill="currentColor">\x3C/circle>\x3C/svg>`;                 } else if (fL.includes('under') || fL.includes('min ')) {                    icon = `\x3Csvg xmlns="http://www.w3.org/2000/svg" width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" class="lucide lucide-badge-dollar-sign">\x3Cpath d="M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z">\x3C/path>\x3Cpath d="M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8">\x3C/path>\x3Cpath d="M12 18V6">\x3C/path>\x3C/svg>`;                 }                 html += `\x3Cbutton class="tg-df-carousel-filter-btn" ${logic}>${icon} ${this.escapeHTML(f)}\x3C/button>`;              }           });                      filtersWrap.innerHTML = html;                      const btns = filtersWrap.querySelectorAll('button');           btns.forEach(b => {             b.addEventListener('click', () => {                const type = b.getAttribute('data-type');                if (type === 'custom') {                   const v = b.getAttribute('data-v');                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: `filter-custom-${(v||'').toLowerCase().replace(/[^a-z0-9]+/g, '-')}`, name: 'Custom Filter', label: v });                }                if (type === 'all') {                   if (typeof trackElementInteraction === 'function') trackElementInteraction({ id: 'filter-clear-all', name: 'Clear all', label: 'Clear all filters' });                   // reset everything                   btns.forEach(btn => btn.classList.remove('active'));                   b.classList.add('active');                                      // Reset prices                   if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   if (this.brandDropdown) {                     const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                     chks.forEach(chk => chk.checked = false);                   }                } else {                   const v = b.getAttribute('data-v');                   const fL = v.toLowerCase();                                      let mapRet = ['amazon', 'walmart', 'best buy', 'target', 'john lewis', 'currys', 'argos'];                   const getCategory = (s) => {                      if (s === 'lightning deals' || s === 'amazon deals' || s === 'prime deals') return 'offer';                      if (s.includes('% off')) return 'discount';                      if (s.includes('under') || s.includes('over') || s.includes('min') || s.includes('max')) return 'price';                      if (mapRet.includes(s)) return 'retailer';                      return 'brand';                   };                   const cat = getCategory(fL);                   const wasActive = b.classList.contains('active');                   if (cat !== 'brand') {                      btns.forEach(btn => {                          if (btn === b) return;                          if (btn.getAttribute('data-type') === 'all') return;                          const bV = btn.getAttribute('data-v');                          if (!bV) return;                          if (getCategory(bV.toLowerCase()) === cat) btn.classList.remove('active');                      });                   }                   if (wasActive) b.classList.remove('active');                   else b.classList.add('active');                   let anyActive = Array.from(btns).some(btn => btn !== btns[0] && btn.classList.contains('active'));                   if (!anyActive) {                       btns[0].click();                       return;                   } else {                       btns[0].classList.remove('active');                   }                                      if (this.priceFilter) this.priceFilter.value = 'all';                   if (this.customPriceMin) this.customPriceMin.value = '';                   if (this.customPriceMax) this.customPriceMax.value = '';                   let dPr = r.pr || 'all';                   if (typeof dPr === 'string' && dPr !== 'all') {                      let prLower = dPr.toLowerCase();                      if (prLower.includes('min') || prLower.includes('over')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMin) this.customPriceMin.value = m[1];                      } else if (prLower.includes('max') || prLower.includes('under')) {                         let m = dPr.match(/(\d+)/);                         if (m && this.customPriceMax) this.customPriceMax.value = m[1];                      }                   }                                      let discountAmount = '0';                   if(r.ds && typeof r.ds === 'string') {                      let m = r.ds.match(/(\d+)/);                      if(m) discountAmount = m[1];                   }                   if (this.discountFilter) this.discountFilter.value = discountAmount;                   if (this.offerTypeSelect) this.offerTypeSelect.value = r.ot || '';                   if (this.retailerSelect) this.retailerSelect.value = r.rt || '';                   this.selectedBrands = [];                   btns.forEach(btn => {                       if (!btn.classList.contains('active') || btn.getAttribute('data-type') === 'all') return;                       const vv = btn.getAttribute('data-v');                       const vl = vv.toLowerCase();                                              if (vl === 'lightning deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_lightning';                       } else if (vl === 'amazon deals' || vl === 'prime deals') {                          if (this.offerTypeSelect) this.offerTypeSelect.value = 'amazon_prime';                       } else if (vl.includes('% off')) {                          let m = vl.match(/(\d+)%/);                          if (m && this.discountFilter) this.discountFilter.value = m[1];                       } else if (vl.includes('under') || vl.includes('max')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMax) this.customPriceMax.value = m[1];                       } else if (vl.includes('min') || vl.includes('over')) {                          let m = vl.match(/(\d+)/);                          if (m && this.customPriceMin) this.customPriceMin.value = m[1];                       } else {                          let foundR = mapRet.find(x => x === vl);                          if (foundR) {                             let realR = ['Amazon', 'Walmart', 'Best Buy', 'Target', 'John Lewis', 'Currys', 'Argos'].find(x => x.toLowerCase() === vl);                             if (this.retailerSelect) this.retailerSelect.value = realR;                          } else {                             this.selectedBrands.push(vv);                          }                       }                   });                                      if (this.brandDropdown) {                       const chks = this.brandDropdown.querySelectorAll('.tg-df-brand-chk');                       chks.forEach(c => c.checked = this.selectedBrands.includes(c.value));                   }                                      if (r.pr && typeof r.pr === 'string') {                       let prL = r.pr.toLowerCase();                       if (prL.includes('under $')) {                           let m = prL.match(/under \$(\d+)/i);                           if (m && this.customPriceMax && !this.customPriceMax.value) this.customPriceMax.value = m[1];                       }                   }                }                                this.fetchDeals(this.currentQuery);             });           });                      // default to highlighting first           btns[0].classList.add('active');        }async fetchDeals(query, append = false) {          if (!append) {             this.showLoading();             this.deals = [];             this.displayLimit = (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          } else {             this.displayLimit += (this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12;          }                    try {            if (this.getViewMode() === 'savings_squad') {               await this.fetchSavingsSquad(append);            } else {               if (this.isBroadQuery(query)) {                 await this.fetchAdviserDeals(query, append);               } else {                 await this.fetchHawkDeals(query, append);                 if (this.deals.length === 0) {                   await this.fetchAdviserDeals(query, append);                 }               }            }          } catch (error) {            console.warn("[Tom's Guide Widget] Fetch error:", error);            this.showError();          }        }        async fetchSavingsSquad() {          let topArticles = this.airedaleArticles;          if (!topArticles) {            const airedaleUrl = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`;            let res;            try {               res = await fetch(airedaleUrl);            } catch(e) {               try { res = await fetch(`https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50`); } catch (err) { console.warn("Fallback fetch failed", err); return; }            }            if (!res.ok) throw new Error('Airedale API Error');            const articles = await res.json();            topArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);            this.airedaleArticles = topArticles;                        let tagCounts = {};            topArticles.forEach((a) => {              let articleTags = new Set();              if (a.articlecategory && Array.isArray(a.articlecategory)) {                 a.articlecategory.forEach((t) => articleTags.add(t));              }              articleTags.forEach(t => {                 tagCounts[t] = (tagCounts[t] || 0) + 1;              });            });                        this.airedaleTags = Object.keys(tagCounts).sort((a, b) => tagCounts[b] - tagCounts[a]);            this.airedaleTagCounts = tagCounts;          }                    let targetArticles = topArticles;          if (this.activeDealTag) {             const encodedTag = encodeURIComponent(this.activeDealTag.toLowerCase().replace(/\s+/g, '-'));             const url = `https://airedale.futurecdn.net/feeds/feed_1776420579726.json?site=tomsguide&articleType=deals&limit=50&articleCategoryHandle=${encodedTag}`;             try {                const res = await fetch(url);                if (res.ok) {                   const articles = await res.json();                   targetArticles = Array.isArray(articles) ? articles.slice(0, 50) : ((articles.data && Array.isArray(articles.data)) ? articles.data.slice(0, 50) : []);                }             } catch(e) {                console.warn("Failed to fetch by activeDealTag", e);             }          }          let extractedDeals = [];          let dynamicBrandsCounts = {};                    targetArticles.forEach((article) => {             if (!article.articlepage) return;                          let pageData = [];             try {                pageData = JSON.parse(article.articlepage[0]);             } catch(e){ console.warn(e); }                          const savingsSquad = pageData.filter((p) => p.type === 'deal' || p.type === 'featured-product');                          savingsSquad.forEach((block, idx) => {                const data = block.data || {};                const isFeatured = block.type === 'featured-product';                                const link = data.link || {};                const priceObj = data.price || {};                const image = data.image || {};                                if (data.brand) {                   data.brand = data.brand.replace(/^\d+\.\s*/, '').trim();                   dynamicBrandsCounts[data.brand] = (dynamicBrandsCounts[data.brand] || 0) + 1;                }                const externalUrl = isFeatured ? data.url : (link.href || null);                let summaryTitle = isFeatured ? (data.name || data.brand) : (data.productName || link.label || article.articlename);                let description = isFeatured ? (data.strapline || '') : (data.text || '');                                if (!isFeatured && !data.productName && data.text) {                   const brSplit = data.text.split(new RegExp('\x3Cbr\\s*\\/?\\x3E', 'i'));                   if (brSplit.length > 1) {                     summaryTitle = brSplit[0].replace(/<[^>]+>/g, '').trim();                     description = brSplit.slice(1).join(' ').replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').trim();                   } else {                     const match = data.text.match(/\x3Cstrong>(.*?)<\/strong>/);                     if (match) {                       summaryTitle = match[1].replace(/<[^>]+>/g, '').trim();                       if (summaryTitle.endsWith(':')) summaryTitle = summaryTitle.slice(0, -1);                     }                   }                }                                let imageUrl = isFeatured ? image.mos : (image.src || null);                if (imageUrl && imageUrl.startsWith('//')) imageUrl = 'https:' + imageUrl;                                description = description.replace(/<br\s*\/?>/gi, ' ').replace(/<\/?(p|div)[^>]*>/gi, ' ').replace(/<[^>]+>/g, '').replace(/\s+/g, ' ').replace(/View Deal$/i, '').trim();                                let merchantName = data.retailer || '';                if (!merchantName && externalUrl) {                   try {                     merchantName = new URL(externalUrl).hostname.replace('www.', '').split('.')[0];                     merchantName = merchantName.charAt(0).toUpperCase() + merchantName.slice(1);                   }catch(e){ console.warn(e); }                }                if (!merchantName) merchantName = 'Retailer';                const q = (this.currentQuery || '').toLowerCase();                const activeTagLogic = (this.activeDealTag || '').toLowerCase();                if (q.length > 2 && q !== activeTagLogic) {                   const searchTarget = `${summaryTitle || ''} ${description || ''}`.toLowerCase();                   if (!searchTarget.includes(q)) return;                }                let rawPrice = 0;                let rawMsrp = 0;                let currencyStr = '$';                if (isFeatured) {                   rawPrice = typeof data.salePrice === 'number' && data.salePrice > 0 ? data.salePrice : (typeof data.price === 'number' ? data.price : 0);                   rawMsrp = typeof data.salePrice === 'number' && typeof data.price === 'number' && data.price > data.salePrice ? data.price : 0;                   currencyStr = data.currency === 'GBP' ? '£' : '$';                } else {                   rawPrice = priceObj.amount ? parseFloat(priceObj.amount) : 0;                   rawMsrp = priceObj.amountWas ? parseFloat(priceObj.amountWas) : 0;                   currencyStr = priceObj.currency === 'GBP' ? '£' : '$';                }                                let savingAmt = 0;                let savingLabel = '';                if (rawPrice > 0 && rawMsrp > rawPrice) {                   savingAmt = parseFloat((rawMsrp - rawPrice).toFixed(2));                   savingLabel = `Save ${currencyStr}${savingAmt}`;                }                                // Apply Brand filter                if (this.selectedBrands && this.selectedBrands.length > 0) {                   const itemBrand = (data.brand || '').toLowerCase();                   const hasMatch = this.selectedBrands.some(sb => sb.toLowerCase() === itemBrand);                   if (!hasMatch) return;                }                // Apply Price filter                let priceFilterVal = null;                const min = this.customPriceMin ? this.customPriceMin.value : '';                const max = this.customPriceMax ? this.customPriceMax.value : '';                if (min || max) {                   priceFilterVal = `${min}_${max}`;                } else if (this.priceFilter && this.priceFilter.value !== 'all') {                   priceFilterVal = this.priceFilter.value;                }                if (priceFilterVal && rawPrice > 0) {                   if (priceFilterVal === 'under50' && rawPrice >= 50) return;                   if (priceFilterVal === 'over50' && rawPrice <= 50) return;                   if (priceFilterVal === 'over30' && rawPrice <= 30) return;                   if (priceFilterVal === 'over500' && rawPrice <= 500) return;                   if (priceFilterVal.includes('_')) {                      const parts = priceFilterVal.split('_');                      const min = parseFloat(parts[0]);                      const max = parseFloat(parts[1]);                      if (!isNaN(min) && rawPrice < min) return;                      if (!isNaN(max) && rawPrice > max) return;                   }                }                // Apply Discount filter                if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {                   const requiredDiscount = parseInt(this.discountFilter.value);                   if (!isNaN(requiredDiscount) && requiredDiscount > 0) {                      if (!rawMsrp || rawMsrp <= rawPrice) return;                      const ratio = Math.round((1 - (rawPrice / rawMsrp)) * 100);                      if (ratio < requiredDiscount) return;                   }                }                                extractedDeals.push({                   id: `airedale-${article.id || Math.random()}-${idx}`,                   url: externalUrl,                   image: imageUrl,                   fallbackImage: imageUrl,                   title: summaryTitle,                   brand: data.brand || '',                   productName: data.productName || '',                   merchant: merchantName,                   rawPrice: rawPrice,                   rawMsrp: rawMsrp,                   price: rawPrice > 0 ? rawPrice.toString() : '',                   msrp: rawMsrp > 0 ? rawMsrp.toString() : '',                   currency: currencyStr,                   isCheckPrice: !rawPrice,                   savingLabel: savingLabel,                   savingType: rawMsrp > rawPrice ? 'amount' : 'none',                   isPrime: false,                   starRating: null,                   description: description,                   text: data.text || ''                });             });          });                    const airedaleBrandsList = Object.keys(dynamicBrandsCounts).map(b => ({              formatted_value: b,              count: dynamicBrandsCounts[b]          })).sort((a,b) => b.count - a.count);                    if (this.getViewMode() === 'savings_squad') {             this.populateBrandDropdown(airedaleBrandsList.slice(0, 15));             if (this.brandFilterWrapper) {                if (airedaleBrandsList.length === 0) {                    this.brandFilterWrapper.style.display = 'none';                } else {                    this.brandFilterWrapper.style.display = 'flex';                }             }          }                    this.deals = extractedDeals;          this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        isBroadQuery(query) {          const q = query.toLowerCase();          const intentModifiers = ['deals', 'best', 'sale', 'under', 'cheap', 'offers', 'discount'];          return intentModifiers.some(term => q.includes(term));        }        async fetchHawkDeals(query, append = false) {          const url = new URL(this.apiUrl);          url.searchParams.append('model_name', query);          const areaCode = this.getAreaCode();          if (areaCode) {            url.searchParams.append('area', areaCode);          }                    if (append && this.deals.length > 0) {            url.searchParams.append('offset', this.deals.length.toString());          }                    if (this.retailerSelect && this.retailerSelect.value) {            url.searchParams.append('filter_merchant_name', this.retailerSelect.value);          }                    if (this.selectedBrands && this.selectedBrands.length > 0) {            url.searchParams.append('filter_label[text_brand]', this.selectedBrands.join(','));          }                    let priceVal = null;          const min = this.customPriceMin ? this.customPriceMin.value : '';          const max = this.customPriceMax ? this.customPriceMax.value : '';          if (min || max) {             priceVal = `${min}_${max}`;          } else if (this.priceFilter && this.priceFilter.value !== 'all') {             priceVal = this.priceFilter.value;          }          if (priceVal) {            if (priceVal === 'under50') {              url.searchParams.append('filter_max_price', '50');            } else if (priceVal === 'over50') {              url.searchParams.append('filter_min_price', '50');            } else if (priceVal === 'over30') {              url.searchParams.append('filter_min_price', '30');            } else if (priceVal === 'over500') {              url.searchParams.append('filter_min_price', '500');            } else if (priceVal.includes('_')) {              const parts = priceVal.split('_');              if (parts[0]) url.searchParams.append('filter_min_price', parts[0]);              if (parts[1]) url.searchParams.append('filter_max_price', parts[1]);            }          }                    if (this.discountFilter && this.discountFilter.value !== 'all' && this.discountFilter.value !== '0') {            const v = parseInt(this.discountFilter.value);            if (!isNaN(v) && v > 0) {              const ratio = (100 - v) / 100;              url.searchParams.append('min_discount_ratio', ratio.toString());            }          }                    if (this.offerTypeSelect && this.offerTypeSelect.value) {            url.searchParams.append('offer', this.offerTypeSelect.value);          }                    url.searchParams.append('filter_product_types', 'deals');                    if (this.rowsSelect && this.rowsSelect.value) {            url.searchParams.append('rows', this.rowsSelect.value);          } else {             url.searchParams.append('rows', '12'); // default          }          let response;          try {             response = await fetch(url.toString());          } catch(e) {             if (window.location.protocol === 'file:') {                console.warn("[Tom's Guide Widget] fetch from file:// blocked by local CORS policy, falling back to Adviser mock.");                await this.fetchAdviserDeals(query);                return;             }             console.warn("Hawk fetch failed", e);             this.deals = [];             this.render();             return;          }          if (!response.ok) {            throw new Error('Hawk API Response Error');          }          const rawData = await response.json();          // Safely locate data array from potentially wrapped response          let offers = [];          let modelInfoArray = [];                    let brandFilterData = null;          if (rawData && rawData.widget && rawData.widget.data && Array.isArray(rawData.widget.data.filters)) {             brandFilterData = rawData.widget.data.filters.find(f => f.type === 'label_text_brand');          } else if (rawData && rawData.data && Array.isArray(rawData.data.filters)) {             brandFilterData = rawData.data.filters.find(f => f.type === 'label_text_brand');          }          if (brandFilterData && Array.isArray(brandFilterData.values) && brandFilterData.values.length > 0) {             this.populateBrandDropdown(brandFilterData.values);          } else {             if (this.brandFilterWrapper && this.selectedBrands.length === 0) {                this.brandFilterWrapper.style.display = 'none';             }          }                    if (rawData && rawData.widget && rawData.widget.data) {            if (Array.isArray(rawData.widget.data.offers)) offers = rawData.widget.data.offers;            if (rawData.widget.data.model_info && typeof rawData.widget.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.widget.data.model_info) ? rawData.widget.data.model_info : Object.values(rawData.widget.data.model_info);            }          } else if (rawData && rawData.data) {            if (Array.isArray(rawData.data.offers)) offers = rawData.data.offers;            if (rawData.data.model_info && typeof rawData.data.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.data.model_info) ? rawData.data.model_info : Object.values(rawData.data.model_info);            }          } else {            if (Array.isArray(rawData)) offers = rawData;            else if (rawData && Array.isArray(rawData.offers)) offers = rawData.offers;            else if (rawData && rawData.offers && Array.isArray(rawData.offers.offer)) offers = rawData.offers.offer;            else if (rawData && rawData.offers) offers = [].concat(rawData.offers);                        if (rawData && rawData.model_info && typeof rawData.model_info === 'object') {              modelInfoArray = Array.isArray(rawData.model_info) ? rawData.model_info : Object.values(rawData.model_info);            }          }          let modelDetails = {};          modelInfoArray.forEach(m => {            const mId = m.model_id || m.id;            if (mId) {              modelDetails[mId] = {                score: m.score != null ? parseFloat(m.score) : null,                brand: m.brand || null,                parent: (m.parents && Array.isArray(m.parents) && m.parents.length > 0) ? m.parents[0].name : null              };            }          });          offers.forEach(item => {            let data = { ...item };            const mId = data.model_id;            if (mId && modelDetails[mId]) {              data.review_score = modelDetails[mId].score;              data.model_brand = modelDetails[mId].brand;              data.model_parent = modelDetails[mId].parent;            } else {              data.review_score = null;            }                        let itemOffers = [];            if (Array.isArray(item.offers)) itemOffers = item.offers;            else if (Array.isArray(item.offer)) itemOffers = item.offer;            else if (item.offers && typeof item.offers === 'object') itemOffers = [item.offers];            else if (item.offer && typeof item.offer === 'object') itemOffers = [item.offer];            if (itemOffers.length > 0) {              itemOffers.forEach(subItem => {                let subData = { ...item, ...subItem };                const subId = subData.model_id;                if (subId && modelDetails[subId]) {                  subData.review_score = modelDetails[subId].score;                  subData.model_brand = modelDetails[subId].brand;                  subData.model_parent = modelDetails[subId].parent;                } else if (data.review_score != null) {                  subData.review_score = data.review_score;                }                if (subData.merchant && typeof subData.merchant === 'object') {                  subData.merchant_name = subData.merchant.name;                }                this.deals.push(this.extractDealData(subData));              });              return;            }                        if (item.merchant && typeof item.merchant === 'object') {              data.merchant_name = item.merchant.name;            }                        this.deals.push(this.extractDealData(data));          });                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        async fetchAdviserDeals(query) {          // ======================================================================          // TODO: ADVISER API REPLACEMENT          // The code below simulates the Adviser API response using mock data.          // Once the real endpoint is ready, remove getAdviserMockData() and           // perform an actual fetch() request similar to fetchHawkDeals().          // Example:          // const area = this.getAreaCode();          // let apiUrl = `https://your-adviser-api.com/search?q=${query}&area=${area}`;          // if (this.priceFilter && this.priceFilter.value !== 'all') {          //   const val = this.priceFilter.value;          //   if (val === 'under50') apiUrl += '&filter_max_price=50';          //   else if (val === '50_100') apiUrl += '&filter_max_price=100';          //   else if (val === '100_200') apiUrl += '&filter_max_price=200';          //   else if (val === '200_500') apiUrl += '&filter_max_price=500';          // }          // const res = await fetch(apiUrl);          // const rawData = await res.json();          // ======================================================================          // Simulating network latency          await new Promise(resolve => setTimeout(resolve, 400));                    const rawData = this.getAdviserMockData();          let offers = [];                    if (rawData && rawData.data && rawData.data.Get && Array.isArray(rawData.data.Get.Deal)) {            offers = rawData.data.Get.Deal;          }                    // Basic client-side filtering for the mock if we want it to react to the query          const q = query.toLowerCase();          const selectedRetailer = (this.retailerSelect && this.retailerSelect.value) ? this.retailerSelect.value.toLowerCase() : null;                    offers.forEach(item => {            const dataObj = item;                        // Apply retailer filter            const itemRetailer = (dataObj.dataRetailer || '').toLowerCase();            if (selectedRetailer && itemRetailer !== selectedRetailer && !itemRetailer.includes(selectedRetailer)) {              return;            }                        // Apply mock price filter            let price = dataObj.dataDiscountedPrice || 0;            if (typeof price === 'string') {              price = parseFloat(price.replace(/[^0-9.]/g, ''));            }            let priceVal = null;            const min = this.customPriceMin ? this.customPriceMin.value : '';            const max = this.customPriceMax ? this.customPriceMax.value : '';            if (min || max) {               priceVal = `${min}_${max}`;            } else if (this.priceFilter && this.priceFilter.value !== 'all') {               priceVal = this.priceFilter.value;            }            if (priceVal) {              if (priceVal === 'under50' && price >= 50) return;              if (priceVal === 'over50' && price <= 50) return;              if (priceVal === 'over30' && price <= 30) return;              if (priceVal === 'over500' && price <= 500) return;              if (priceVal.includes('_')) {                 const parts = priceVal.split('_');                 if (parts[0] && price < parseFloat(parts[0])) return;                 if (parts[1] && price > parseFloat(parts[1])) return;              }            }                        // Map Adviser schema to our widget's expected schema            const mappedData = {              url: dataObj.linkHREF || dataObj.dataLink || '#',              image: dataObj.imageURL || (dataObj.image && dataObj.image.src) || '',              title: dataObj.dataProduct || (dataObj.product && dataObj.product.name) || 'Product Deal',              merchant: dataObj.dataRetailer || 'Retailer',              price: dataObj.dataDiscountedPrice || 0,              currency: dataObj.dataCurrency === 'USD' ? '$' : (dataObj.dataCurrency || '$'),              msrp: dataObj.dataOriginalPrice || null            };                        const titleLow = mappedData.title.toLowerCase();            const merchLow = mappedData.merchant.toLowerCase();                        // Smarter mock filtering            let isMatch = false;            if (q === '' || this.isBroadQuery(q)) {              isMatch = true;            } else if (titleLow.includes(q) || merchLow.includes(q)) {              isMatch = true;            } else if ((q.includes('laptop') || q.includes('mac') || q.includes('pc')) && (titleLow.includes('macbook') || titleLow.includes('laptop'))) {              isMatch = true;            } else if ((q.includes('tv') || q.includes('television')) && (titleLow.includes('tv') || titleLow.includes('oled') || titleLow.includes('qled'))) {              isMatch = true;            } else if ((q.includes('phone') || q.includes('smartphone')) && (titleLow.includes('galaxy') || titleLow.includes('phone'))) {              isMatch = true;            } else if ((q.match(/watch|fitness|run|shoe/)) && (titleLow.includes('forerunner') || titleLow.includes('saucony') || titleLow.includes('watch'))) {              isMatch = true;            }                        if (isMatch) {               this.deals.push(this.extractDealData(mappedData));            }          });                    let rowLimit = 12;          if (this.rowsSelect && this.rowsSelect.value) {            rowLimit = parseInt(this.rowsSelect.value, 10) || 12;          }          // Intentionally omitting the slice here to allow "Load More" to work if the API returns more                    this.sortData();          this.render();          if (typeof trackDealsAppeared !== 'undefined') {             trackDealsAppeared(this.widgetId, this.deals, this.revenueId, typeof this.getAreaCode === 'function' ? (this.getAreaCode() === 'GB' ? 'GBP' : 'USD') : 'USD', this.currentQuery, this.widgetTypeName);          }        }        getAdviserMockData() {          return {            "data": {              "Get": {                "Deal": [                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 300,                    "dataOriginalPrice": 399,                    "dataProduct": "Samsung Galaxy A36",                    "dataRetailer": "Samsung",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/MqDYsukV3JBG54te6dEs7j.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 14,                    "dataOriginalPrice": 24,                    "dataProduct": "Blink Mini",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/3JurmAjHsDa5tPdaHAwEV8.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 59,                    "dataOriginalPrice": 99,                    "dataProduct": "Ring Video Doorbell",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 10,                    "dataOriginalPrice": 599,                    "dataProduct": "MacBook Neo",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/Lg4Dvg68j9SbB5CPNrTEpH.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 749,                    "dataOriginalPrice": 849,                    "dataProduct": "65\\\" Fire TV Omni 4K QLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/SG34ZWodUkLTxJvMTbjPYR.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 71,                    "dataOriginalPrice": 160,                    "dataProduct": "Saucony Hurricane 24",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/vxf7UD5T2Am7guVzFoFcZ4.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 649,                    "dataOriginalPrice": 749,                    "dataProduct": "Garmin Forerunner 970",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/3GKnEu7CdhtxPMfnPCMCiA.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1049,                    "dataOriginalPrice": 1499,                    "dataProduct": "LG 48\\\" C4 4K OLED TV",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/imvwZV9zoMD6fn9Afuge35.jpg"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 1499,                    "dataOriginalPrice": 2199,                    "dataProduct": "Samsung 49\\\" Odyssey Neo G9 4K Gaming Monitor",                    "dataRetailer": "Amazon",                    "imageURL": "http://cdn.mos.cms.futurecdn.net/XWDEJ5dUAE2nhK8k3Jk7k7.png"                  },                  {                    "dataCurrency": "USD",                    "dataDiscountedPrice": 299,                    "dataOriginalPrice": 699,                    "dataProduct": "EGOHOME Black Memory Foam Mattress (queen)",                    "dataRetailer": "Amazon",                    "imageURL": "https://cdn.mos.cms.futurecdn.net/hMUemtAejNETLVYxNrktzm.jpg"                  }                ]              }            }          };        }        decodeHTML(html) {          if (!html) return '';          const txt = document.createElement("textarea");          txt.innerHTML = String(html);          return txt.value;        }        extractDealData(item) {          const priceRawStr = String(item.price || item.current_price || '0');          const msrpRawStr = String(item.was_price || item.msrp || item.original_price || '0');          const rawPrice = parseFloat(priceRawStr.replace(/[^\d.]/g, '')) || 0;          const rawMsrp = parseFloat(msrpRawStr.replace(/[^\d.]/g, '')) || 0;          const isCheckPrice = rawPrice === 0 || priceRawStr === '0.00' || priceRawStr === '0';                    let originalImageUrl = item.image || item.image_url || item.product_image || '';          let imageUrl = originalImageUrl;          if ((!imageUrl || isCheckPrice) && item.model_image_url) {             imageUrl = item.model_image_url;             originalImageUrl = imageUrl;          } else if ((!imageUrl || isCheckPrice) && item.model_image) {             imageUrl = item.model_image;             originalImageUrl = imageUrl;          }                    if (imageUrl) {            imageUrl = imageUrl.replace(/-(\d+)-(\d+)(\.[a-z.]+)$/i, '$3');          }                    let fallbackImage = '';          if (originalImageUrl && originalImageUrl !== imageUrl) {             fallbackImage = originalImageUrl;          } else if (item.model_image && item.model_image !== imageUrl) {             fallbackImage = item.model_image;          } else if (item.model_image_url && item.model_image_url !== imageUrl) {             fallbackImage = item.model_image_url;          }                    const rawCurrency = item.currency || item.currency_symbol || '$';                    let savingLabel = item.percentage_saving_label || '';          if (!savingLabel && rawMsrp > rawPrice && rawPrice > 0) {            const pct = Math.round(((rawMsrp - rawPrice) / rawMsrp) * 100);            if (pct > 0) {              savingLabel = `${pct}% OFF`;            }          }                    const isPrime = item.shipping && item.shipping.prime === true;                    let scoreRaw = (item.review_score !== undefined && item.review_score !== null && item.review_score > 0) ? parseFloat(item.review_score) : null;          let starRating = 0;          if (scoreRaw !== null) {            starRating = Math.round((scoreRaw > 10 ? scoreRaw / 20 : scoreRaw / 2) * 2) / 2;          }                    return {            id: item.offer_id || item.link || item.url || item.offer_link || Math.random().toString(),            url: item.link || item.url || item.offer_link || '#',            image: imageUrl,            fallbackImage: fallbackImage,            title: item.name || item.title || item.model_name || item.product_name || 'Unknown Product',            brand: item.brand || '',            productName: item.model_name || item.product_name || item.name || '',            merchant: item.merchant_name || item.merchant || item.retailer || 'Retailer',            price: item.price !== undefined ? String(item.price) : '0.00',            currency: this.decodeHTML(rawCurrency),            msrp: item.was_price || item.msrp || item.original_price || null,            rawPrice: rawPrice,            rawMsrp: rawMsrp,            hasWasPrice: (item.was_price !== undefined && item.was_price !== null),            isCheckPrice: isCheckPrice,            savingLabel: savingLabel,            isPrime: isPrime,            starRating: starRating > 0 ? starRating : null,            modelId: item.model_id || '',            productKey: item.product_key || '',            merchantId: (item.merchant && typeof item.merchant === 'object') ? item.merchant.id || '' : '',            matchId: item.match_id || '',            merchantNetwork: (item.merchant && typeof item.merchant === 'object') ? item.merchant.an || '' : '',            merchantUrl: (item.merchant && typeof item.merchant === 'object') ? item.merchant.url || '' : '',            modelBrand: item.model_brand || item.brand || '',            modelParent: item.model_parent || ''          };        }        sortData() {          const sortVal = this.sortSelect ? this.sortSelect.value : (this.getViewMode() === 'savings_squad' ? 'date_desc' : 'discount_desc');          if (sortVal === 'price_asc') {            this.deals.sort((a, b) => a.rawPrice - b.rawPrice);          } else if (sortVal === 'price_desc') {            this.deals.sort((a, b) => b.rawPrice - a.rawPrice);          } else if (sortVal === 'discount_desc') {            this.deals.sort((a, b) => {              const aDiscount = a.rawMsrp > a.rawPrice ? (a.rawMsrp - a.rawPrice) : 0;              const bDiscount = b.rawMsrp > b.rawPrice ? (b.rawMsrp - b.rawPrice) : 0;              return bDiscount - aDiscount;            });          } else if (sortVal === 'date_desc') {             this.deals.sort((a, b) => {                let dateA = 0;                let dateB = 0;                if (a && a.modifiedDate) {                   const valA = Array.isArray(a.modifiedDate) ? a.modifiedDate[0] : a.modifiedDate;                   dateA = new Date(valA).getTime();                   if (isNaN(dateA)) dateA = 0;                }                if (b && b.modifiedDate) {                   const valB = Array.isArray(b.modifiedDate) ? b.modifiedDate[0] : b.modifiedDate;                   dateB = new Date(valB).getTime();                   if (isNaN(dateB)) dateB = 0;                }                return dateB - dateA;             });          }        }        getFilteredDeals() {          let filteredDeals = [...this.deals];                    if (this.dealModeToggle && this.dealModeToggle.checked) {            filteredDeals = filteredDeals.filter(d => d.hasWasPrice || (d.msrp && d.rawMsrp > d.rawPrice));          }                    return filteredDeals;        }        showLoading() {          const _div = '<' + '/div>';          const skeletonCardHtml = `            \x3Cdiv class="tg-df-card">              \x3Cdiv class="tg-df-card-image-box">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-img">${_div}              ${_div}              \x3Cdiv class="tg-df-card-body">                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text title">${_div}                \x3Cdiv class="tg-df-card-footer mt-auto">                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text short" style="height:24px;">${_div}                  \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text" style="height:44px; margin-top:8px;">${_div}                ${_div}              ${_div}            ${_div}`;          this.grid.innerHTML = Array(4).fill(skeletonCardHtml).join('');        }        showError() {          const _div = '<' + '/div>';          this.grid.innerHTML = `\x3Cdiv class="tg-df-message">            An error occurred while finding deals. Please check your connection and try again.          ${_div}`;        }        escapeHTML(str) {          if (!str) return '';          return String(str).replace(/[&<>'"]/g, tag => ({              '&': '&', '<': '<', '>': '>', "'": ''', '"': '"'          }[tag] || tag));        }                bindCouponButtons() {          const btns = this.root.querySelectorAll('.tg-df-tag-coupons');          btns.forEach(btn => {            btn.addEventListener('click', (e) => {              e.preventDefault();              e.stopPropagation();              const merchant = btn.getAttribute('data-merchant');              this.openVouchersModal(merchant);            });          });                    const closeBtn = this.root.querySelector('#tg-df-vouchers-close');          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (closeBtn) {            closeBtn.onclick = () => this.closeVouchersModal();          }          if (backdrop) {            backdrop.onclick = (e) => {              if (e.target === backdrop) this.closeVouchersModal();            };          }        }                closeVouchersModal() {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          if (backdrop) backdrop.classList.remove('active');        }                async checkMerchantsCouponsBulk(merchants) {          if (!merchants || merchants.length === 0) return {};          const controller = new AbortController();          const timeoutId = setTimeout(() => controller.abort(), 4000);          try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchants.join(','));            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '120');            url.searchParams.append('origin', 'widgets-clientside');                        let res; try { res = await fetch(url.toString(), { signal: controller.signal }); } catch (e) { return {}; }            clearTimeout(timeoutId);            if (!res.ok) return {};            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        const foundMerchants = new Set();            offers.forEach(o => {              let mName = o.merchant_name || o.merchant || o.retailer;              if (mName && typeof mName === 'object') mName = mName.name;              if (mName) foundMerchants.add(String(mName).toLowerCase());            });            const resultMap = {};            merchants.forEach(m => {              if (m) resultMap[m] = foundMerchants.has(String(m).toLowerCase());            });            return resultMap;          } catch (e) {            return {};          }        }                async openVouchersModal(merchantName) {          const backdrop = this.root.querySelector('#tg-df-vouchers-modal');          const title = this.root.querySelector('#tg-df-vouchers-title');          const content = this.root.querySelector('#tg-df-vouchers-content');                    if (!backdrop || !content) return;                    // HACK: Hide closing tags          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h4 = '<' + '/h4>';          const _svg = '<' + '/svg>';          const _circle = '<' + '/circle>';          const _polyline = '<' + '/polyline>';          const _rect = '<' + '/rect>';          const _path = '<' + '/path>';                    title.innerText = `${merchantName} Coupons & Deals`;          content.innerHTML = `\x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}                               \x3Cdiv class="tg-df-skeleton tg-df-skeleton-text">${_div}`;          backdrop.classList.add('active');                    try {            const area = this.getAreaCode();            const url = new URL('https://search-api.fie.future.net.uk/widget.php');            url.searchParams.append('model_name', 'Everything');            url.searchParams.append('language', 'en-GB');            if (area) url.searchParams.append('area', area);            url.searchParams.append('combine_product_types', '1');            url.searchParams.append('filter_merchant_name', merchantName);            url.searchParams.append('all_filters', 'false');            url.searchParams.append('exclude_unlabelled', 'false');            url.searchParams.append('include_specs', 'false');            url.searchParams.append('sort', 'voucher');            url.searchParams.append('distinct_merchants', 'natural');            url.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');            url.searchParams.append('rows', '50');            url.searchParams.append('origin', 'widgets-clientside');                        const res = await fetch(url.toString());            if (!res.ok) throw new Error('API Error');            const data = await res.json();                        let offers = [];            if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {              offers = data.widget.data.offers;            } else if (data && data.data && Array.isArray(data.data.offers)) {              offers = data.data.offers;            } else if (Array.isArray(data)) {              offers = data;            } else if (data && Array.isArray(data.offers)) {              offers = data.offers;            } else if (data && data.offers && Array.isArray(data.offers.offer)) {              offers = data.offers.offer;            } else if (data && Array.isArray(data.data)) {              offers = data.data;            }                        if (offers.length === 0) {              content.innerHTML = `\x3Cdiv class="tg-df-message">No vouchers currently available for ${this.escapeHTML(merchantName)}.${_div}`;              return;            }                        content.innerHTML = offers.map(v => {              let offerObj = v;              if (v.offers && v.offers.offer) {                offerObj = Array.isArray(v.offers.offer) ? v.offers.offer[0] : v.offers.offer;              } else if (v.offer) {                offerObj = Array.isArray(v.offer) ? v.offer[0] : v.offer;              }              let logoUrl = v.logo_url || offerObj.logo_url || '';              if (!logoUrl && v.merchant) {                if (Array.isArray(v.merchant) && v.merchant.length > 0) logoUrl = v.merchant[0].logo_url || '';                else logoUrl = v.merchant.logo_url || '';              }                            const offerName = offerObj.name || offerObj.title || v.name || v.title || 'Special Offer';              const endTime = offerObj.end_time || v.end_time || '';              const linkUrl = offerObj.link || offerObj.url || v.link || v.url || '#';                            let foundVoucherCode = '';              const findVoucherCode = (obj) => {                if (!obj || typeof obj !== 'object') return;                if (obj.type === 'voucher_code' && obj.display_value) {                  foundVoucherCode = obj.display_value;                  return;                }                if (Array.isArray(obj)) {                  for (const item of obj) {                    findVoucherCode(item);                    if (foundVoucherCode) return;                  }                } else {                  for (const k in obj) {                    if (Object.prototype.hasOwnProperty.call(obj, k)) {                      findVoucherCode(obj[k]);                      if (foundVoucherCode) return;                    }                  }                }              };              findVoucherCode(offerObj);              if (!foundVoucherCode) findVoucherCode(v);                            const voucherCode = foundVoucherCode || offerObj.voucher_code || v.voucher_code || '';              const codeHtml = voucherCode ? `\x3Cspan class="tg-df-voucher-code" data-action="copy-code" data-code="${this.escapeHTML(voucherCode)}" title="Copy to clipboard">                \x3Cspan class="tg-df-voucher-code-text">${this.escapeHTML(voucherCode)}${_span}                \x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-left:6px;flex-shrink:0;" class="tg-df-voucher-copy-icon">                  \x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2">${_rect}                  \x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1">${_path}                ${_svg}              ${_span}` : '';                            const logoHtml = logoUrl                 ? `\x3Cimg src="${this.escapeHTML(logoUrl)}" alt="${this.escapeHTML(offerName)}" class="tg-df-voucher-logo" />`                 : `\x3Cdiv class="tg-df-voucher-logo" style="background:#e2e8f0;">${_div}`;                            let expiryHtml = '';              if (endTime) {                let dStr = endTime;                if (!isNaN(dStr) && String(dStr).length === 10) dStr = Number(dStr) * 1000;                const d = new Date(dStr);                if (!isNaN(d.getTime())) {                  const options = { year: 'numeric', month: 'short', day: 'numeric' };                  expiryHtml = `                    \x3Cdiv class="tg-df-voucher-expiry">                      \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                        \x3Ccircle cx="12" cy="12" r="10">${_circle}                        \x3Cpolyline points="12 6 12 12 16 14">${_polyline}                      ${_svg}                      Expires ${d.toLocaleDateString(undefined, options)}                    ${_div}`;                }              }              return `                \x3Ca href="${this.escapeHTML(linkUrl)}" target="_blank" rel="noopener nofollow" class="tg-df-voucher-item">                  ${logoHtml}                  \x3Cdiv class="tg-df-voucher-content">                    \x3Ch4 class="tg-df-voucher-title">${this.escapeHTML(offerName)}${_h4}                    ${codeHtml}                    ${expiryHtml}                  ${_div}                ${_a}              `;            }).join('');                        // Attach copy functionality            const copyBtns = content.querySelectorAll('[data-action="copy-code"]');            copyBtns.forEach(btn => {              btn.addEventListener('click', async (e) => {                e.preventDefault();                e.stopPropagation();                                const code = btn.getAttribute('data-code');                if (!code) return;                                try {                  const copyToClipboard = async (text) => {                     if (window.navigator.clipboard && window.isSecureContext) {                        try { await window.navigator.clipboard.writeText(text); return; } catch (e) {}                     }                     const textArea = document.createElement("textarea");                     textArea.value = text;                     textArea.style.position = "fixed";                     document.body.appendChild(textArea);                     textArea.focus();                     textArea.select();                     document.execCommand('copy');                     textArea.remove();                  };                  await copyToClipboard(code);                                    // Visual feedback                  btn.classList.add('copied');                  const textSpan = btn.querySelector('.tg-df-voucher-code-text');                  const iconSvg = btn.querySelector('.tg-df-voucher-copy-icon');                                    const origText = textSpan.innerText;                  const origIcon = iconSvg.innerHTML;                                    textSpan.innerText = 'Copied!';                  iconSvg.innerHTML = `\x3Cpolyline points="20 6 9 17 4 12">${_polyline}`;                                    setTimeout(() => {                    if (btn) {                      btn.classList.remove('copied');                      if (textSpan) textSpan.innerText = origText;                      if (iconSvg) iconSvg.innerHTML = origIcon;                    }                  }, 2000);                                    trackElementInteraction({                    id: 'voucher-code-copy',                    name: 'Copy Voucher Code',                    label: `Copied ${code} for ${merchantName}`                  });                } catch (err) {                  console.warn('Failed to copy text: ', err);                }              });            });                                  } catch (e) {            console.warn(e);            content.innerHTML = `\x3Cdiv class="tg-df-message">Failed to load vouchers.${_div}`;          }        }        render() {          try {            if (this.getViewMode() === 'savings_squad' && this.airedaleTags.length > 0) {              if (this.categoryFilterWrapper) {                 this.categoryFilterWrapper.style.display = 'flex';              }              if (this.categoryFilter) {                 const _option = '<' + '/option>';                 let optionsHtml = `\x3Coption value="all">All Categories${_option}`;                 this.airedaleTags.forEach(tag => {                    const isSelected = this.activeDealTag === tag ? 'selected' : '';                    optionsHtml += `\x3Coption value="${this.escapeHTML(tag)}" ${isSelected}>${this.escapeHTML(tag)} (${this.airedaleTagCounts[tag] || 0})${_option}`;                 });                 this.categoryFilter.innerHTML = optionsHtml;                 this.categoryFilter.value = this.activeDealTag || 'all';              }            } else {               if (this.categoryFilterWrapper) {                  this.categoryFilterWrapper.style.display = 'none';               }            }            const displayDeals = this.getFilteredDeals();          // HACK: Hide closing tags from the CMS HTML sanitizer so it doesn't strip them during in-page injection          const _div = '<' + '/div>';          const _span = '<' + '/span>';          const _a = '<' + '/a>';          const _h3 = '<' + '/h3>';          const _p = '<' + '/p>';          const _strong = '<' + '/strong>';          const _sup = '<' + '/sup>';          const _button = '<' + '/button>';          if (displayDeals.length === 0) {            if (this.currentQuery.length > 2 || (this.getViewMode() === 'savings_squad')) {              if (this.deals.length > 0) {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No deals match your selected filters.                ${_div}`;              } else if (this.getViewMode() === 'savings_squad' && this.currentQuery.length <= 2) {                 // Do not show "no exact matches" if query is empty for savings_squad                 this.grid.innerHTML = '';              } else {                 this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                  No exact matches found for "\x3Cstrong>${this.escapeHTML(this.currentQuery)}${_strong}". Try adjusting your search term.                ${_div}`;              }            } else {              this.grid.innerHTML = `\x3Cdiv class="tg-df-message">                Search product or category names to discover the best deals from across the web.              ${_div}`;            }            return;          }          let dealsHtml = displayDeals.slice(0, this.displayLimit).map((deal, index) => {            try {               const currencySym = this.escapeHTML(deal.currency);               const isoCurrencyCode = normalizeCurrency(currencySym);               const escapedPrice = this.escapeHTML(deal.price);               const escapedMsrp = this.escapeHTML(deal.msrp);               const areaCode = this.getAreaCode();                              const revenueId = generateRevenueId(deal.url, deal.title, deal.merchant, null);               const originalLink = deal.url;               const rewrittenLink = rewriteAffiliateLink(deal.url, areaCode, revenueId);                        const productCategoryName = 'deals';            const dataAttr = `              data-action="${deal.isCheckPrice ? 'view-similar-click' : 'deal-click'}"              data-analytics-id="${this.escapeHTML(deal.externalProductId || deal.id || '')}"              data-product-name="${this.escapeHTML(deal.title)}"              data-merchant-name="${this.escapeHTML(deal.merchant)}"              data-price="${deal.rawPrice || ''}"              data-previous-price="${deal.rawMsrp || ''}"              data-original-link="${this.escapeHTML(originalLink)}"              data-revenue-id="${revenueId}"              data-index="${index}"              data-total="${displayDeals.length}"              data-in-stock="${deal.inStock !== false}"              data-currency="${this.escapeHTML(isoCurrencyCode)}"              data-model-id="${this.escapeHTML(deal.modelId || '')}"              data-product-key="${this.escapeHTML(deal.productKey || '')}"              data-merchant-id="${this.escapeHTML(deal.merchantId || '')}"            `;                        let priceGroupHtml = '';            let isSavingsSquadMode = this.getViewMode() === 'savings_squad';            let ctaText = 'View Deal';            let formattedPrice = '';            let msrpHtml = '';                        if (deal.isCheckPrice) {              ctaText = isSavingsSquadMode ? 'View Deal' : 'Check Price';              if (isSavingsSquadMode) {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                  ${_div}                `;              } else {                priceGroupHtml = `                  \x3Cdiv class="tg-df-card-merchant-wrapper">                    \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                  ${_div}                  \x3Cdiv class="tg-df-card-price-group">                    \x3Cspan class="tg-df-card-price" style="font-size: 15px; font-weight: 500; font-style: italic;">See price at retailer${_span}                  ${_div}                `;              }            } else {              // Format Price              formattedPrice = escapedPrice.includes(currencySym)                 ? escapedPrice                 : `${currencySym}${escapedPrice}`;                              // Format MSRP              msrpHtml = deal.msrp && deal.rawMsrp > deal.rawPrice                ? `\x3Cspan class="tg-df-card-msrp">${escapedMsrp.includes(currencySym) ? escapedMsrp : currencySym + escapedMsrp}${_span}`                : '';                              priceGroupHtml = `                \x3Cdiv class="tg-df-card-merchant-wrapper">                  \x3Cspan class="tg-df-card-merchant-pill" title="${this.escapeHTML(deal.merchant)}">${this.escapeHTML(deal.merchant)}${_span}                ${_div}                \x3Cdiv class="tg-df-card-price-group">                  ${isSavingsSquadMode ? '' : `                  \x3Cspan class="tg-df-card-price">${formattedPrice}${_span}                  ${msrpHtml}                  `}                ${_div}              `;            }                        const discountBadgeHtml = deal.savingLabel && !deal.isCheckPrice              ? `\x3Cspan class="tg-df-card-discount-badge">${this.escapeHTML(deal.savingLabel)}${_span}`              : '';                          // HACK for CMS            const _button = '<' + '/button>';            const _svg = '<' + '/svg>';            const _path = '<' + '/path>';            const _rect = '<' + '/rect>';            const _circle = '<' + '/circle>';            const _polyline = '<' + '/polyline>';            const _line = '<' + '/line>';                        let badgesHtml = '';            const primeBadge = deal.isPrime ? `              \x3Cspan class="tg-df-tag tg-df-tag-prime">                \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="currentColor">                  \x3Cpath d="M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z">${_path}                ${_svg} Prime              ${_span}            ` : '';                        const couponsBadge = `              \x3Cdiv class="tg-df-coupon-wrapper" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:inline-flex; align-items:center;">                \x3Cdiv class="tg-df-coupon-spinner">${_div}                \x3Cbutton type="button" class="tg-df-tag tg-df-tag-coupons" data-action="coupons-click" data-merchant="${this.escapeHTML(deal.merchant)}" style="display:none;">                  \x3Csvg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">                    \x3Cpath d="M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z">${_path}                    \x3Cline x1="7" y1="7" x2="7.01" y2="7">${_line}                  ${_svg} Coupons                ${_button}              ${_div}            `;                        // Note: We always add coupons badge if there's a chance, but to allow 3-line titles we check wrapper display state            badgesHtml = `              \x3Cdiv class="tg-df-card-badges">                ${primeBadge}                ${couponsBadge}              ${_div}            `;            const _linearGradient = '<' + '/linearGradient>';            const _polygon = '<' + '/polygon>';            const _stop = '<' + '/stop>';            const _defs = '<' + '/defs>';                        let starHtml = '';            if (deal.starRating) {              let rating = deal.starRating;                            if (rating > 0) {                const fullStars = Math.floor(rating);                const halfStar = (rating - fullStars) >= 0.5 ? 1 : 0;                const emptyStars = Math.max(0, 5 - fullStars - halfStar);                const blue = '#1f69ff'; // Tom's guide brand color from VIEW DEAL button                const gray = '#cbd5e1';                                const starSvgFull = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="${blue}" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                const gradId = 'half_grad_' + Math.floor(Math.random()*1000000);                const starSvgHalf = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" stroke="${blue}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cdefs>\x3ClinearGradient id="${gradId}" x1="0" x2="1" y1="0" y2="0">\x3Cstop offset="50%" stop-color="${blue}">${_stop}\x3Cstop offset="50%" stop-color="transparent">${_stop}${_linearGradient}${_defs}                  \x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26" fill="url(#${gradId})">${_polygon}${_svg}`;                                  const starSvgEmpty = `\x3Csvg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="${gray}" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpolygon points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26">${_polygon}${_svg}`;                                let stars = [];                for (let i=0; i<fullStars; i++) stars.push(starSvgFull);                if (halfStar) stars.push(starSvgHalf);                for (let i=0; i<emptyStars; i++) stars.push(starSvgEmpty);                                starHtml = `\x3Cdiv class="tg-df-card-stars" style="display:flex;align-items:center;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--tg-df-text-muted);">                  \x3Cspan style="margin-right:6px;">Tom's Guide:${_span}                  \x3Cdiv style="display:flex;gap:2px;">                    ${stars.join('')}                  ${_div}                ${_div}`;              }            }            let htmlOutput = '';            if (isSavingsSquadMode) {              htmlOutput += `              \x3Cdiv class="hawk-deal-widget-container tg-df-mobile-only" data-collapsible="true">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''} style="margin-bottom: 10px;">` : ''}                \x3Cdiv class="hawk-deal-widget-wrap">                  \x3Cdiv class="hawk-deal-widget-image-container">                    \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" rel="sponsored noopener" target="_blank" class="hawk-affiliate-link-deal-widget" ${dataAttr}>                      \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="hawk-lazy-image-deal-widget" loading="lazy" width="140" height="160" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                    ${_a}                  ${_div}                  \x3Cdiv class="hawk-deal-widget-text-cta-container">                    \x3Cdiv class="hawk-deal-widget-text-body-container">                      \x3Cdiv class="hawk-deal-widget-text-body-main">                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          ${deal.isCheckPrice ? `                            \x3Cspan class="hawk-deal-widget-title-product-title">${this.escapeHTML(deal.title)}${_span}                          ` : `                            \x3Cspan class="hawk-deal-widget-title-product-title">${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_span}                          `}                        ${_a}                        ${!deal.isCheckPrice && deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan class="hawk-deal-widget-title-was-price">was ${currencySym}${escapedMsrp}${_span}                          ${_a}                        ` : ''}                        \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-container" rel="sponsored noopener" target="_blank" ${dataAttr}>                          \x3Cspan class="hawk-deal-widget-title-retailer-price">                            ${!deal.isCheckPrice ? `                              \x3Cspan class="hawk-deal-widget-title-price">now ${formattedPrice}${_span}                              \x3Cspan class="hawk-deal-widget-title-retailer"> at ${this.escapeHTML(deal.merchant)}${_span}                            ` : `                              \x3Cspan class="hawk-deal-widget-title-price">See price at ${this.escapeHTML(deal.merchant)}${_span}                            `}                          ${_span}                        ${_a}                        ${deal.description ? `\x3Cdiv class="hawk-deal-widget-text-body-description">\x3Cp>${this.escapeHTML(deal.description)}${_p}${_div}` : ''}                      ${_div}                    ${_div}                    \x3Cdiv class="hawk-deal-widget-footer">                      \x3Cdiv class="hawk-deal-widget-button-wrapper">                        \x3Cdiv class="hawk-deal-widget-preferred-partner-wrapper">                          \x3Ca data-google-interstitial="false" aria-label="View ${this.escapeHTML(deal.title)} on ${this.escapeHTML(deal.merchant)}" href="${this.escapeHTML(rewrittenLink)}" class="hawk-affiliate-link-deal-button" rel="sponsored noopener" target="_blank" ${dataAttr}>                            \x3Cspan>${deal.isCheckPrice ? 'Check Price' : 'View Deal'}${_span}                          ${_a}                        ${_div}                      ${_div}                    ${_div}                  ${_div}                ${_div}              ${_div}              `;            }            htmlOutput += `              \x3Cdiv class="tg-df-card ${isSavingsSquadMode ? 'tg-df-desktop-only' : ''}">                ${this.editorMode ? `\x3Cinput type="checkbox" class="tg-df-deal-checkbox" data-id="${this.escapeHTML(deal.id)}" ${this.selectedDeals.has(deal.id) ? 'checked' : ''}>` : ''}                \x3Cdiv class="tg-df-card-image-box">                  ${discountBadgeHtml}                  \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" style="display: flex; align-items: center; justify-content: center; width: 100%; height: 100%;">                    \x3Cimg ${deal.image ? `src="${this.escapeHTML(deal.image)}"` : ''} alt="${this.escapeHTML(deal.title)}" class="tg-df-card-image" loading="lazy" onerror="${deal.fallbackImage ? `if(!this.dataset.fb) { this.dataset.fb='1'; this.src='${this.escapeHTML(deal.fallbackImage)}'; } else { this.style.opacity='0'; }` : `this.style.opacity='0';`}">                  ${_a}                ${_div}                \x3Cdiv class="tg-df-card-body">                  ${starHtml}                  ${badgesHtml}                  \x3Ch3 class="tg-df-card-title tg-df-custom-savings-squad-title" title="${this.escapeHTML(deal.title)}">                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" disable-tracking="true" target="_blank" rel="noopener nofollow" style="text-decoration: none; color: inherit;">                      ${isSavingsSquadMode                         ? (deal.isCheckPrice                             ? (deal.title && deal.title.includes(':')                                 ? `\x3Cstrong>${this.escapeHTML(deal.title.substring(0, deal.title.indexOf(':') + 1))}${_strong}\x3Cspan style="color: #1f69ff; font-weight: normal;">${this.escapeHTML(deal.title.substring(deal.title.indexOf(':') + 1))}${_span}`                                : this.escapeHTML(deal.title)                              )                             : `\x3Cstrong>${deal.brand ? this.escapeHTML(deal.brand) + ' ' : ''}${this.escapeHTML(deal.productName || deal.title || '')}:${_strong} ${deal.rawMsrp && deal.rawMsrp > deal.rawPrice ? `\x3Cspan style="color: #d0021b; text-decoration: line-through; font-weight: normal; margin-right: 4px;">was ${currencySym}${escapedMsrp}${_span} ` : ''}\x3Cspan style="color: #1f69ff; font-weight: normal;">now ${formattedPrice} at ${this.escapeHTML(deal.merchant)}${_span}`                          )                        : this.escapeHTML(deal.title)                      }                    ${_a}                  ${_h3}                  ${deal.description ? `\x3Cp style="font-size: 13px; color: var(--tg-df-text-muted); margin-bottom: 12px; line-height: 1.4;">${this.escapeHTML(deal.description)}${_p}` : ''}                  \x3Cdiv class="tg-df-card-footer">                    ${priceGroupHtml}                    \x3Ca href="${this.escapeHTML(rewrittenLink)}" ${dataAttr} target="_blank" rel="noopener nofollow" class="tg-df-card-cta ${isSavingsSquadMode ? 'tg-df-cta-savings-squad' : ''}" style="text-decoration: none;">${ctaText}${_a}                  ${_div}                ${_div}              ${_div}            `;                        return htmlOutput;            } catch (e) {               console.log("Error rendering deal in map for index", index, typeof deal === 'object' ? JSON.stringify(deal) : deal, "MSG:", e.message);               return '';            }          }).join('');                    if (displayDeals.length > this.displayLimit || ((this.getViewMode() === 'carousel' || this.getViewMode() === 'auto') && displayDeals.length > 0 && displayDeals.length % ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12) === 0)) {            if (this.getViewMode() === 'carousel') {               dealsHtml += `                 \x3Cbutton type="button" class="tg-df-load-more-card tg-df-load-more">                   \x3Csvg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-bottom: 8px;">\x3Cpath d="M5 12h14">\x3C/path>\x3Cpath d="m12 5 7 7-7 7">\x3C/path>\x3C/svg>                   Load More                 ${_button}               `;            } else {               dealsHtml += `                 \x3Cdiv style="width: 100%; display: flex; justify-content: center; margin-top: 16px; grid-column: 1 / -1;">                   \x3Cbutton type="button" class="tg-df-tag-outline tg-df-load-more" style="padding: 8px 24px; border-radius: 100px; font-weight: 600; font-size: 14px; cursor: pointer; display: flex; align-items: center;">Load More${_button}                 ${_div}               `;            }          }                    this.grid.innerHTML = dealsHtml;                    let gridWrapper = this.grid.parentElement;          if (gridWrapper && gridWrapper.classList.contains('tg-df-grid-wrapper')) {             let existingChevron = gridWrapper.querySelector('.tg-df-carousel-scroll-right');             if (this.getViewMode() === 'carousel') {                 if (!existingChevron) {                     gridWrapper.insertAdjacentHTML('beforeend', '\n                 \x3Cbutton class="tg-df-carousel-scroll-right" type="button" aria-label="Scroll right" onclick="this.previousElementSibling.scrollBy({left: 200, behavior: \'smooth\'})">\x3Csvg xmlns="http://www.w3.org/2000/svg" width="22" height="22" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round">\x3Cpath d="m9 18 6-6-6-6">\x3C/path>\x3C/svg>\x3C/button>');                 }             } else {                 if (existingChevron) {                     existingChevron.remove();                 }             }          }                    const loadMoreBtn = this.grid.querySelector('.tg-df-load-more');          if (loadMoreBtn) {            loadMoreBtn.addEventListener('click', async () => {              if (typeof trackElementInteraction === 'function') {                trackElementInteraction({ id: 'load-more', name: 'Load more', label: 'Load More Results' });              }              if (displayDeals.length <= this.displayLimit) {                 loadMoreBtn.innerHTML = `                  <svg class="tg-df-spinner" style="width: 16px; height: 16px; display: inline-block; vertical-align: middle; margin-right: 8px;" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" d="M12 2v4m0 12v4M4.93 4.93l2.83 2.83m8.48 8.48l2.83 2.83M2 12h4m12 0h4M4.93 19.07l2.83-2.83m8.48-8.48l2.83-2.83"/></svg>                  Loading...                 `;                 loadMoreBtn.disabled = true;                 await this.fetchDeals(this.currentQuery, true);              } else {                 this.displayLimit += ((this.rowsSelect && this.rowsSelect.value) ? parseInt(this.rowsSelect.value, 10) : 12);                 this.render();              }            });          }                      this.bindCouponButtons();            this.checkAndUpdateCoupons();                        // Allow hawklinks.js to discover and rewrite our widget links             // by appending the .article-body class and manually triggering processArticle.            let container = this.root.classList.contains('tg-df-container') ? this.root : this.root.querySelector('.tg-df-container');            if (container && !container.classList.contains('article-body')) {               container.classList.add('article-body');            }            setTimeout(() => {               if (this.grid && !this.grid.classList.contains('article-body')) this.grid.classList.add('article-body');            document.dispatchEvent(new CustomEvent('processArticle', { detail: { element: this.root } }));            }, 50);          } catch(e) {            console.warn("Widget render error", e);          }        }                async checkAndUpdateCoupons() {          const wrappers = Array.from(this.root.querySelectorAll('.tg-df-coupon-wrapper'));          if (wrappers.length === 0) return;                    const merchants = [...new Set(wrappers.map(w => w.getAttribute('data-merchant')).filter(Boolean))];          if (merchants.length === 0) return;          const couponResultsMap = await this.checkMerchantsCouponsBulk(merchants);                    for (const merchant of merchants) {            const hasCoupons = !!couponResultsMap[merchant];            const merchantWrappers = wrappers.filter(w => w.getAttribute('data-merchant') === merchant);            merchantWrappers.forEach(wrapper => {              const spinner = wrapper.querySelector('.tg-df-coupon-spinner');              const btn = wrapper.querySelector('.tg-df-tag-coupons');                            if (spinner) spinner.style.display = 'none';                            if (hasCoupons && btn) {                btn.style.display = 'inline-flex';              } else if (!hasCoupons) {                wrapper.style.display = 'none';              }            });          }        }        updateFloatingCopyBar() {          if (!this.editorBar || !this.editorSelectedCount) return;          if (this.editorMode && this.selectedDeals.size > 0) {            this.editorBar.style.display = 'flex';            this.editorSelectedCount.innerText = this.selectedDeals.size;          } else {            this.editorBar.style.display = 'none';          }        }        async copySelectedDealsToCMS() {           function htmlToSlate(htmlString) {              if (!htmlString) return [{ type: 'paragraph', children: [{ text: '' }] }];              let doc;              if (typeof window !== 'undefined' && window.DOMParser) {                 doc = new DOMParser().parseFromString(htmlString, 'text/html');              } else {                 doc = document.implementation.createHTMLDocument('');                 doc.body.innerHTML = htmlString;              }                            function parseNode(node, marks = {}) {                  if (node.nodeType === 3) {                      const text = node.textContent;                      if (!text) return null;                      return { text: text, ...marks };                  }                  if (node.nodeType === 1) {                      const tagName = node.tagName.toLowerCase();                      if (tagName === 'br') {                          return { type: 'line-break', children: [{ text: '' }] };                      }                      if (tagName === 'p') {                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return { type: 'paragraph', children };                      }                      if (tagName === 'strong' || tagName === 'b') {                          const newMarks = { ...marks, bold: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'em' || tagName === 'i') {                          const newMarks = { ...marks, italic: true };                          return Array.from(node.childNodes).map(child => parseNode(child, newMarks)).flat().filter(Boolean);                      }                      if (tagName === 'a') {                          const href = node.getAttribute('href') || '';                          let children = Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                          if (children.length === 0) children.push({ text: "" });                          return {                              type: 'link',                              url: href,                              isNoFollow: (node.getAttribute('rel') || '').includes('nofollow'),                              isSponsored: (node.getAttribute('rel') || '').includes('sponsored'),                              isOpenNewTab: node.getAttribute('target') === '_blank',                              isPreventDataRewrite: false,                              children: children                          };                      }                      return Array.from(node.childNodes).map(child => parseNode(child, marks)).flat().filter(Boolean);                  }                  return null;              }                            let blocksArray = [];              let currentParagraphChildren = [];              function flushParagraph() {                  if (currentParagraphChildren.length > 0) {                      blocksArray.push({ type: 'paragraph', children: currentParagraphChildren });                      currentParagraphChildren = [];                  }              }              Array.from(doc.body.childNodes).forEach(node => {                  const parsed = parseNode(node, {});                  const parsedItems = Array.isArray(parsed) ? parsed : (parsed ? [parsed] : []);                  parsedItems.forEach(item => {                      if (item.type === 'paragraph') {                          flushParagraph();                          blocksArray.push(item);                      } else {                          currentParagraphChildren.push(item);                      }                  });              });              flushParagraph();              if (blocksArray.length === 0) {                  blocksArray = [{ type: 'paragraph', children: [{ text: '' }] }];              }              return blocksArray;           }           const blocks = [];                      this.editorCopyBtn.innerHTML = '\x3Cspan class="tg-df-coupon-spinner" style="display:inline-block; margin-right:8px; border-top-color:#fff;">' + '<' + '/span> Copying...';           for (const deal of Array.from(this.selectedDeals.values())) {              const url = deal.url;              const merchant = deal.merchant;              const title = deal.title;              const image = deal.image;              const currentPrice = deal.currency + deal.rawPrice;              const wasPrice = deal.hasWasPrice && deal.rawMsrp > deal.rawPrice ? deal.currency + deal.rawMsrp : '';                            let couponsChildren = [];              try {                  const area = this.getAreaCode();                  const apiUrl = new URL('https://search-api.fie.future.net.uk/widget.php');                  apiUrl.searchParams.append('model_name', 'Everything');                  apiUrl.searchParams.append('language', 'en-GB');                  apiUrl.searchParams.append('area', area);                  apiUrl.searchParams.append('combine_product_types', '1');                  apiUrl.searchParams.append('filter_merchant_name', merchant);                  apiUrl.searchParams.append('all_filters', 'false');                  apiUrl.searchParams.append('exclude_unlabelled', 'false');                  apiUrl.searchParams.append('include_specs', 'false');                  apiUrl.searchParams.append('sort', 'voucher');                  apiUrl.searchParams.append('distinct_merchants', 'natural');                  apiUrl.searchParams.append('filter_product_types', 'vouchers,offer_deals,newsletter');                  apiUrl.searchParams.append('rows', '3');                  apiUrl.searchParams.append('origin', 'widgets-clientside');                                    let res; try { res = await fetch(apiUrl.toString()); } catch (e) { return; }                  if (res.ok) {                      const data = await res.json();                      let offers = [];                      if (data && data.widget && data.widget.data && Array.isArray(data.widget.data.offers)) {                        offers = data.widget.data.offers;                      } else if (data && data.data && Array.isArray(data.data.offers)) {                        offers = data.data.offers;                      }                                            if (offers.length > 0) {                          couponsChildren.push({ text: "Also check out these coupons: ", bold: true });                          offers.slice(0, 3).forEach((offer, idx) => {                              const actualOffer = offer.offer || offer;                              const offerName = actualOffer.name || actualOffer.title || offer.model_name || offer.title || offer.name || 'Coupon';                              const linkUrl = actualOffer.link || actualOffer.url || actualOffer.offer_link || '#';                              couponsChildren.push({ type: "line-break", children: [{ text: "" }] });                              couponsChildren.push({ text: "🎟️ " });                              couponsChildren.push({                                  type: "link",                                  url: linkUrl,                                  isNoFollow: true,                                  isSponsored: false,                                  isOpenNewTab: true,                                  isPreventDataRewrite: false,                                  children: [{ text: offerName, bold: true }]                              });                          });                      }                  }              } catch (err) {                  console.warn('Failed to fetch coupons for', merchant, err);              }              let descriptionValue = [];              if (deal.text) {                 descriptionValue = htmlToSlate(deal.text);              } else {                 const dealDescriptions = [                   `Don't miss out on this fantastic deal for the ${title}. It is currently available at ${merchant} for a highly competitive price.`,                   `We've spotted an excellent price drop on the ${title}. Grab it now at ${merchant} before it's gone.`,                   `The ${title} is currently seeing a generous discount over at ${merchant}. This is a perfect time to buy if you've been holding out.`,                   `If you're in the market for the ${title}, ${merchant} has just the deal for you.`,                   `Score the ${title} for less at ${merchant} right now. This is a rare chance to save big.`,                   `Upgrade your setup with the ${title}, now available at a stellar price via ${merchant}.`                 ];                 const randomDescription = dealDescriptions[Math.floor(Math.random() * dealDescriptions.length)];                 descriptionValue = [                    { type: "paragraph", children: [{ text: randomDescription }] }                 ];              }                            if (couponsChildren.length > 0) {                 let lastBlock = descriptionValue[descriptionValue.length - 1];                 if (lastBlock && lastBlock.type === 'paragraph') {                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children.push({ text: "Also check out these coupons: ", bold: true });                     lastBlock.children.push({ type: "line-break", children: [{ text: "" }] });                     lastBlock.children = lastBlock.children.concat(couponsChildren);                 } else {                     descriptionValue.push({                         type: "paragraph",                         children: [                             { type: "line-break", children: [{ text: "" }] },                             { type: "line-break", children: [{ text: "" }] },                             { text: "Also check out these coupons: ", bold: true },                             { type: "line-break", children: [{ text: "" }] },                             ...couponsChildren                         ]                     });                 }              }              function normalizeCurrencyToISO(symbol) {                const map = { '£': 'GBP', '$': 'USD', 'A$': 'AUD', 'CA$': 'CAD', '€': 'EUR' };                return map[symbol] || symbol;              }              const isoCurrency = normalizeCurrencyToISO(deal.currency);              blocks.push({                 id: (window.crypto && window.crypto.randomUUID) ? window.crypto.randomUUID() : 'cms-' + Date.now() + Math.random(),                 blockTypeName: "deal",                 excludeFrom: [],                 collapsible: false,                 props: {                    description: {                       value: descriptionValue,                       touched: false,                       validationMessage: ""                    },                    image: {                       value: {                          credit: [{ type: "paragraph", children: [{ text: merchant }] }],                          dateCreated: Date.now(),                          dateModified: Date.now(),                          distribution: [],                          fileSize: 0,                          height: 1000,                          id: deal.id,                          imageRights: "",                          src: image,                          name: title + ".jpg",                          tags: [],                          width: 1000                       },                       touched: false,                       validationMessage: ""                    },                    showDealButton: { value: true, touched: false, validationMessage: "" },                    isPreferredPartner: { value: false, touched: false, validationMessage: "" },                    linkHref: { value: url, touched: false, validationMessage: "" },                    linkLabel: { value: "", touched: false, validationMessage: "" },                    linkIsNoFollow: { value: true, touched: false, validationMessage: "" },                    linkIsSponsored: { value: false, touched: false, validationMessage: "" },                    linkIsOpenNewWindow: { value: true, touched: false, validationMessage: "" },                    customPromoFlags: { value: [], touched: false, validationMessage: "" },                    showStarDeal: { value: false, touched: false, validationMessage: "" },                    savingType: { value: "none", touched: false, validationMessage: "" },                    starDealPromoFlag: { value: "", touched: false, validationMessage: "" },                    showEditorsChoice: { value: false, touched: false, validationMessage: "" },                    editorsChoiceTitle: { value: "", touched: false, validationMessage: "" },                    hawkPriceCurrency: { value: { value: isoCurrency, label: isoCurrency }, touched: false, validationMessage: "" },                    hawkPrice: { value: deal.hasWasPrice ? String(deal.rawMsrp) : String(deal.rawPrice), touched: false, validationMessage: "" },                    hawkSalePrice: { value: String(deal.rawPrice), touched: false, validationMessage: "" },                    lastCheckedPriceDate: { value: "", touched: false, validationMessage: "" },                    hawkModel: { touched: false, validationMessage: "" },                    productId: { value: "", touched: false, validationMessage: "" },                    voucherId: { value: "", touched: false, validationMessage: "" },                    brand: { value: deal.brand || merchant, touched: false, validationMessage: "" },                    productName: { value: title, touched: false, validationMessage: "" },                    label: { value: "", touched: false, validationMessage: "" },                    retailer: { value: merchant, touched: false, validationMessage: "" },                    priceCheckError: false                 },                 failedFetchError: ""              });           }           const payload = {              type: "articleBuilderPages",              data: blocks           };           const jsonStr = JSON.stringify(payload);                      if (navigator.clipboard && navigator.clipboard.writeText) {              navigator.clipboard.writeText(jsonStr).then(() => {                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              }).catch(err => {                 console.warn('Failed to copy text: ', err);                 alert('Failed to copy deals to clipboard. See console.');              });           } else {              // Fallback              const textArea = document.createElement("textarea");              textArea.value = jsonStr;              document.body.appendChild(textArea);              textArea.focus();              textArea.select();              try {                 document.execCommand('copy');                 this.editorCopyBtn.innerHTML = 'Copied!';                 setTimeout(() => {                    this.editorCopyBtn.innerHTML = '\x3Csvg xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" style="margin-right: 6px;">\x3Crect x="9" y="9" width="13" height="13" rx="2" ry="2"><' + '/rect>\x3Cpath d="M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1"><' + '/path><' + '/svg> Copy to CMS';                 }, 2000);              } catch (err) {                 console.warn('Fallback: Oops, unable to copy', err);                 alert('Fallback: Failed to copy deals to clipboard.');              }              document.body.removeChild(textArea);           }        }      }      // Initialize the Widget      if (document.readyState === 'loading') {        document.addEventListener('DOMContentLoaded', () => new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer }));      } else {        new DealsFinderWidget({ rootId: 'signal-deals-finder-root', rootNode: shadowRoot, hostContainer: hostContainer });      }    })();  </script></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wyze Palm Lock Review: Palm recognition at a good price ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/wyze-palm-lock-review-palm-recognition-at-a-good-price</link>
                                                                            <description>
                            <![CDATA[ The Wyze Palm Lock may not have all the bells and whistles that some other smart locks offer, but it does have palm vein scanning at a reasonably low price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2wkDGvJj5Rfy2swytHDoqR</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/imnCT8f3wdAz3Beif8JCif-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 11 Jun 2026 11:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/imnCT8f3wdAz3Beif8JCif-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wyze Palm Lock]]></media:description>                                                            <media:text><![CDATA[Wyze Palm Lock]]></media:text>
                                <media:title type="plain"><![CDATA[Wyze Palm Lock]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/imnCT8f3wdAz3Beif8JCif-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Palm vein recognition technology has been around for a while, but it's typically been reserved for relatively expensive smart locks. Wyze is changing that with its Palm Lock, bringing biometric palm scanning to a price point that undercuts most alternatives. The lock promises to let you unlock your door with just your palm, along with traditional methods like PIN codes and physical keys.</p><p>At $129, the Wyze Palm Lock isn't the first palm vein model on the market, but it's certainly one of the most affordable. The question is whether Wyze has managed to deliver reliable palm recognition without cutting too many corners. I tested the Palm Lock for several weeks to see if this budget-friendly biometric lock is worth considering, and how it compares to the <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html"><u>best smart locks</u></a>.</p><h3 class="article-body__section" id="section-wyze-palm-lock-review-price-and-availability"><span>Wyze Palm Lock review: Price and availability</span></h3><p>The Wyze Palm Lock comes in at $129.98 and is available directly from Wyze's website, Amazon, and select other retailers. It comes in a single black finish, which should look fine on most doors – though I still would have liked more options.</p><h3 class="article-body__section" id="section-wyze-palm-lock-review-design-and-installation"><span>Wyze Palm Lock review: Design and installation</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="a8LkdBZxYchk7JybCokLG7" name="Wyze-Palm-Lock-2" alt="Wyze Palm Lock" src="https://cdn.mos.cms.futurecdn.net/a8LkdBZxYchk7JybCokLG7.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Wyze Palm Lock specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Lock type: </strong>Deadbolt<br><strong>Works with: </strong>Alexa, Google Home<br><strong>Wireless: </strong>Wi-Fi<br><strong>Number Pad: </strong>Yes<br><strong>Alarm: </strong>Yes<br><strong>Codes: </strong>50<br><strong>ANSI/BHMA rating: </strong>Commercial Grade 3<br><strong>Batteries: </strong>Rechargeable</p></div></div><p>The Wyze Palm Lock has a decent build quality that exceeds what you might expect from its budget price point. While it doesn't feel quite as premium as locks from August or Yale, it certainly doesn't feel cheap either. The lock comes with an ANSI/BHMA Grade 3 rating.</p><p>The lock is notably bulky, with the <strong>exterior portion measuring 6.1 × 2.9 × 1.3 inches</strong> and the <strong>interior portion measuring 7.2 × 2.9 × 1.2 inches</strong>. Both the interior and exterior portions are noticeable on your door, and while it doesn't look ugly, it's also not subtle. The interior section has the thumb latch for manual operation and a compartment for the batteries, while the exterior features the PIN pad and palm reader positioned above it. On the bottom of the exterior portion of the lock is a USB-C port, which is uncovered. A rubber cover would have been a good idea, but considering it's on the bottom, it seems unlikely much moisture will get trapped inside.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="n22x5YKXWgXmdHYfFzQLaB" name="Wyze-Palm-Lock-4" alt="Wyze Palm Lock inside" src="https://cdn.mos.cms.futurecdn.net/n22x5YKXWgXmdHYfFzQLaB.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Installation is straightforward, though to be fair I've installed dozens at this point. Still, the included paper instructions are clear and comprehensive, and the app also provides a step-by-step installation guide, so most beginners should have no problem with it. The one minor issue is that you wouldn't necessarily know about the app-based installation guide unless you start the setup process in the app first, which the initial documentation doesn't explicitly direct you to do.</p><p>The lock includes a backlit keypad that's easy to see, along with a discrete manual key slot for emergency access. It also has a dual battery system, which is handy. There's a main battery pack that lasts approximately six months, and a backup battery that provides an additional two weeks of power when the main battery needs charging or if it runs out of juice. If both batteries die, there's a USB-C port that can provide temporary power from a power bank.</p><p>The <strong>IP53 weather resistance</strong> rating isn't particularly impressive on paper, but during my testing period, the lock survived several reasonable heavy rainstorms without any issues. I expect it will do just fine in the vast majority of weather conditions.</p><h3 class="article-body__section" id="section-wyze-palm-lock-review-locking-features-and-performance"><span>Wyze Palm Lock review: Locking features and performance</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fzQCybeNWUxSzsaeJbRb6M" name="Wyze-Palm-Lock-3" alt="Wyze Palm Lock" src="https://cdn.mos.cms.futurecdn.net/fzQCybeNWUxSzsaeJbRb6M.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The headline feature is palm vein recognition, which unlocks the door in about one second and can store <strong>up to 50 different palm profiles</strong>. The technology reads the unique vein patterns in your palm, which are supposedly more secure than fingerprints since they're internal and harder to replicate. </p><p>In practice, I found the palm scanner worked reliably, and it almost never failed after I got the hang of proper positioning, which barely took a few tries. While some reviews have reported hit-or-miss performance with the palm reader, I didn't experience significant issues during my testing.</p><p>The <strong>palm scanner only unlocks the door</strong> – it doesn't lock it. This isn't really an issue though. There's a built-in gyroscope-based auto-lock feature, which worked exceptionally well, plus you can just press the lock button on the PIN pad if you prefer to disable auto-locking. You'll also get an alert if the door is left ajar.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="b3XzpQa5wYzopoNVtCbxKQ" name="Wyze-Palm-Lock-6" alt="Wyze Palm Lock" src="https://cdn.mos.cms.futurecdn.net/b3XzpQa5wYzopoNVtCbxKQ.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The <strong>keypad supports up to 50 user codes</strong> and includes anti-peep technology, allowing you to enter random digits before and after your actual code to prevent onlookers from determining your PIN. Both the keypad and palm scanner performed accurately in my testing. </p><p>The <strong>lock also includes mmWave radar</strong> that detects human presence within 2 to 3 feet, supposedly distinguishing between humans and other moving objects to conserve battery life. While this is difficult to test thoroughly, it seemed to work perfectly well.</p><p>Security features include local encryption of palm data and passcodes stored on the device itself, not in the cloud. After five failed entry attempts, an alarm sounds and the lock enters a five-minute lockout period. The lock also has a traditional key slot for backup access or for giving temporary access to guests. </p><h3 class="article-body__section" id="section-wyze-palm-lock-review-app-and-smart-home"><span>Wyze Palm Lock review: App and smart home</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="zRVbQMYopWmHWfjTvAkvJT" name="Wyze-Palm-Lock-screenshot-1" alt="Wyze Palm Lock app" src="https://cdn.mos.cms.futurecdn.net/zRVbQMYopWmHWfjTvAkvJT.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Wyze app is well-designed and integrates seamlessly with other Wyze devices if you're already in that ecosystem. Navigation is generally intuitive, though I wish you could control the lock directly from the home screen. Instead, you need to tap on the device first, then tap a button to lock or unlock the door.</p><p>There are a few settings you can tweak relating to the lock. You'll be able to control auto-lock settings, one-time guest codes, and calibration options. There's also an event history, so you can see usage. All of this can be accessed remotely, as the lock has Wi-Fi built in.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="sXr6ZxBxiWBPHjvi4VJQTV" name="Wyze-Palm-Lock-screenshot-2" alt="Wyze Palm Lock app" src="https://cdn.mos.cms.futurecdn.net/sXr6ZxBxiWBPHjvi4VJQTV.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p><strong>Smart home integration is unfortunately limited to Amazon Alexa and Google Assistant, with no support for Apple HomeKit or Matter</strong>. This is disappointing, as wider smart home compatibility would make the lock more versatile. To unlock the door using voice commands, you need to speak your PIN code aloud, which is an obvious security concern. I understand the need for some form of authentication, though.</p><p>The lock is designed to work in tandem with Wyze video doorbells, allowing you to lock or unlock the door directly from the doorbell's interface in the app. It would be interesting if Wyze could leverage their doorbell's face recognition capabilities for automatic unlocking in the future, but that's not an option just yet, and perhaps wouldn't be secure enough anyway (various doorbells regularly confuse our local FedEx guy with me). </p><h3 class="article-body__section" id="section-wyze-palm-lock-review-verdict"><span>Wyze Palm Lock review: Verdict</span></h3><p>The Wyze Palm Lock is a solid entry point for anyone interested in palm vein recognition technology without breaking the bank. It's not perfect – the lack of wider smart home support is frustrating, and the bulky design won't win any aesthetic awards. But, it delivers on its core promise of reliable biometric unlocking at an accessible price point. </p><p>For the right buyer, particularly someone already invested in the Wyze ecosystem or simply looking for an affordable smart lock with palm scanning capabilities, the Palm Lock represents good value at $129.98. The palm scanning technology works well once you get the hang of it, and features like the dual-battery system and gyroscope-based auto-lock add genuine convenience. Just don't expect the refinement or universal compatibility of locks that cost twice as much.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Baseus Security X1 Pro Review: Dual 3K cameras, but not the smartest ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/baseus-security-x1-pro-review-dual-3k-cameras-but-not-the-smartest</link>
                                                                            <description>
                            <![CDATA[ The Baseus X1 Pro offers dual 3K cameras and no subscription costs, but it’s not the smartest camera out there. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qZd4t24rPVPRC6AsGUeQNi</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/QmAZshLXcXaJob7PuzYxc6-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 04 Jun 2026 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/QmAZshLXcXaJob7PuzYxc6-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Baseus Security X1 Pro]]></media:description>                                                            <media:text><![CDATA[Baseus Security X1 Pro]]></media:text>
                                <media:title type="plain"><![CDATA[Baseus Security X1 Pro]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/QmAZshLXcXaJob7PuzYxc6-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The security camera market is crowded, and most of the big companies want you to pay a monthly fee to actually get the most out of your hardware. There are some exceptions to that rule though. One of the latest of those is Baseus, which launched the new X1 Pro dual camera system.</p><p>The system offers two independent 3K cameras into a single unit, each capable of tracking its own subject or working together for panoramic coverage. It even has a built-in solar panel, which itself isn't all that unique -- but on this system, the solar panel is attached to a motor and designed to follow the position of the sun over the day, something we haven’t seen from the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a>.</p><p>But, it's not necessarily the ultimate system that you might think it could be. To find out why, you’ll have to read the rest of our Baseus Security X1 Pro review.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-price-and-availability"><span>Baseus Security X1 Pro review: Price and availability</span></h3><p>The Baseus Security X1 Pro launched in early 2026. It comes in at $269.99, which gets you the dual-camera unit, the built-in solar panel, and the mounting hardware you'll need to install it. Baseus also runs promotional pricing that drops the cost to $179.99 and includes a microSD card.</p><p>What you won't pay is a monthly fee. All of the features are included out of the box, with no subscription required to unlock them later.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-design-and-setup"><span>Baseus Security X1 Pro review: Design and setup</span></h3><div  class="fancy-box"><div class="fancy_box-title">Baseus X1 Pro specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Video: </strong>Dual 3K<br><strong>Field-of-view: </strong>300 degrees horizontal, 125 degrees vertical<br><strong>Night vision: </strong>Infrared / color<br><strong>Wireless: </strong>2.4GHz Wi-Fi<br><strong>Weather resistance: </strong>IP65<br><strong>Lighting: </strong>100 lumen spotlights<br><strong>Power: </strong>Battery, solar panel included</p></div></div><p>The X1 Pro isn't small, but it's not overly large given what it comes with either. It's IP65 rated for water resistance, so it should handle whatever weather you throw at it.</p><p>The build quality of the X1 Pro is fine, but not exactly premium. Some of the plastic parts feel a little cheap, though nothing broke during my testing and everything felt solid enough once mounted. Sure, the camera doesn't necessarily need to look like a piece of jewelry on the side of your house, and its overall look is pretty similar to other outdoor security systems. </p><p>The system combines a solar panel with a relatively large built-in battery. Baseus says the 7,800 mAh battery will last up to 150 days on a charge, and the 3W solar panel on top is self-adjusting, with a 120° coverage angle (60° left and 60° right). </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VQGXpdQh2BystUiVCP9abB" name="Baseus-Security-X1-Pro-5" alt="Baseus Security X1 Pro" src="https://cdn.mos.cms.futurecdn.net/VQGXpdQh2BystUiVCP9abB.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The ability for the solar panel to rotate is a pretty smart idea, but I'm not sure it's really all that necessary. I've never had problems with static solar panels keeping a security camera powered. I have a EufyCam 2C Pro (which I use for its HomeKit Secure Video support) in my backyard that never dips below 90% battery with its static panel. The rotating design could be more useful in areas with spotty sun coverage, but even then, with a 150-day battery, your sun coverage would have to be pretty rough for it to make much of a difference.</p><p>Setup is straightforward. You physically install the mount to a wall, then attach the solar panel and camera assembly to the mount. From there, you open the Baseus app and follow the on-screen instructions to add the camera. It's no different than setting up any other security camera — the app walked me through the whole process without any major hiccups.</p><p>As a whole, the Baseus X1 Pro's design is...fine. It doesn't stand out all that much, and it could be built a little better, but most will be perfectly happy with it.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-video-and-audio-quality"><span>Baseus Security X1 Pro review: Video and audio quality</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3ciezz3X9vico3U3eDmgQE" name="Baseus-Security-X1-Pro-4" alt="Baseus Security X1 Pro" src="https://cdn.mos.cms.futurecdn.net/3ciezz3X9vico3U3eDmgQE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The X1 Pro captures video at 3K (3072 x 1536) per camera, with F2.0 lens apertures. In good lighting, the footage is solid. Details are crisp, colors are vibrant enough, and dynamic range is good enough that you'll get detail in both shadows and highlights, within reason.</p><p>The two cameras can work either independently or together. When independent, they can track up to two subjects at once — useful if you've got a large area with multiple potential points of interest. When stitched together, they provide a 300° horizontal field of view, which covered my entire backyard on its own. Baseus will "stitch" the two feeds into a single panoramic view, but it's not great at this — there's a noticeable seam between the two camera feeds where they join. It's not a huge deal, but it's not invisible either.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/pj98sYVCvaI" allowfullscreen></iframe></div></div><p>The camera supports up to 8x digital zoom, but there's no optical zoom. In other words, while the reasonable resolution means you can zoom a little when you need to, you'll lose detail the more you zoom in.</p><p>Night vision is handled by 12 IR LEDs plus two 100-lumen LED spotlights for full-color night vision. Infrared night vision worked pretty well in my testing, and the camera actually did a better job triggering on motion at night than the Eufy camera I have installed in the same backyard. It captured three kittens walking through my yard one night that I'd never seen before. </p><p>The spotlights are there for color night vision, but their reach doesn't match the use-case of the camera itself — the camera's designed to be able to see large areas, but the spotlights won't illuminate areas anywhere near as large. If you do use the cameras to cover more than a small area, you'll need to rely on external lighting or the infrared night vision.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/GnkmfMNSDnw" allowfullscreen></iframe></div></div><p><strong>Motion detection and audio</strong></p><p>Motion detection is a mixed bag. Motion detection <em>itself</em> seemed to be fine -- even smaller movements, like the aforementioned kittens triggered recording. But, it took some time for recording to actually begin. The camera could see my entire backyard, including around 100 feet from my back door to a garden shed. </p><p>However, in recordings of me walking from the door to the shed, I was already mere steps from the shed before the beginning of the recording. That represents a good three or four seconds of movement before recording, which could be the difference between catching a significant event or missing it.</p><p>The camera supports two-way audio, but it's not great at actually picking up that audio. The microphone is sensitive enough to pick up audio near it, but not super consistently, and you can forget about audio that's further away -- again, representing a mismatch between the purpose of the camera and its actual tech.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-app"><span>Baseus Security X1 Pro review: App</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="fLygUexf9RYnSHGW2Q6dFE" name="Baseus-Security-X1-Pro-6-screenshot" alt="Baseus Security app" src="https://cdn.mos.cms.futurecdn.net/fLygUexf9RYnSHGW2Q6dFE.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Baseus app is available on both iOS and Android, and it covers the basics you'd expect. You get a live view of the camera, an Events tab for captured recordings (including being able to see a split view or a stitched view), and settings for the alarms and night recordings.</p><p>It's not the slickest security camera app I've used, but I could find what I needed without much hunting. There are also some handy features, like an automatic patrol mode that has the two cameras rotate out and back at a pre-set time interval -- though unfortunately you can't use this feature when you've set the footage to be stitched. I don't see why -- there's no reason the footage from patrol mode can't just be un-stitched, and have other footage stitched. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="GTyh6cGfoSe326hAjy87eG" name="Baseus-Security-X1-Pro-7-screenshot" alt="Baseus Security app" src="https://cdn.mos.cms.futurecdn.net/GTyh6cGfoSe326hAjy87eG.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The object detection is where the app, and system as a whole, falls down. In theory, it differentiates between people, pets, and vehicles. In practice, it's not super accurate. Several times when motion was triggered by an animal, it just registered as generic "motion" with no classification. One time, it registered a cat as a person. </p><p>Facial recognition was also inconsistent, and a pain to use. Unlike other security cameras that automatically record faces and have you classify them as you go, you have to manually add familiar faces using either the camera itself or by uploading an image. Even after you do that, it often doesn't properly recognize the face you uploaded.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="3GyyFti47ayRrqwrapYD9K" name="Baseus-Security-X1-Pro-8-screenshot" alt="Baseus Security app" src="https://cdn.mos.cms.futurecdn.net/3GyyFti47ayRrqwrapYD9K.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>In other words, while the camera can record footage when it detects motion, it's not very good at actually classifying that motion or differentiating between people and other movement.</p><p>The camera is heavily marketed as a no-cloud option, but there's actually a 30-day cloud storage backup feature in the app, offered for free. It's disabled by default, and even after I enabled it, I couldn't access clips that were marked as being backed up in the cloud. I could only play back clips stored locally. I'm not sure why, and it's possible this is a bug or something that'll get ironed out in a firmware update — but as of now, cloud backup exists but doesn't really work, at least in my testing.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-smart-home-compatibility"><span>Baseus Security X1 Pro review: Smart home compatibility</span></h3><p>Smart home support is limited to Google Home and Amazon Alexa. That's it. No Apple HomeKit, no Matter, no SmartThings. If you live in the Apple ecosystem, you'll be stuck using the Baseus app exclusively.</p><p>The other connectivity limitation is Wi-Fi. The X1 Pro only supports 2.4 GHz — no 5 GHz option. In practice, this means streaming can lag if your signal is weak or if you're in a congested area with lots of 2.4 GHz interference. I found that footage streamed through the Baseus app regularly needed a second to load, which isn't a dealbreaker but is noticeable.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-storage-and-subscription-plans"><span>Baseus Security X1 Pro review: Storage and subscription plans</span></h3><p>The Baseus X1 Pro is designed to be completely subscription-free. In other words, even with a 30-day cloud backup (supposedly), you won't need to pay anything to use the system after actually buying it. That's a double-edged sword, of course -- what if you <em>want</em> a cloud system instead of local recording. If that's you, it's worth looking elsewhere.</p><p>Local storage supports up to a 512 GB microSD card, which is plenty of capacity for weeks or months of footage depending on your settings.</p><p>As mentioned, there's also a free 30-day cloud storage backup option — but it's meant to supplement local storage, not replace it. You'll still need a microSD card to get the most out of the camera. And in my testing, I couldn't actually access video events stored in the cloud even after enabling the feature, so I wouldn't factor cloud backup into your buying decision at this point. The X1 Pro also works with Baseus' own hub, if you happen to own one, though you don't need one to use the camera. I didn't test the hub integration.</p><h3 class="article-body__section" id="section-baseus-security-x1-pro-review-verdict"><span>Baseus Security X1 Pro review: Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="43B7gDT8dhjBDePUCJSc4Q" name="Baseus-Security-X1-Pro-2" alt="Baseus Security X1 Pro" src="https://cdn.mos.cms.futurecdn.net/43B7gDT8dhjBDePUCJSc4Q.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Baseus Security X1 Pro is a solid camera overall, but it falls short in a few key areas. Image quality is good, the dual-camera design gives you genuinely wide field-of-view coverage from a single unit, and the no-subscription model is always helpful. For basic security monitoring, it does what you need it to.</p><p>Where it falls short is on the smart features. Don't expect to rely on the AI-powered classification — motion detection can be delayed, facial recognition is unreliable, and the app will sometimes misidentify what it's looking at. Zoom clarity isn't great past a few times magnification, and the 2.4 GHz-only Wi-Fi can cause occasional stream lag.</p><p>If you're looking for a wide-angle dual-camera setup without recurring fees and can live without elite AI smarts, the X1 Pro is a compelling option. But, it's worth considering <a href="https://www.tomsguide.com/home/smart-home/save-yourself-usd100-a-year-the-5-best-subscription-free-security-cameras">subscription-free security cameras</a> from the likes of Reolink and TP-Link. For example, the <a href="https://www.tomsguide.com/home/home-security/tp-link-tapo-c246d-hybridcam-duo-review">TP-Link Tapo C246D</a> is another dual camera system with a slightly lower resolution, though it doesn’t have the ability to track two subjects at once. But, it can track one subject faster.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring doorbell cameras could be collecting your face without permission, $5 million lawsuit claims ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/computing/internet/ring-doorbell-cameras-could-be-collecting-your-face-without-permission-usd5-million-lawsuit-claims</link>
                                                                            <description>
                            <![CDATA[ Ring is facing a class action lawsuit alleging its AI facial recognition feature collected biometric data from millions of Americans without their consent. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">txM97FJ86uZdKuquU9ci3Z</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/MiF64iitdiBXxbPySXuUHW-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 02 Jun 2026 14:34:24 +0000</pubDate>                                                                                                                                <updated>Wed, 03 Jun 2026 11:15:24 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/xHn6RmpEqg87cvtLwrBu9G.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/MiF64iitdiBXxbPySXuUHW-1280-80.jpg">
                                                            <media:credit><![CDATA[Ring]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Video Doorbell]]></media:description>                                                            <media:text><![CDATA[Ring Video Doorbell]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Video Doorbell]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/MiF64iitdiBXxbPySXuUHW-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Amazon and its Ring doorbell cameras are back in the legal spotlight and given the company's expanding privacy rap sheet, this latest lawsuit could be its most damaging yet.</p><p>Virginia resident Charles Sigwalt has filed a federal class action suit in Seattle, alleging that Ring's AI-driven Familiar Faces feature secretly harvested and stored facial recognition data from unsuspecting passersby — all without their knowledge or consent.</p><p>The suit is seeking upwards of $5 million in damages on behalf of the class. It comes on the heels of a  <a href="https://www.ftc.gov/news-events/news/press-releases/2023/05/ftc-says-ring-employees-illegally-surveilled-customers-failed-stop-hackers-taking-control-users">$5.8 million FTC settlement in 2023 </a>stemming from employee surveillance allegations, and adds fresh fuel to longstanding concerns over <a href="https://www.tomsguide.com/news/ring-and-nest-let-police-view-your-video-doorbell-without-your-permission-what-to-know">Ring's law enforcement data-sharing practices</a>. </p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-WQnmGO"></div>                            </div>                            <script src="https://kwizly.com/embed/WQnmGO.js" async></script><h2 id="what-is-the-familiar-faces-feature">What is the 'Familiar Faces' feature?</h2><p>Ring's optional 'Familiar Faces' feature uses <a href="https://www.tomsguide.com/home/smart-home/ring-announces-4k-doorbell-with-alexa-ai-greetings-and-new-search-party-feature-for-pets">artificial intelligence to identify and remember individuals</a> who appear on camera, sending notifications that include specific names when recognized people approach a property. </p><p>While the feature is opt-in for Ring device owners, the lawsuit argues that the people being identified and stored in the system: passers-by, neighbors, delivery workers, etc, never agreed to be part of it. </p><p>According to the suit, those captured "did not consent to have their privacy rights violated at the entrance way."</p><section class="howto-block">                    <h3>What does the lawsuit claim? </h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/wif7gefH2w2u9PHo3L6o6i.jpg"                                        alt="Ring"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/wif7gefH2w2u9PHo3L6o6i.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / John Velasco)</div></figure>                    <p><p>The suit was filed by Charles Sigwalt, a Virginia resident who says he was among those captured by the feature without his consent. First reported by the <a href="https://economictimes.indiatimes.com/tech/technology/amazons-ring-sued-over-facial-recognition-feature-latest-privacy-concern-for-doorbell-maker/articleshow/131462874.cms?UTM_Source=Google_Newsstand&UTM_Campaign=RSS_Feed&UTM_Medium=Referral&from=mdr" target="_blank">Economic Times</a>, the lawsuit was filed on Monday and alleges that "millions of other Americans passed by a Ring security camera and unknowingly had their facial recognition information collected." </p><p>Sigwalt states that Amazon's conduct "represents a profound privacy failure for millions of people who are now being tracked by Amazon." At the time of writing, Amazon has declined to comment. </p><p>The lawsuit seeks at least $5 million in damages for the class, with additional unspecified damages for all affected.</p></p>                </section><h2 id="what-happens-next">What happens next?</h2><p>The case is currently before federal court in Seattle. No trial date has been set, and Amazon has not yet responded publicly to the allegations. </p><p>Given Ring's history of privacy settlements, the outcome of this lawsuit will be closely watched by both privacy advocates and the millions of households that use Ring devices across the U.S. We'll keep you updated as the case develops.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/phones/google-settles-android-class-action-lawsuit-with-payouts-of-up-to-usd100-for-100-million-people-heres-how-to-claim-your-share">Google settles Android class action lawsuit for $135 million with payouts to 100 million users — here's how to claim your share</a></li><li><a href="https://www.tomsguide.com/tvs/roku-and-tcl-accused-of-bricking-tvs-with-poor-software-updates-in-new-class-action-lawsuit">Roku and TCL accused of 'bricking' TVs with poor software updates in new class action lawsuit</a></li><li><a href="https://www.tomsguide.com/home/home-security/rings-new-search-party-feature-can-help-you-find-your-lost-dog-heres-how-it-works">Ring's Search Party feature can help you find your lost dog — here's how it works</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring's crisper new 2K outdoor security cams will have you shouting 'Zoom! Enhance!' like in all those cop shows ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/rings-crispier-new-2k-outdoor-security-cams-will-have-you-shouting-zoom-enhance-like-in-all-those-cop-shows</link>
                                                                            <description>
                            <![CDATA[ Ring has launched two new outdoor cameras in Australia with 2K video resolution and improved night vision. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">adAYq2T5XumuD3TqJNJKWf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Lp5erzwjHDjfR3nnJRKqra-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 25 May 2026 02:43:39 +0000</pubDate>                                                                                                                                <updated>Mon, 25 May 2026 03:05:01 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a staff writer for Tom’s Guide Australia, primarily covering lifestyle, streaming and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Lp5erzwjHDjfR3nnJRKqra-1280-80.jpg">
                                                            <media:credit><![CDATA[Ring]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Spotlight Camera in lifestyle setting]]></media:description>                                                            <media:text><![CDATA[Ring Spotlight Camera in lifestyle setting]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Spotlight Camera in lifestyle setting]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Lp5erzwjHDjfR3nnJRKqra-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Ring, Amazon's premium home security brand, has announced two new outdoor cameras heading to its expansive line-up in Australia. </p><p>Available for pre-order on Amazon ahead of June shipping dates, the <a href="https://www.amazon.com.au/dp/B0FZPRJV8K?th=1" target="_blank">new Ring Spotlight Camera (2nd Gen)</a> and <a href="https://www.amazon.com.au/dp/B0FZPRJV8K?th=1" target="_blank">Ring Floodlight Camera (2nd Gen)</a> have been designed with Australian homes in mind, touting improved features over previous generations. </p><p>Notably, both cameras record sharper 2K video — an upgrade from the previous 1080p footage — making it easy to recognise and capture activity outside homes. This includes people, packages, and pet detection under both day and night conditions. </p><p>In terms of specific features, the Ring Spotlight Camera has a 550-lumen spotlight that provides enhanced brightness and is fully compatible with Ring's quick-release battery pack, so you don't need to worry about wiring it in. </p><p>The Ring Floodlight Camera has a much wider field of view, with a 2000-lumen spotlight that will illuminate everything around your home, including your driveway, backyard or garage. </p><p>When it comes to pricing, the Ring Spotlight Camera (2nd Gen) is available for AU$279 on <a href="https://www.amazon.com.au/dp/B0FZPRJV8K?th=1" target="_blank">Amazon</a> and <a href="https://ring.com/au/en/products/spotlight-cam-2nd-gen" target="_blank">Ring</a>, with shipping estimated for June 11, 2026. Meanwhile, the Ring Floodlight Camera (2nd Gen) is priced at AU$329 on <a href="https://www.amazon.com.au/dp/B0FZPRJV8K?th=1" target="_blank">Amazon</a> and <a href="https://ring.com/au/en/products/floodlight-cam-2nd-gen" target="_blank">Ring</a> and will begin shipping on June 4, 2026. </p><h2 id="new-battery-powered-doorbells-join-ring-s-4k-lineup">New battery-powered doorbells join Ring's 4K lineup</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:57.27%;"><img id="9tcmrveBMeBUGPH5G2UNwh" name="Ring Wired Doorbell (2nd gen)" alt="Ring Wired Doorbell (2nd gen)" src="https://cdn.mos.cms.futurecdn.net/9tcmrveBMeBUGPH5G2UNwh.jpg" mos="" align="middle" fullscreen="" width="1500" height="859" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ring)</span></figcaption></figure><p>The two new outdoor cameras aren't the first Ring products with improved 2K retinal vision. Back in April, Ring released its latest Battery Video Doorbells in Australia: the <a href="https://www.amazon.com.au/dp/B0FHJ7TKZM" target="_blank">Ring Battery Video Doorbell (2nd Gen)</a>, <a href="https://www.amazon.com.au/dp/B0F14N7HHH" target="_blank">Battery Video Doorbell Plus (2nd Gen)</a> and <a href="https://www.amazon.com.au/dp/B0FPPWKMGK" target="_blank">the Battery Video Doorbell Pro (2nd Gen)</a>. Each of the new doorbells sports a sleek new design, slimmer than the previous silhouettes on offer. </p><p>As for specs, the Doorbell and the Plus model offer 2K resolution, much like the <a href="https://www.tomsguide.com/home/home-security/ring-wired-doorbell-plus-2nd-gen-review">Ring Wired Doorbell Plus (2nd gen)</a>. However, only the Plus will have a removable battery, which is similar to previous Plus models. The Pro, on the other hand, will have 4K retinal vision, and comes with a removable battery so you can charge it without removing the entire unit. </p><p>These new, higher-resolution additions prove that Ring will be able to better compete with the best video doorbells and security cameras. That said, anyone keen on a Ring ecosystem should note that, unlike options from <a href="https://www.tomsguide.com/home/home-security/tp-link-tapo-c615f-kit-review">TP-Link’s Tapo</a> or most other home security brands, you'll likely need to sign up for a Ring subscription to save video. As with most new products, new customers will receive a 30-day free trial to Ring's subscription service upon setting up a new camera or doorbell. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring Battery Doorbell Pro (Retinal 4K) Review: Ring's top-end video doorbell, untethered ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/ring-battery-doorbell-pro-retinal-4k-review-rings-top-end-video-doorbell-untethered</link>
                                                                            <description>
                            <![CDATA[ A ton of functionality at a good price, the Ring Battery Doorbell Plus delivers 4K video and tons of features to make this a top choice among battery-operated camera doorbells. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tZrmdYKNaVWJi4z8ZkpQq</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/HPu8362L4WPRCGvAKYnFD-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 24 May 2026 08:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dan Cavallari ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RzBY7zZLXQ8jdC6dtzKdxZ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/HPu8362L4WPRCGvAKYnFD-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Battery Doorbell Pro Retinal 4K]]></media:description>                                                            <media:text><![CDATA[Ring Battery Doorbell Pro Retinal 4K]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Battery Doorbell Pro Retinal 4K]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/HPu8362L4WPRCGvAKYnFD-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Not long ago, I hardwired a <a href="https://www.tomsguide.com/home/home-security/ring-wired-doorbell-plus-2nd-gen-review"><u>Ring Wired Doorbell Plus</u></a> to my front door and enjoyed all the benefits that come with it, most notably the ability to wire the Ring unit to my existing chime. The 2K video it delivered was quite impressive. Now, the Ring Battery Doorbell Pro has landed on my doorstep, and it’s perfect for my garage, where I often operate my side photography business. And it’s got 4K video to wow me. That’s so many Ks!</p><p>There’s no existing chime or hard-wiring in my garage, so the battery-powered Ring Battery Doorbell Pro is ideal for the space, when paired with the Chime Plus ($60) that Ring included with my test unit. </p><p>From installation all the way through to using the app on a daily basis, the Battery Doorbell Pro couldn’t be easier to use. And the Retinal 4K footage is excellent in almost all conditions, though in the deep of night, footage does lose some detail unless you’re looking at objects close to the camera.</p><p>All told, the Battery Doorbell Pro is a great addition to any space that doesn’t already have a hardwired chime. Here’s how it compares to the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html"><u>best video doorbells</u></a>.</p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-price-and-availability"><span>Ring Battery Doorbell Pro (Retinal 4k): Price and Availability </span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="MUJ25b7ckyWWYEW9Rm8qYK" name="Ring Battery Doorbell Pro Retinal 4K with box" alt="Ring Battery Doorbell Pro Retinal 4K with box" src="https://cdn.mos.cms.futurecdn.net/MUJ25b7ckyWWYEW9Rm8qYK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Battery Doorbell Pro came out in early 2026, and is available for purchase on Ring’s website for $250, as well as Amazon and other online retailers. You can split the purchase up into payments using Affirm at checkout. While Ring does offer the option to have the doorbell professionally installed, you shouldn’t need to do that with simple-to-install unit. </p><p>You can also purchase the Ring Doorbell Pro at other retailers like Best Buy, Home Depot, Walmart, and many more. Pricing and availability may vary. </p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-design"><span>Ring Battery Doorbell Pro (Retinal 4k): Design</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="B342e5psjpbge3n29p3L29" name="Ring Battery Doorbell Pro Retinal 4K" alt="Ring Battery Doorbell Pro Retinal 4K" src="https://cdn.mos.cms.futurecdn.net/B342e5psjpbge3n29p3L29.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><div  class="fancy-box"><div class="fancy_box-title">Ring Battery Doorbell Pro (Retinal 4k) specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Price</strong>: $250<br><strong>Dimensions</strong>: 2.11 x 5.78 x 1.51 inches<br><strong>Camera</strong>: Retinal 4K<br><strong>Zoom</strong>: up to 10x<br><strong>Motion detection:</strong> 3D <br><strong>Field of view</strong>: 140 degrees horizontal, 140 degrees head to toe vertical<br><strong>Audio</strong>: Two-Way Talk with Audio+<br><strong>Battery</strong>: Quick Release Ultra Battery Pack<br><strong>Internet requirements</strong>: Min upload speed of 15Mbps for 4K<br><strong>Connectivity</strong>: Wi-Fi 6 dual band 2.4GHz/5GHz<br><strong>Operating conditions</strong>: -4F to 122F</p></div></div><p>The Battery Doorbell Pro keeps the aesthetics of the other doorbells in the Ring lineup, though the Battery Doorbell Pro does come in four different colors. It’s slightly taller than the Ring Battery Doorbell Plus, at almost six inches tall. That’s to give enough room for the long-lasting battery within. </p><p>The faceplate pops off using the included tool. Keep that tool in a safe place, since you’ll need it to remove the faceplate whenever you want to remove the battery for charging. You can use any small pry tool, but the plastic one included with purchase is a great way to easily remove the faceplate without it getting scratched or otherwise damaged. </p><p>The quick-release battery comes out easily simply by pressing the release button. You can then charge the battery using the included USB-C cable. </p><p>The Battery Doorbell Pro also comes with a mounting plate and an angle mount. You’ll want to use the angle mount if you need to position the doorbell inward or outward to capture the widest view of your space. Otherwise, you can simply install the regular mount and have the camera face directly outward. Be sure to screw in the security screw once you’ve installed the doorbell; this will secure the doorbell to the mounting plate to prevent theft. </p><p>You’ll set such alerts in the Ring app. That’s also where you’ll set up your unit and change various settings based on your specific needs. More on the app in a moment. </p><p>Finally, the Battery Doorbell Pro supports LiveTalk with Audio+, allowing you to talk to visitors from the safety of your living room and hear what they have to say back to you, all with enhanced sound quality. </p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-video-performance"><span>Ring Battery Doorbell Pro (Retinal 4k): Video performance</span></h3><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/EcYZSD4_SPY" allowfullscreen></iframe></div></div><p>I now have what you might call a doorbell ecosystem on my property. The front door, garage camera, front gate camera, and now the Ring Battery Doorbell Pro mounted on my garage all report straight to the Ring app, so I can see what’s going on around the house at any time, day or night. </p><p>Two of the doorbells — the Pro and the Plus mounted on my front gate — are paired to the Chime Plus in my garage. So when clients come to my house, I can have them ring either doorbell to activate the Chime in the garage. If I’m already with another client, I can use Live Talk to tell them not to come in just yet, or if I’m ready for them, tell them to come right in so we can get started. It’s super convenient; I don’t have to walk all the way to the front of my house to interact with clients. </p><p>But I can do a lot of that with other, less expensive doorbells in Ring’s lineup. What really sets the Battery Doorbell Pro apart from the others is the Retinal 4K video with 10x Enhanced Zoom. In bright sunlight, the footage is crystal clear, and I can zoom in quite far and read small text like license plates, provided they aren’t obscured by shadows and my internet speeds are sufficient.</p><p>That’s important to keep in mind: The best footage comes when your internet speeds are fast. Ring recommends speeds up to 15Mbps. My internet connection rarely, if ever, gets that fast, even on my 5g network; it tops out at 12Mbps, and is usually closer to the range of 7-9Mbps. So my video suffers slightly as a result. If you get consistently faster speeds, your images will be consistently sharper. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/ASdnLGFktI4" allowfullscreen></iframe></div></div><p>This is more apparent at night. In low light, I still get a fairly clear picture with true colors. But when the sun sets and there’s far less ambient light, it’s hard to get crystal clear footage. I can still make out people and objects close up to the camera, and even decently far away, but reading small text or license plates is probably out of the question. </p><p>The field of view is excellent and I love being able to see just about my entire yard in one image. It’s also great to get a head-to-toe image of anyone ringing my doorbell. Again, in broad daylight, this image is superlative. In low light, it’s still very good. At night, the image quality will suffer depending on your internet speeds. That said, it’s still pretty incredible that it’s possible to make out people and objects in complete darkness. The Doorbell Pro still allows me to make out faces clearly, especially if those faces are within a close range of the doorbell.</p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-battery"><span>Ring Battery Doorbell Pro (Retinal 4k): Battery</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Gi9zwS5yo7qmYiQSYr6QzC" name="Ring Battery Doorbell Pro Retinal 4K battery" alt="Ring Battery Doorbell Pro Retinal 4K battery" src="https://cdn.mos.cms.futurecdn.net/Gi9zwS5yo7qmYiQSYr6QzC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The battery is USB-C rechargeable. Simply pop it out of the Doorbell and throw it on the charger. Since there’s no hardwiring, you can mount the Ring Battery Doorbell Pro just about anywhere you find it useful. </p><p>In my testing, the battery life has been exceptional. After two straight weeks of use, the battery has lost less than a quarter of its full charge. </p><p>It’s important to note that the Battery Doorbell Plus comes with the Quick Release Ultra Battery Pack, and this particular battery is only compatible with the Battery Doorbell Pro and Battery Doorbell Plus. So users may experience some compatibility issues if they have older-style batteries already at home. </p><p>I read a few reviews online about this doorbell, and users noted frustration that the Doorbell Pro isn’t compatible with the Ring Solar Panel and Charger. But I checked in with Ring and this isn’t the case; the Doorbell Pro is indeed compatible with the solar panel and charger, and if you use these accessories, your battery gets charged as it sits mounted in place, no need for you to plug it in. </p><h3 class="article-body__section" id="section-differences-between-the-battery-doorbell-pro-and-battery-doorbell-plus"><span>Differences between the Battery Doorbell Pro and Battery Doorbell Plus</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="7hjR6BTeCVenwBfmvKpxQF" name="Ring Battery Doorbell Pro Retinal 4K battery" alt="Ring Battery Doorbell Pro Retinal 4K battery" src="https://cdn.mos.cms.futurecdn.net/7hjR6BTeCVenwBfmvKpxQF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Ring Battery Doorbell Plus costs $150, saving you $100 compared to the Ring Battery Doorbell Pro.You still get Live View, Two-Way Talk (without Audio+), Motion Detection, and Color Night Vision. But the resolution drops to 1536p HD+ video.</p><p>And while the Doorbell Plus also works with the quick release battery, you get a smaller battery pack, which means you’ll have to charge the battery more often if you’re not using a solar panel or plug-in adapter. Also, the Doorbell Pro accommodates 5GHz internet for faster speeds, but the Doorbell Plus only works with 2.4GHz Wi-Fi. </p><p>Ultimately, the Battery Doorbell Pro is the more powerful, capable, and faster doorbell. But if you want to save some money and don’t mind losing a few features (among them the super-sharp 4K video), the Battery Doorbell Plus is a great unit, too.</p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-app-and-subscription-fees"><span>Ring Battery Doorbell Pro (Retinal 4k): App and subscription fees</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="BAJu7ELYm9L5LHBqbayBQP" name="Ring-Battery-Doorbell-Pro-4K-13-screenshot" alt="Screenshot from Ring app" src="https://cdn.mos.cms.futurecdn.net/BAJu7ELYm9L5LHBqbayBQP.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>Much of what you’ll end up using the most when it comes to your Battery Doorbell Pro lives in the app. The Ring app is your headquarters, so to speak, and you’ll be able to see all your footage here, use the Live View and Two-Way talk features, set your 3D motion zones, and much more.</p><p>It’s a pretty streamlined app, and it’s easy to use. Downloading clips takes seconds. Navigating through the various menus is quick and intuitive too. </p><p>You can set various types of notifications here as well. This is particularly handy if you have a regular cast of characters coming to your door; with AI facial recognition, the app can tell you who’s at your door and even if they’re carrying something or visiting with someone else — even if it’s their dog. The notifications are quite thorough, and usually pretty accurate. </p><p>One thing you may want to do at setup is set your 3D Motion Detection settings. If, for example, you want to only see notifications about things happening on your front steps, or in your driveway, but not on the sidewalk, you can set this up in the app. It doesn’t take much time or effort to do so, and it will cut down on the clutter in your notifications.</p><p>Of course, many of the great features in the Ring app get taken away from you if you don’t sign up for the Pro subscription, which starts at $5/month for a single camera, and $10/month for unlimited cameras at one location. </p><p>Familiar Faces, for example, is not included in the free version of the app, nor is the ability to save video at all. It’s frustrating to have to subscribe to an app after paying for a device, but you’ll get far more out of the Ring Battery Doorbell Pro if you subscribe to the app.</p><h3 class="article-body__section" id="section-ai-features"><span>AI features</span></h3><p>With Ring's premium tier (which costs $19/month), you also get its advanced AI features, which will let you use natural-language search to look through all your footage, and will deliver more descriptive results. We tested <a href="https://www.tomsguide.com/home/smart-home/which-security-camera-has-the-best-ai-we-put-six-to-the-test-from-google-ring-blink-and-others-to-find-out">Ring's AI against other security cameras</a>, and found it was good, but not the most comprehensive. </p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-accessories"><span>Ring Battery Doorbell Pro (Retinal 4k): Accessories</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yPLr6uyCMgYTvUW8iVSZLT" name="Ring Battery Doorbell Pro 4K wireless chime" alt="Ring Battery Doorbell Pro 4K wireless chime" src="https://cdn.mos.cms.futurecdn.net/yPLr6uyCMgYTvUW8iVSZLT.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>My test unit came with the Ring Chime Plus ($60), which plugs into any available wall outlet. It can sync with any and all of your ring devices, and you can even personalize your tones. </p><p>The Battery Doorbell Pro is compatible with the Ring Solar Panel ($60), which includes a 6-meter-long cable to help you position the panel wherever the sunlight comes through most clearly. There’s an adjustable mounting bracket to help with positioning too.</p><p>An extra Quick Release Ultra Battery Pack will cost you $50. </p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-the-competition"><span>Ring Battery Doorbell Pro (Retinal 4k): The competition</span></h3><p>Ring is perhaps the best-known name in the camera doorbell game, but it’s an increasingly crowded market. The Battery Doorbell Plus features 4K video and accommodates 5G networks in a battery-powered package, however, which is a tall order to compete with.</p><p>There aren't many other companies that offer 4K video doorbells, let alone battery-powered ones. Most of the competition currently tops out at around 2K, such as the <a href="https://www.tomsguide.com/home/home-security/google-nest-doorbell-wired-3rd-gen-review">Nest Doorbell (3rd gen)</a>. </p><h3 class="article-body__section" id="section-ring-battery-doorbell-pro-retinal-4k-verdict"><span>Ring Battery Doorbell Pro (Retinal 4k): Verdict</span></h3><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5n3oNx2nhfdstHZkqhqy3Y" name="Ring Battery Doorbell Pro Retinal 4K" alt="Ring Battery Doorbell Pro Retinal 4K" src="https://cdn.mos.cms.futurecdn.net/5n3oNx2nhfdstHZkqhqy3Y.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>The Ring Battery Doorbell Pro isn’t perfect, but it packs a ton of features into a small and price-conscious package. If your internet speeds are up to snuff, you’ll get crystal-clear 4K video, even in low light. If your internet speeds aren’t top-notch the video quality will suffer, unfortunately. In that case, you'll want to check out some of the <a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">best Ring Doorbells</a> which better suit your needs.</p><p>Still, for the size, functionality, and price, the Doorbell Pro gives me all the features I want in a smart doorbell system. I can zoom in quite far to see small objects and text; I can get smart notifications about my visitors and even talk to them in real time without going to the door; I can go back and view footage in the app and download clips I want; and I don’t have to worry about charging the battery frequently because it has a long, long run time. </p><p>Longtime Ring users may find it frustrating that the batteries they have on hand may not work with the Doorbell Pro. But otherwise, the Doorbell Pro is a top unit that does everything you want a smart doorbell to do, without any complexities or maintenance. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I tested the TP-Link Tapo C675D, and it’s like getting two 4K security cameras for the price of one ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/tp-link-tapo-c675d-kit-review</link>
                                                                            <description>
                            <![CDATA[ Two 4K security cameras for the price of one? Go on, I'm listening. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">DLc2xbq7AiLu43ZyPCjVuB</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gpoUD8nXDoiNycFkRgHgRg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 14 May 2026 08:30:00 +0000</pubDate>                                                                                                                                <updated>Fri, 15 May 2026 15:46:29 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason Cipriani ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2Sx72WJgiEjz5S92jG2gPT.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gpoUD8nXDoiNycFkRgHgRg-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[TP-Link Tapo C675D security camera mounted to the side of a house]]></media:description>                                                            <media:text><![CDATA[TP-Link Tapo C675D security camera mounted to the side of a house]]></media:text>
                                <media:title type="plain"><![CDATA[TP-Link Tapo C675D security camera mounted to the side of a house]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gpoUD8nXDoiNycFkRgHgRg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">TP-Link Tapo C675D Kit: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Camera resolution</strong>: 3840 x 2160 for both lenses, 15 fps day/night <br><strong>Field of view:</strong> Fixed lens — 169-degrees, Pan & Tilt lens — 360-degrees <br><strong>Spotlights: Fixed lens:</strong> 109 lumens, Pan & Tilt 215.99 lumens  <br><strong>Night vision: Color Night Vision, Infrared Night Vision</strong> <strong>Size:</strong> 4.02 x 6.31 x 5.20-inches <br><strong>Battery Life:</strong> Up to 3 months with normal use <br><strong>Weather proofing:</strong> IP65 rating Wi-Fi: 802.11 b/g/n 2.4GHz, 802.11 a/n 5GHz</p></div></div><p>TP-Link’s latest home security camera, the Tapo C675D Kit, includes not one but two 4K cameras in a single housing. One lens is stationary while the other can rotate a full 360 degrees. There's also a spotlight, a microSD card slot for local storage, and local AI for basic object detection, all of which is powered by the included solar panel. </p><p>It's loaded with features, but how does the dual-lens approach actually perform when compared to the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras"><u>best home security cameras</u></a>? I tested the Tapo C675D Kit for a few weeks, using it to keep an eye on my daughter's car and a portion of our backyard. Here's how it stacks up.</p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-price-and-availability"><span>TP-Link Tapo C675D Kit: Price and availability</span></h3><p>The Tapo C675D Kit went on sale in the spring of 2026, and is available directly from TP-Link for $229, and includes a solar panel. You can purchase a two-pack of cameras and solar panels for $449. Amazon also <a href="https://www.amazon.com/Tapo-Security-Wireless-Wide-Angle-Subscription-Free/dp/B0GRLJBYR8/"><u>sells the C675D at the same price</u></a>. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-design-and-installation"><span>TP-Link Tapo C675D Kit: Design and installation</span></h3><p>The Tapo C675D is two independent cameras stacked atop each other. On top is a fixed lens camera with a 169-degree field of view. Below that is a pan and tilt lens that rotates a full 360 degrees horizontally and 120 degrees vertically.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Loe9LsMBiWpKLwA985eQTH" name="TP-Link-Tapo-C675D-vendor--1" alt="Night time lights on a TP-Link Tapo C675D security camera" src="https://cdn.mos.cms.futurecdn.net/Loe9LsMBiWpKLwA985eQTH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>Both cameras have their own spotlights. Each camera boasts four white LEDs along with two alarm LEDs that broadcast red and blue light. The latter is designed to scare would be bad guys, who’ve grown accustomed to seeing spotlights come and nothing happening. Judging by the number of videos I see posted on random local Facebook groups of cars getting broken into, it’s not a bad idea. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="WzQs9GDFxV4u5KQg9ZnrSH" name="TP-Link-Tapo-C675D-vendor--2" alt="Color lights on a TP-Link Tapo C675D security camera" src="https://cdn.mos.cms.futurecdn.net/WzQs9GDFxV4u5KQg9ZnrSH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>On the backside of the top camera is where you can insert a microSD card for local storage. Here, there’s also a USB-C charging port you can use to manually charge the camera as its battery gets low, or connect the included solar panel cable to keep the camera’s 10,000 mAh battery topped off. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="vbvQujsZGRJDw4mSgRsbTg" name="TP-Link-Tapo-C675D--4" alt="Solar panel for the TP-Link Tapo C675D security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/vbvQujsZGRJDw4mSgRsbTg.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The included solar panel measures 8.31 x 6.83 x 0.67-inches, and has a built-in 0.48 meter cable, with an 11.8 foot extension cable. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uptmFouV4ikPAn6xaTYyZH" name="TP-Link-Tapo-C675D-vendor--3" alt="Installing the TP-Link Tapo C675D security camera" src="https://cdn.mos.cms.futurecdn.net/uptmFouV4ikPAn6xaTYyZH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>After unboxing the C675D, I charged it for a couple of hours per the included instructions and completed the setup process before mounting the camera and solar panel on the side of my home. All told, it took maybe 20 minutes total from the camera being fully charged to mounted and in action. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-video-quality"><span>TP-Link Tapo C675D Kit: Video quality</span></h3><p>As far as video quality and features are concerned, the C675D is loaded. Both cameras are capable of capturing 4K video at 15 FPS day and night. Both cameras offer 18x digital zoom when watching live or a captured event in the app. Both cameras offer IR or color night vision. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wv3ZZCVbarGKjXRpEZgyKH" name="TP-Link-Tapo-C675D-vendor--6" alt="Adjusting the TP-Link Tapo C675D security camera" src="https://cdn.mos.cms.futurecdn.net/wv3ZZCVbarGKjXRpEZgyKH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>Both cameras offer 24/7 continuous recording with snapshots taken in set intervals of 1-60 seconds. Both have extended motion detection, which I've seen go well beyond the advertised 60 foot range.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="UZHTZCh6m4g3U3Ttm3kzPg" name="TP-Link-Tapo-C675D--5" alt="TP-Link Tapo C675D security camera mounted to the side of a house" src="https://cdn.mos.cms.futurecdn.net/UZHTZCh6m4g3U3Ttm3kzPg.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Pan & Tilt camera can be put on patrol mode, where it'll spend a user-specified amount of time watching over various parts of your property, while the fixed lens watches over most of your yard.  </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/3J2Z2z61bl4" allowfullscreen></iframe></div></div><p>On paper, at least, there's not much the C675D can't do. And in practice, it's mostly true. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SjdMBb4dAGE" allowfullscreen></iframe></div></div><p>The video clips I've watched, from both day and night, look sharp and clear as long as nothing is moving too fast in the shot. That's the downfall of being limited to 15 FPS. Which also means when the Pan & Tilt camera is moving, you're going to see some pixelation until it settles in on its target. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/dHJCgHBIUkM" allowfullscreen></iframe></div></div><p>Even when you digitally zoom in on an object, be it a license plate or person, the quality is impressively clear, especially from the bottom Pan & Tilt camera. When viewing that camera's video, I'm able to zoom all the way in on a license plate at the end of my driveway and read it without any issue. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/MKmnUyAYkzQ" allowfullscreen></iframe></div></div><p>The Fixed camera, however, doesn't offer the same legibility. The difference is due to the Pan & Tilt’s default 5x telephoto zoom. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-features"><span>TP-Link Tapo C675D Kit: Features</span></h3><p>The Tapo app is full of options and features you can tweak for the C675D as a unit, or each camera based on your preferences. For example, you can opt to have the fixed lens monitor for all detectable objects, while the Pan & Tilt camera only watches for pets and people (or any other combination). </p><figure role="gallery"><figure><img src="https://cdn.mos.cms.futurecdn.net/Lp3BxNwKBWe2CuJnCBtvQg.jpg" alt="TP-Link Tapo C675D security camera mounted to the side of a house" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PrjiKrxn9sfTJknaNgx2Qg.jpg" alt="TP-Link Tapo C675D security camera mounted to the side of a house" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure><figure><img src="https://cdn.mos.cms.futurecdn.net/PM5f5jsTXbNB6jkwXPJ5Qg.jpg" alt="TP-Link Tapo C675D security camera mounted to the side of a house" /><figcaption><small role="credit">Tom's Guide</small></figcaption></figure></figure><p>My favorite feature, however, is Smart Dual Tracking. Whenever an object is detected by the fixed camera, the second camera will automatically rotate and keep the object in frame until it's out of view, extending the camera's overall field-of-view well beyond the 169-degrees of the stationary lens. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/1KD2MYkXbw4" allowfullscreen></iframe></div></div><p>In my specific case, that means that if someone were to enter my backyard and continue towards my shed, the rotating camera is able to follow them without issue. With a single camera, I'd be at the mercy of its range and just hope that another camera would cover the blind spot. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/JpveZgIfSnA" allowfullscreen></iframe></div></div><p>There's a catch, though. When motion is detected at the end of the fixed camera's range, the pan & tilt camera isn't always fast enough to rotate over to follow it. I mostly noticed it when someone would throw something in our trash bin, which would trigger a motion event and cause the camera to rotate. However by the time the camera got there, the person was no longer present and there was nothing for it to follow. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z8qgv4yZQFzgBx4gp2i7RH" name="TP-Link-Tapo-C675D-vendor--5" alt="TP-Link Tapo C675D security camera mounted to a house" src="https://cdn.mos.cms.futurecdn.net/Z8qgv4yZQFzgBx4gp2i7RH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>I noticed a similar issue when testing Patrol Mode, which lets you set four distinct spots within the camera's path for it to monitor in set intervals. Which means, the Pan & Tilt camera can be looking in the complete opposite direction of the fixed lens for an extended amount of time. When a motion event is detected and the camera needs to rotate all the way around, oftentimes the object is no longer visible and the second camera missed it altogether. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-ai-functions"><span>TP-Link Tapo C675D Kit: AI functions</span></h3><p>On-device AI features are just a fancy way of saying the cameras have object detection, which includes the ability to alert you of basic motion, people, pets and vehicles. Offloading AI features to Tapo's Aireal service in the cloud will get you event summaries, facial recognition, and more detailed alerts. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="RJKdMMXHvPVthQSG6GpQXn" name="TP-Link-Tapo-C675D-screenshot-6" alt="Screenshot from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/RJKdMMXHvPVthQSG6GpQXn.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>So, there's an option for privacy enthusiasts and for those who don't mind giving up some privacy (and cash, for the added subscription cost detailed below) for more in-depth video analysis. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="hVeg2FL5u3TNAcbmdAFcVn" name="TP-Link-Tapo-C675D-screenshot-5" alt="Screenshot from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/hVeg2FL5u3TNAcbmdAFcVn.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I installed the camera in an area that oversees where my daughter parks her car, along with a portion of our backyard that people can drive into when a gate is open. As such, there's a car parked in its field of view most of the time, which I found confused Tapo's AI features. Whenever a car was detected, be it driving in the road behind the parked car, or a neighbor entering/leaving their driveway, I'd get an alert that a silver SUV had entered my driveway. Sometimes I received alerts that multiple cars had entered the driveway, when really it was a neighbor pulling into theirs, while my daughter's car remained stationary. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="y8nXEmkDCvWh8eN8ucDLan" name="TP-Link-Tapo-C675D-screenshot-4" alt="Screenshot from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/y8nXEmkDCvWh8eN8ucDLan.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>After a few days of leaving the activity zones set to the full field of view for both cameras, I restricted the fixed camera's activity zone to exclude my neighbors yard, the street, and beyond. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="QuLnaQ6awCjLZWKDW5TRhn" name="TP-Link-Tapo-C675D-screenshot-3" alt="Screenshots from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/QuLnaQ6awCjLZWKDW5TRhn.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Annoying? You bet. But it's also a testament to the extended motion detection distance that the C675D is capable of. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-battery-life"><span>TP-Link Tapo C675D Kit: Battery life</span></h3><p>The C675D includes a 10,000 mAh battery that TP-Link says should last up to three months on a charge — this obviously depends on how active the camera is, and how often it uses its spotlights. With the solar panel, though, I have yet to see the camera’s battery drop significantly in the time I’ve had it installed.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="5A4eQ9B8UGSwM7kXguA2fn" name="TP-Link-Tapo-C675D-screenshot-2" alt="Screenshots from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/5A4eQ9B8UGSwM7kXguA2fn.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>One of my favorite features in the Tapo app is admittedly nerdy, but something I haven't seen before. When viewing the battery status in the camera's settings page, you get a day-by-day breakdown of several key stats. Data like charge level, battery usage, time of use, number of events detected, and solar energy output.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wmVJeSfMkHYF88MJ5WXwSH" name="TP-Link-Tapo-C675D-vendor--4" alt="TP-Link Tapo C675D security camera mounted to a house" src="https://cdn.mos.cms.futurecdn.net/wmVJeSfMkHYF88MJ5WXwSH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>You can view the stats charted over the last 7 or 30 days, which makes it very easy to see when I removed the street and nearby driveways from the detection zone to prevent excessive alerts. I can also see that after the battery was fully charged, the charge level hasn't dropped below 98 percent over the last couple of weeks. More apps need this level of insight. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-video-storage-and-plans"><span>TP-Link Tapo C675D Kit: Video storage and plans</span></h3><p>Tapo offers three different levels of subscription plans. There’s Cloud, Advanced and Advanced AI. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="w48aKmDr5fiDiLHKCVQARn" name="TP-Link-Tapo-C675D-screenshot-1" alt="Screenshots from the TP-Link Tapo C675D security camera app" src="https://cdn.mos.cms.futurecdn.net/w48aKmDr5fiDiLHKCVQARn.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Cloud is $3.49 per month or $34.99 a year per device, and includes 30 days of cloud storage, snapshot notifications and smart filters. </p><p>Cloud Advanced is $11.99 or $119.99 per month or year, respectively, for unlimited devices. It ups cloud storage to 180 days, also includes snapshot notifications and smart filters, then adds 24/7 video storage. </p><p>Cloud Advanced AI, as the name implies, includes everything in the Cloud Advanced plan for $19.99 or $199.99 per month or year. However, you also gain access to AI Chat, facial recognition, intelligent notifications and intelligent summaries, all powered by Tapo’s Aireal artificial intelligence service. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rDw93kZMjJ4ut5gDCiiPRH" name="TP-Link-Tapo-C675D-vendor--7" alt="TP-Link Tapo C675D security camera mounted to a house" src="https://cdn.mos.cms.futurecdn.net/rDw93kZMjJ4ut5gDCiiPRH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: TP-Link)</span></figcaption></figure><p>The Cloud Advanced plan is slightly more expensive than Ring’s $99.99 multi camera service, but more affordable than Argo’s unlimited camera plan at $17.99 per month. </p><p>However, you don’t have to subscribe to Tapo’s cloud storage plans, thanks to built-in microSD support for cards up to 512GB. Or if you’re going all in on Tapo’s security camera lineup, you can get the $144 <a href="https://www.amazon.com/Tapo-Smart-Central-Devices-Built/dp/B0F77JHSMV/"><u>Tapo H500 Smart Home Central Hub</u></a> to store all of your footage on a local device. </p><h3 class="article-body__section" id="section-tp-link-tapo-c675d-kit-verdict"><span>TP-Link Tapo C675D Kit: Verdict</span></h3><p>The C675D Kit checks nearly every box of what I want in a modern outdoor security camera. It boasts 4K video, two independent cameras in a single housing, local AI combined with local storage, bright spotlights, night vision… the list goes on. </p><p>Suffice to say, the C675D is a big upgrade over the original Ring Spotlight Cam I had installed in this same location for several years now. The video quality is superior, the lights are brighter and the motion detection range dwarfs anything I've ever tested. </p><p>At $229, you're getting two 4K cameras for what's normally the price of one. Combined with the extended range of coverage and feature set, it's hard not to be tempted by the Tapo C675D Kit.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Save yourself $100 or more a year: These security cameras and video doorbells don't require a subscription ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/save-yourself-usd100-a-year-the-5-best-subscription-free-security-cameras</link>
                                                                            <description>
                            <![CDATA[ Subscriptions for video doorbells and security cameras can cost upwards of $100 per year. These cameras are just as good — and don't require a subscription. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">nDkitf2iWLw3bPbBjCSjLh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KFF9dXUASzKqR5SDimTqPS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sun, 10 May 2026 05:45:00 +0000</pubDate>                                                                                                                                <updated>Wed, 20 May 2026 18:01:54 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KFF9dXUASzKqR5SDimTqPS-1280-80.jpg">
                                                            <media:credit><![CDATA[eufy/Wyze/Blink]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[subscription free security cameras]]></media:description>                                                            <media:text><![CDATA[subscription free security cameras]]></media:text>
                                <media:title type="plain"><![CDATA[subscription free security cameras]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KFF9dXUASzKqR5SDimTqPS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Every Prime Day, Black Friday, or other holiday, you’ll often see some of the biggest discounts on security cameras from the likes of Ring, Google, Blink, Arlo, and other well-known companies. You’ll often be able to pick up one of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> or <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">video doorbells</a> for half off their original price, or get a great deal on a bundle.</p><p>But that’s how they get you. You see, these companies can afford to practically give away their devices because they know they’ll be able to hook you into a long-term subscription — because without it, their cameras are practically useless.</p><p>When <a href="https://www.tomsguide.com/computing/online-security/how-did-the-fbi-get-nancy-guthries-google-nest-camera-footage-if-it-was-disabled-and-what-does-it-mean-for-your-privacy">Savannah Guthrie’s mother was abducted</a>, the FBI was only able to get footage from her Nest Doorbell by combing through Google’s servers. That’s because she no longer had a subscription that automatically saved her footage. </p><div  class="fancy-box"><div class="fancy_box-title"></div><div class="fancy_box_body"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' ><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HWkogia7j975igV6xdW7Dj" name="click to unsubscribe logo" caption="" alt="click to unsubscribe logo" src="https://cdn.mos.cms.futurecdn.net/HWkogia7j975igV6xdW7Dj.jpg" mos="" link="" align="" fullscreen="" width="" height="" attribution="" endorsement="" class="pinterest-pin-exclude"></p></div></div><figcaption itemprop="caption description" class=""><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p class="fancy-box__body-text">Welcome to Click to Unsubscribe, a regular column that will show you ways to cut your monthly subscriptions — wherever they might be.</p><p class="fancy-box__body-text">• <a data-analytics-id="inline-link" href="https://www.tomsguide.com/entertainment/streaming-devices/this-usd99-device-let-me-cut-the-cord-but-still-dvr-my-favorite-shows"><strong>This $99 device let me cut the cord but still DVR my favorite shows</strong></a></p><p class="fancy-box__body-text">• <a data-analytics-id="inline-link" href="https://www.tomsguide.com/computing/peripherals/im-ditching-my-icloud-subscription-for-this-backup-drive-and-saving-myself-usd120-a-year-heres-how"><strong>I'm ditching my iCloud subscription for this backup drive</strong></a></p></div></div><p>Once upon a time, companies offered some amount of cloud storage for free. Now, some of the biggest names, such as Arlo and Ring, won’t let you store any video in the cloud unless you pay up every month. </p><p>Those costs can add up. Even some of the least expensive plans start at around $5 per month, but I would venture to guess that the most popular plans cost around $10 per month, or around $100 a year. </p><p>That might not seem like a lot, but when you’re already paying subscriptions for the <a href="https://www.tomsguide.com/us/best-streaming-video-services,review-2625.html">best streaming services</a>, why pay for something you don’t have to?</p><p>Fortunately, there are a few companies that offer alternatives. </p><h3 class="article-body__section" id="section-blink"><span>Blink</span></h3><p>This Amazon-owned company makes some very good, and very affordable indoor and outdoor cameras. While its feature set isn’t as strong as others, its battery-powered cameras have excellent battery life. </p><p>They communicate with a small central hub called the Sync Module, which, depending on the model you get, has either a USB port or microSD card slot; plug in your storage medium of choice, and it will save your video.</p>        <div class="featured_product_block featured_block_hero" data-id="0fa5ffbc-3b98-4149-a2a5-65f43d6188a7">            <a href="https://www.amazon.com/dp/B0F968JH9R" data-model-name="Outdoor 4" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.33%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/y7KXxcMKvbBfvKJuwwReuE.jpg" alt="Blink outdoor 4"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Outdoor 2K+</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="05d17688-be09-43ce-8067-4a4b34de1269">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:99.89%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/VNRcfpgvkC9JZAtX3YHmV7.jpg" alt="Blink Battery Doorbell 2K+"></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Battery Doorbell 2K+</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="196aedd1-89e6-46c6-a796-5092d3761308">            <a href="https://www.amazon.com/All-new-Blink-Sync-Module-XR/dp/B0B198XD6X" data-model-name="Sync Module XR" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/5u7eazVif3GroPeYXf9wML.jpg" alt="Blink Sync Module XR"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Blink</div>                                        <div class="featured__title">Sync Module XR</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-eufy"><span>Eufy</span></h3><p>Eufy’s cameras and video doorbells have either storage built in, or come with a microSD card slot so you can save footage locally. However, its devices can also be paired with Eufy’s <a href="https://www.tomsguide.com/reviews/eufy-edge-security-system-review">Homebase 3</a>, which has 16GB of onboard storage, but lets you save up to 16TB of video (you’ll have to buy the extra drive yourself, though). </p><p>The Homebase creates its own Wi-Fi network to connect directly to other Eufy devices, so that if your main Wi-Fi network goes down, it will still be able to save video. In addition, the Homebase has AI built in, so it can recognize people, pets, and vehicles, as well as familiar faces. </p>        <div class="featured_product_block featured_block_hero" data-id="5c71062e-ceaa-49fe-b085-f6ee23d7e21a">            <a href="https://www.amazon.com/eufy-Security-Doorbell-Uninterrupted-Rechargeable/dp/B0DDTSXJDV?" data-model-name="Security Video Doorbell E340" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/D5c6RCPJ9eHFERfz2iGq6i.jpg" alt="Eufy E340"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>eufy </div>                                        <div class="featured__title">Security Video Doorbell E340</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="1bb42d06-4a14-42e0-a0b4-f9ea3b99eb2c">            <a href="https://www.amazon.com/eufy-Security-Wireless-Surveillance-Compatible/dp/B0CCYP6KFM?" data-model-name="SoloCam S340" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:139.19%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/4k94FxiQPB2xgEEjRZ5M8C.jpg" alt="eufy , SoloCam S340"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>eufy </div>                                        <div class="featured__title">SoloCam S340</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="e91e096a-4b95-475c-a603-8ab3a0d45e7d">            <a href="https://www.amazon.com/eufy-Security-Expandable-Compatibility-Encryption/dp/B0BZCCB56G/" data-model-name="Homebase 3" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.13%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/UaUy9jCCtX7245jyU7wthS.jpg" alt="Eufy, Homebase 3"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Eufy</div>                                        <div class="featured__title">Homebase 3</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-google-nest"><span>Google Nest</span></h3><p>The first is Google, which offers either three or six hours of cloud storage for free depending on the product, which isn’t a lot, but it’s something. The catch is that you have to be aware so that you can download that footage before it disappears. For instance , if something happens in the middle of the night and you don’t wake up, the video will be gone by the morning.</p><p>So, while this is a good option, it's not the best if you want to save video longer-term without paying an extra fee.</p>        <div class="featured_product_block featured_block_hero" data-id="dd73cb97-f9fb-424b-9d7b-0ee0ca0f7526">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/zbMzFhCeW4nVDejaWN5jRC.jpg" alt="Google Nest Doorbell (battery)"></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Google </div>                                        <div class="featured__title">Nest Doorbell (wired 3rd gen)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="8fc35f2b-49ba-4d99-b8d1-072a5d245b7f">            <a href="https://www.amazon.com/dp/B0CFS3K1JB" data-model-name="Nest Cam (battery)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:103.73%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/eFXW5haZrww5tS3taWqgNB.jpg" alt="Google Nest cam (battery)"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Google </div>                                        <div class="featured__title">Nest Cam (battery)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="50dc185a-7ed9-4156-8f05-504f4c5658b9">            <a href="https://www.amazon.com/dp/B0FN7GLKCM" data-model-name="Nest Cam Indoor (wired 3rd gen)" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:100.00%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/s8Enqja2v6Zk84EdFMeYb5.jpg" alt="Google Nest Cam wired"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Google</div>                                        <div class="featured__title">Nest Cam Indoor (wired 3rd gen)</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-tp-link"><span>TP-Link</span></h3><p>Similar to Eufy, TP-Link also offers both on-device storage with its security cameras as well as a central hub that sits in your house and communicates directly with its devices. </p><p>Like Eufy’s hub, adding the Tapo hub to your system gives you the ability for it to recognize familiar faces, so you can more easily filter out people you know. It has 16GB of built-in storage, as well as a 2.5-inch slot should you choose to expand it further. And, it has an HDMI-out port, should you want to view a live feed from your cameras on a TV. </p>        <div class="featured_product_block featured_block_hero" data-id="82a98057-45e9-469f-a1c7-a8e0ed62d7f3">            <div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:137.61%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/xARR2seTcPUVnZDEUgNVpP.jpg" alt="TP-Link Tapo C615F"></p></div>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>TP-Link </div>                                        <div class="featured__title">Tapo C615F</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="9e9a1ec4-cbad-4b72-ada4-21a361638e42">            <a href="https://www.amazon.com/Tapo-Smart-Wireless-Doorbell-Camera/dp/B0F5M75XCV" data-model-name="2K Wireless Smart Video Doorbell" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/9Gm3H7zPYGv3zJ4UGsfHN7.jpg" alt="Tapo 2K wireless video doorbell"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tapo </div>                                        <div class="featured__title">2K Wireless Smart Video Doorbell</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="4c50c1a2-e093-4d6a-acf4-cf243ddbe08b">            <a href="https://www.amazon.com/Tapo-Smart-Central-Devices-Built/dp/B0F77JHSMV/" data-model-name="CentralHub" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:51.60%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/BFDyAxsRfNHxnE9FDQwQeP.jpg" alt="Tapo CentralHub"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Tapo</div>                                        <div class="featured__title">CentralHub</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-wyze"><span>Wyze</span></h3><p>Some of the least expensive cameras and doorbells that we’ve tested come from Wyze; while the quality of the video isn't quite up to par with higher-end cameras, they offer just about everything else you could want. </p><p>Most of Wyze's devices have built-in microSD card slots, so you can save video locally. Wyze also offers a cloud subscription service, should you want a belt-and-suspenders approach. </p>        <div class="featured_product_block featured_block_hero" data-id="e4049144-c3a7-4bee-bea5-ad6da63e1fff">            <a href="https://www.amazon.com/Battery-Doorbell-Wireless-Camera-1536x1536/dp/B0FNMBRJ54/" data-model-name="Battery Video Doorbell" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:150%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/JAhNtBMfNV9ghMYQ4GDgBH.jpg" alt="Wyze, Battery Video Doorbell"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>Wyze</div>                                        <div class="featured__title">Battery Video Doorbell</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="7b341893-ab84-422d-aefb-11a4ba084f7f">            <a href="https://www.amazon.com/Security-Activated-Spotlight-Enhanced-Outdoor/dp/B0CJ9YX7DG/" data-model-name="Cam v4" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:133.33%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/79G5jGHcJnUSR5ibSeoRUC.jpg" alt="Wyze Cam v4"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>WYZE </div>                                        <div class="featured__title">Cam v4</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div>        <div class="featured_product_block featured_block_hero" data-id="cf8c3776-13ea-44dc-8691-c59129209950">            <a href="https://www.amazon.com/WYZE-Floodlight-Security-Customizable-Detection/dp/B0B9TTCVS8/ref=ast_sto_dp_puis?th=1" data-model-name="Floodlight Camera Pro" data-model-brand="" ><div class='product-image-widthsetter'><p class='vanilla-image-block' data-bordeaux-image-check style='padding-top:94.40%';><img style="width: 100%" class="featured_image" src="https://cdn.mos.cms.futurecdn.net/DdTaSiYAjnsdagcpFiAJa4.jpg" alt="Wyze Floodlight Cam Pro"></p></div></a>            <div class="featured_product_details_wrapper">                <div class="featured_product_title_wrapper">                                        <div class='featured__brand'>WYZE </div>                                        <div class="featured__title">Floodlight Camera Pro</div>                                    </div>                <div class="subtitle__description">                                                            <p></p>                </div>                            </div>        </div><h3 class="article-body__section" id="section-how-to-save-video-without-a-subscription"><span>How to save video without a subscription</span></h3><p>The companies that I highlighted allow you to record video locally on the cameras themselves, or to a hub somewhere in your home. There are advantages and disadvantages to both approaches. </p><p><strong>SD card slots</strong></p><p>If you have a camera with an SD card slot, it can continue to record video even if the power or the internet goes out. The downside is that a savvy intruder can simply remove the card (or the camera).</p><p><strong>Home hub</strong></p><p>I personally like the hub approach. In this setup, the camera or doorbell connects wirelessly to a hub in your home, where the footage is saved. In many cases, it’s a direct link, so it won’t be affected by an internet outage, though you’ll need to have the hub on a backup battery if the power goes out. </p><p>This way, you can hide the hub in a safe location in your home, so even if an intruder destroys the camera, you’ll still have the footage. </p><p>The biggest downside to this approach, though, is the higher upfront cost. You not only have to pay for the camera, but for the hub as well. But, depending on your needs, it could pay for itself in as little as two years.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/how-to/how-to-cancel-netflix-au">How to cancel your Netflix subscription</a></li><li><a href="https://www.tomsguide.com/ai/i-asked-chatgpt-which-streaming-services-to-cancel-this-month-then-used-agent-mode-to-do-it">I asked ChatGPT which streaming services to cancel this month — then used Agent mode to do it</a></li><li><a href="https://www.tomsguide.com/entertainment/streaming/i-canceled-all-my-streaming-services-for-a-month-and-relied-on-free-streamers-and-im-not-sure-i-want-to-go-back">I canceled all my streaming services for a month and relied on free streamers — and I’m not sure I want to go back</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 7 security camera blind spots burglars hope you miss ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/7-security-camera-blind-spots-burglars-hope-you-miss</link>
                                                                            <description>
                            <![CDATA[ Learn where not to place security cameras to avoid wasted coverage. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">G3QawXCQW8XS2gxgNDnWjU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 18 Apr 2026 09:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/sUwQW8yCGXFHeksAFjqSxZ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg">
                                                            <media:credit><![CDATA[Reolink]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Reolink home security systems.]]></media:description>                                                            <media:text><![CDATA[Reolink home security systems.]]></media:text>
                                <media:title type="plain"><![CDATA[Reolink home security systems.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Security cameras only work if they’re positioned correctly. Even the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> are ineffective if they’re installed in poor locations, turning what should be protection into expensive decoration that misses critical activity.</p><p>A camera pointed at the sky or blocked by tree branches provides zero deterrent value because experienced criminals recognize these installation failures immediately. Common placement mistakes waste money and create the exact blind spots burglars look for. Here are seven blind spots to avoid when installing security cameras around your home.</p><section class="howto-block">                    <h3>1. Hidden side alleys and back corners</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/wif7gefH2w2u9PHo3L6o6i.jpg"                                        alt="Ring"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/wif7gefH2w2u9PHo3L6o6i.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide / John Velasco)</div></figure>                    <p><p>It feels logical to monitor spots you can't see from windows like dark alleys, blind corners, hidden areas around your property. But burglars don't typically use these routes.</p><p>Many break-ins happen through front doors and through first-floor windows. Burglars use obvious access points, not hidden approaches. <strong>Cameras watching main entrances and visible windows catch more criminal activity than those pointed at obscure corners</strong>.</p><p>If you want coverage of hidden areas, buy multi-camera bundles so you can monitor both obvious entry points and blind spots simultaneously. Don't sacrifice front door coverage to watch a rarely-used side gate — burglars count on homeowners making exactly this mistake.</p></p>                </section><section class="howto-block">                    <h3>2. Behind obstructions</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/NVAHec8q4ZQdSZn9rUZiRR.jpg"                                        alt="Eufy 4G LTE Cam S330 attached to a tree"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/NVAHec8q4ZQdSZn9rUZiRR.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Tree branches, swinging plants, opening doors, and moving pets all create obstructions that block camera views. Burglars notice cameras with obstructed views because they can approach from angles the camera can't see.</p><p><strong>Outdoors, consider seasonal changes</strong>. Bare winter branches won't block a camera but spring foliage might completely obscure the lens, creating a seasonal blind spot burglars exploit during warmer months.</p><p><strong>Indoors, think about door swing paths and pet behavior</strong>. A camera that gets knocked askew by a door or bumped by pets creates unpredictable blind spots. Position cameras where daily household activity won't interfere with coverage or physically move the device.</p></p>                </section><section class="howto-block">                    <h3>3. Pointing through windows</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/26fu6tBqnGctirqx7XKwV6.jpg"                                        alt="Google Nest cam (wired, 3rd gen) on a shelf"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/26fu6tBqnGctirqx7XKwV6.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Indoor cameras placed behind windows to view outside seem cost-effective, but they create multiple problems that burglars recognize as security weaknesses.</p><p><strong>Glass creates glare that blinds cameras when the sun hits at certain angles</strong>. At night, interior lights reflect off glass and wash out outdoor views. A burglar standing outside at night can see into your lit house clearly, but your camera sees only reflected light and captures nothing useful.</p><p><strong>Windows also restrict what cameras can see</strong>. Many windows don't provide angles that capture entry points, driveways, or broad yard views. You end up with expensive equipment recording a narrow, glare-filled slice of outdoor space while missing the driveway approach or side door entirely.</p><p>Buy outdoor-rated cameras for exterior monitoring instead of compromising with indoor models behind glass.</p></p>                </section><section class="howto-block">                    <h3>4. Angled toward the sky</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/h6MeGN6BjDBGTMvqJyKS5M.jpg"                                        alt="A hand puts a microSD card into the Wyze Bulb Cam"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/h6MeGN6BjDBGTMvqJyKS5M.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Wyze)</div></figure>                    <p><p>Cameras with wide fields of view that include significant sky create problems when the sun passes overhead. <strong>Direct sunlight blinds the lens, washes out details, and makes footage unusable during peak daylight hours</strong>.</p><p>Constant sun exposure also damages cameras through UV degradation. Plastic housings become brittle, seals fail faster, and components wear out sooner than shaded cameras.</p><p><strong>Angle cameras downward to focus on areas below the roofline</strong>. Position them where trees, eaves, or structures provide partial shade. This protects equipment and improves image quality by eliminating sky glare.</p></p>                </section><div class="product"><a data-dimension112="88d679d6-7243-43b3-bc8f-b10024fedb6e" data-action="Deal Block" data-label="This model also has head-to-toe video and package detection and can be wired or run on battery power alone. And, it's less than $100. However, the battery is non-removable." data-dimension48="This model also has head-to-toe video and package detection and can be wired or run on battery power alone. And, it's less than $100. However, the battery is non-removable." data-dimension25="$79" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Venetian-Bronze/dp/B0BZWRLRLK/ref=" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="H3eVqKWPE3SxddujA2WrTh" name="Battery Doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/H3eVqKWPE3SxddujA2WrTh.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This model also has head-to-toe video and package detection and can be wired or run on battery power alone. And, it's less than $100. However, the battery is non-removable.<a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Venetian-Bronze/dp/B0BZWRLRLK/ref=" target="_blank" rel="nofollow" data-dimension112="88d679d6-7243-43b3-bc8f-b10024fedb6e" data-action="Deal Block" data-label="This model also has head-to-toe video and package detection and can be wired or run on battery power alone. And, it's less than $100. However, the battery is non-removable." data-dimension48="This model also has head-to-toe video and package detection and can be wired or run on battery power alone. And, it's less than $100. However, the battery is non-removable." data-dimension25="$79">View Deal</a></p></div><section class="howto-block">                    <h3>5. Near heat sources and exhaust vents</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/899Vq72yg9MxaiWXwCZCQL.jpg"                                        alt="Blink Outdoor 4"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/899Vq72yg9MxaiWXwCZCQL.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Future)</div></figure>                    <p><p><strong>Mounting cameras above dryer vents, exhaust fans, fireplaces, or space heaters shortens their lifespan and degrades performance</strong>.</p><p>Heat damages wireless camera batteries, reducing runtime between charges. Exhaust from vents deposits grime on lenses, creating a film that blurs recordings. High temperatures also weaken adhesive mounts, causing cameras to fall and break.</p><p>Keep cameras at least several feet away from any heat source or exhaust vent. <strong>Check that outdoor camera locations don't align with furnace exhaust, dryer vents, or fire pit smoke paths</strong>.</p></p>                </section><section class="howto-block">                    <h3>6. On rough surfaces when using adhesive mounts</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="https://cdn.mos.cms.futurecdn.net/Q3EXg6xB3ZoKVWE4tYWRqC.jpg"                                        alt="Ring Indoor Cam Plus on a shelf"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="https://cdn.mos.cms.futurecdn.net/Q3EXg6xB3ZoKVWE4tYWRqC.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Tom's Guide)</div></figure>                    <p><p>Adhesive strips provide quick installation for lightweight cameras, but they fail on rough surfaces, especially outdoors where temperature fluctuations weaken the bond.</p><p><strong>Stucco, rough wood siding, textured fiber cement, and unfinished wood fences don't provide enough contact area for adhesive to stick reliably</strong>. Cameras mounted on these surfaces fall off during hot summer days or cold winter nights when adhesive loses grip.</p><p>Use adhesive only on smooth, clean surfaces like metal, glass, or painted flat siding. For rough surfaces,<strong> use screw mounts or camera stands</strong> that don't rely on adhesive bonding.</p></p>                </section><section class="howto-block">                    <h3>7. Locations with poor lighting at night</h3>                    <figure>                            <p class="bordeaux-image-check">                                <img    src="http://cdn.mos.cms.futurecdn.net/BtViXe3yV8e5wgNQSzcXmV.jpg"                                        alt="Wyze Cam Floodlight mounted"                                        onerror="this.parentNode.replaceChild(window.missingImage(),this)"                                        data-pin-media="http://cdn.mos.cms.futurecdn.net/BtViXe3yV8e5wgNQSzcXmV.jpg"                                        class="expandable van-old-layout-image">                            </p><div class="credit">(Image: © Wyze)</div></figure>                    <p><p>Cameras need light to record usable footage. Mounting a camera in a dark corner with no ambient light produces black video at night, even if the camera has night vision.</p><p>Infrared night vision works by illuminating areas with invisible light, but it has limited range — typically 20-30 feet for consumer cameras. Beyond that range or in complete darkness, you get unusable footage.</p><p><strong>Install cameras near existing outdoor lights, motion-activated floodlights, or porch lights that illuminate the area you're monitoring</strong>. Better ambient lighting improves both daytime and nighttime footage quality while extending the effective range of camera night vision.</p><p>If adding lighting isn't possible, <strong>choose cameras with built-in spotlights or higher-powered infrared illuminators </strong>that extend night vision range.</p></p>                </section><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-eyqBne"></div>                            </div>                            <script src="https://kwizly.com/embed/eyqBne.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/smart-home/5-things-to-think-about-when-buying-and-installing-an-outdoor-security-camera">5 things to think about when buying and installing an outdoor security camera</a></li><li><a href="https://www.tomsguide.com/how-to/how-to-turn-on-end-to-end-encryption-on-a-ring-video-doorbell">How to turn on end-to-end encryption on a Ring Video Doorbell</a></li><li><a href="https://www.tomsguide.com/phones/how-to-use-your-old-smartphone-as-a-free-security-camera">How to use your old smartphone as a free security camera</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ecobee is changing its security subscriptions — here's how much you'll pay now ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/ecobee-is-changing-its-security-subscriptions-heres-how-much-youll-pay-now</link>
                                                                            <description>
                            <![CDATA[ Ecobee is changing how much it charges monthly for its security systems. Here's how much more you'll have to spend to get professional monitoring. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">sZ8PLiGTfSjvBbKucDxTYK</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/YayJ3PsFQoRSaRz8xv7PP6-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 15 Apr 2026 18:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/YayJ3PsFQoRSaRz8xv7PP6-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ecobee smart doorbell camera]]></media:description>                                                            <media:text><![CDATA[Ecobee smart doorbell camera]]></media:text>
                                <media:title type="plain"><![CDATA[Ecobee smart doorbell camera]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/YayJ3PsFQoRSaRz8xv7PP6-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Like most security companies, Ecobee, which is best known for making one of the <a href="https://www.tomsguide.com/us/best-smart-thermostats,review-2751.html">best smart thermostats</a> (as well as a <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">video doorbell</a> and home security camera), charges a monthly subscription to use all the features of its products. For example, if you want to save footage from its video doorbell, it'll cost you $5 per month.</p><p>Also like many security companies, Ecobee is changing its subscriptions; while pricing remains the same, what you'll get for your money is changing. Here's a look at Ecobee's new pricing tiers and when they'll go into effect.</p><p>Similar to its current offerings, Ecobee is going to offer three tiers:</p><ul><li><strong>Core:</strong> free, built‑in protection</li><li><strong>Plus:</strong> enhanced awareness and alerts for 1 camera</li><li><strong>Advanced: </strong>full‑home coverage for unlimited cameras</li></ul><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Core</strong></p></th><th  ><p><strong>Plus</strong></p></th><th  ><p><strong>Advanced</strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Cost</strong></p></td><td  ><p>Free</p></td><td  ><p>$5/month, $50/year</p></td><td  ><p>$10/month, $100/year</p></td></tr><tr><td class="firstcol " ><p><strong>Motion & Person Detection</strong></p></td><td  ><p>Y</p></td><td  ><p>Y</p></td><td  ><p>Y</p></td></tr><tr><td class="firstcol " ><p><strong>Door & Window sensors</strong></p></td><td  ><p>Y</p></td><td  ><p>Y</p></td><td  ><p>Y</p></td></tr><tr><td class="firstcol " ><p><strong>Person & Package Detection</strong></p></td><td  ><p>N</p></td><td  ><p>1 camera</p></td><td  ><p>Unlimited cameras</p></td></tr><tr><td class="firstcol " ><p><strong>30-day event history</strong></p></td><td  ><p>N</p></td><td  ><p>1 camera</p></td><td  ><p>Unlimited cameras</p></td></tr><tr><td class="firstcol " ><p><strong>Smoke alarm detection</strong></p></td><td  ><p>N</p></td><td  ><p>Y</p></td><td  ><p>Y</p></td></tr><tr><td class="firstcol " ><p><strong>Enhanced Energy Savings</strong></p></td><td  ><p>N</p></td><td  ><p>Y</p></td><td  ><p>Y</p></td></tr><tr><td class="firstcol " ><p><strong>Professional Monitoring add-on</strong></p></td><td  ><p>N</p></td><td  ><p>Y</p></td><td  ><p>Y</p></td></tr></tbody></table></div><p>The biggest change is that professional monitoring will no longer be available as part of the company's $10/month package. </p><p>If you want 24/7 monitoring, which includes professional response to both break-ins and smoke/fire events, it will now cost an extra $10/month. If you want 24/7 monitoring for just smoke detection, it will cost an extra $5/month.</p><p>While the new plans will go into effect immediately, existing customers will be able to maintain their current plans until December 31, 2026, at which point they'll have to choose one of the new plans.</p><p>Obviously, it's a bit of a bummer to lose professional monitoring at such an affordable rate. Now, if you want professional monitoring, it will cost you $20/month total, which brings Ecobee's pricing in line with some of the other major players, such as Ring and Wyze, which also charge $20/month for professional monitoring. </p><p>While neither of those companies have a smart thermostat, they do offer more options when it comes to video doorbells and security cameras, which makes them a better option if you're outfitting your home. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/smart-home/which-security-camera-has-the-best-ai-we-put-six-to-the-test-from-google-ring-blink-and-others-to-find-out">Google vs. Ring vs. Arlo: We put 6 security cameras to the test to find the most accurate AI</a></li><li><a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">Best home security cameras</a></li><li><a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">Best video doorbells</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Blink Video Doorbell (2nd gen) review: A basic, barebones video doorbell ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/blink-video-doorbell-2nd-gen</link>
                                                                            <description>
                            <![CDATA[ If you can live without AI-powered people recognition, the Blink video doorbell is an affordable option for basic security ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">s7AoBw3CCyzStzRisdUis4</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/FYmEFHk7ADDnUZhYCqDEKB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 25 Mar 2026 21:12:07 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Florence Ion ]]></dc:creator>                                                                                                        <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/FYmEFHk7ADDnUZhYCqDEKB-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink Video Doorbell (2nd gen) mounted on a doorframe]]></media:description>                                                            <media:text><![CDATA[Blink Video Doorbell (2nd gen) mounted on a doorframe]]></media:text>
                                <media:title type="plain"><![CDATA[Blink Video Doorbell (2nd gen) mounted on a doorframe]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/FYmEFHk7ADDnUZhYCqDEKB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Blink Video Doorbell (2nd gen): Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Size: </strong>5.1 x 1.85 x 1.44 in.<br><strong>Video resolution: </strong>1440p HD<br><strong>Field of view: </strong>150 degrees horizontal, 150 degrees verticalWi-Fi: 2.4GHz / 802.11 b/g/n<br><strong>Operating temperature:  </strong>-5° to 113° F (-20° to 45° C)<br><strong>Works with: </strong>Alexa</p></div></div><p>The Blink Video Doorbell (2nd gen) may not have some of the advanced features of the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html"><u>best video doorbells</u></a>, but it offers the basics, plus some nice extras — such as head-to-toe video and person detection — for a good, low price. </p><p>The Blink Video doorbell operates on standard AA batteries, which the company says will last for up to two years — much longer than other battery-powered video doorbells. It's a helpful security aid, whether you want to quickly check who is at the door, or need a visual record of who is coming and going while you're out and about. At an ultra-affordable $70, the Blink video doorbell is designed for tight budgets. It offers all the necessary basic features a video doorbell should have, though it’s finicky about drop-in live feeds.</p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-price-and-availability"><span>Blink Video Doorbell (2nd gen) review: Price and availability</span></h3><p>The second-gen Blink Video Doorbell went on sale in 2025, and regularly costs $69. You can get it in either black or white, and it comes with three AA batteries, as well as the Blink Sync Module, which you’ll need to connect the doorbell to your Wi-Fi network.</p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-design"><span>Blink Video Doorbell (2nd gen) review: Design</span></h3><p>The Blink video doorbell is a no-fuss, straightforward smart device, both in aesthetics and functionality. It appears more modern than the now-dated first-generation <a href="https://www.tomsguide.com/us/nest-hello,review-5433.html"><u>Nest Hello</u></a> I've permanently installed out front. Blink sent over the white video doorbell, which contrasts nicely against a banana yellow stucco house exterior, though it's also available in black. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="s6iGVCs9UGPa5guby9KcHE" name="Blink-Video-Doorbell--5" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/s6iGVCs9UGPa5guby9KcHE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>A key part of the Blink video doorbell is the Sync Module Core, which serves as an essential bridge between the doorbell and the Wi-Fi network. This differs from Blink's <a href="https://www.blinksmartvideo.com/product/blink-addon-sync-module-2/"><u>Sync Module 2</u></a> and <a href="https://www.blinksmartvideo.com/product/blink-sync-module-xr-newest-model-system-hub-for-all-blink-devices-go-up-to-400-feet-from-your-home-with-extended-range-for-outdoor-4/"><u>Sync Module XR</u></a>, both of which offer additional benefits for cameras in the ecosystem, such as USB and microSD storage for camera feeds. To store any video with the Blink Video Doorbell, you'll need an active subscription, which starts at $3.99/month or $39.99/year. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8nsdYphk6vwcULqazG9fHE" name="Blink-Video-Doorbell--4" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/8nsdYphk6vwcULqazG9fHE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Alternatively, you can upgrade to the Sync Module XR for $70, which offers local storage via a microSD expansion slot. </p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-installation"><span>Blink Video Doorbell (2nd gen) review: Installation</span></h3><p>Blink's promise that you can set it up in minutes is largely accurate. I installed the app on my mobile device and created an account. Then I placed three lithium AA batteries inside, and the setup process began. </p><p>There was no charging required beforehand, which is typically the standard experience with other battery-powered doorbells, such as the <a href="https://www.tomsguide.com/reviews/nest-doorbell-battery"><u>Nest Doorbell (Battery)</u></a>, which retails for $180, more than twice the price of the Blink video doorbell. The Blink video doorbell is one of the only models on the market that run on alkaline batteries — though lithium-ion batteries will last you far longer.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hfKVReYyJBoV8Kftp2AFHE" name="Blink-Video-Doorbell--3" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/hfKVReYyJBoV8Kftp2AFHE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Hardwiring a door chime to the Blink video doorbell is entirely optional, though if you decide to do so there’s an added benefit of extended battery life, up to two years if you opt for this route. Otherwise, it's about a year on a fresh pair of AAs.</p><p>A virtual door chime feature is available with the Blink Mini and select Alexa devices, but I did not have either installed for testing the video doorbell. I relied on silent push notifications on a Google Pixel 9 Pro, which is how I prefer to receive solicitation of any kind. There are some granular controls available in the Blink mobile app and you can create schedules for arming and disarming the doorbell camera. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="SUGUxAi4mS3B7VePmSCTpB" name="Blink-Video-Doorbell-app-screenshot-1" alt="Screenshot of the Blink Video Doorbell (2nd gen) app" src="https://cdn.mos.cms.futurecdn.net/SUGUxAi4mS3B7VePmSCTpB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The plastic plate that docks the video doorbell is relatively easy to install with just a power drill and two screws. There’s also a wedged mount included in the package for corner doorbell installations. Once the plate is mounted, the video doorbell snaps on and off with a release slot located at the bottom of the device. You can use the included "opening key" or the tip of a flathead screwdriver to pop-off the doorbell for battery replacement.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GVhhiDE6Ap2u2WjsN6DtyD" name="Blink-Video-Doorbell--7" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/GVhhiDE6Ap2u2WjsN6DtyD.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Sync Module Core is the final component for installing the Blink video doorbell. It can be mounted or placed on a piece of furniture that is closest in distance to the door. I hide mine behind a vase in the living room.</p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-video-quality"><span>Blink Video Doorbell (2nd gen) review: Video quality</span></h3><p>Once the doorbell is set up, you’ll see pings pushing through. When someone presses the button or walks past the door, the Blink app sends a notification. You have the option to use two-way talk to chat or broadcast from the doorbell. You can not adjust the sensitivity of motion notifications though you can turn them off entirely.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="yfMdVWmgBuU6YerxWVytwB" name="Blink-Video-Doorbell-app-screenshot-2" alt="Screenshot of the Blink Video Doorbell (2nd gen) app" src="https://cdn.mos.cms.futurecdn.net/yfMdVWmgBuU6YerxWVytwB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The video resolution of the Blink video doorbell’s clips is 1440p. It's not as high resolution as the battery-powered Nest Doorbell, for example, which uses HDR to help produce clearer photos in harsh lighting. However, the field of view is wider at 150 degrees compared to the Nest's 145 degrees. You can see more of the area, though it gets a bit muddy toward the back. You can adjust things like custom motion zones, clip length, night vision, and doorbell ringer volume from the app. The Blink video doorbell works only within Amazon's smart home ecosystem and won't pair with your Apple HomeKit or Google Home setup. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oGFMDkMzymq6saUhbdghBE" name="Blink-Video-Doorbell--2" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/oGFMDkMzymq6saUhbdghBE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Most video doorbells suffer from some latency between when the action happens and when a clip is recorded. I noticed no difference in performance between the affordable Blink video doorbell and my experiences with Google's Nest doorbell lineup, at least not with the button presses. If you want to stream live footage to check on your door, you can peek in at-will using the Blink apps’ Live View feature. What you won’t see is a thumbnail previewing the action, which results in a slight delay between what’s going on and when you log on to the stream. Nest cameras, especially since the Google Home app changeover, offer an immediate live preview. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="DkdQv4JP6t2d8zS9uQMn2C" name="Blink-Video-Doorbell-app-screenshot-3" alt="Screenshot of the Blink Video Doorbell (2nd gen) app" src="https://cdn.mos.cms.futurecdn.net/DkdQv4JP6t2d8zS9uQMn2C.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>At the very least, the video doorbell is quite sensitive to movement. Even the slightest movement of a tree in the wind prompts it to take a "sample shot." But unless you are actively paying for a Blink subscription or have a sold-separately external module installed, there is no clip to reference should something happen. Person Detection is not a free feature, either, and it cannot individually identify faces. Additionally, there’s no package detection, which is a feature available on just about every other video doorbell.</p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-subscription"><span>Blink Video Doorbell (2nd gen) review: Subscription</span></h3><p>There are two subscription tiers for the Blink video doorbell. The Basic plan offers cloud video storage and Person Detection for one device for $4/month or $40/year. The $120/year Blink Plus plan unlocks the same perks, but for an unlimited number of Blink devices, ideal if you're outfitting other areas of your dwelling within the ecosystem. Each purchase of the Blink video doorbell includes a 30-day trial of the Blink Subscription Plus plan, though you can also purchase it in bulk by paying for a year upfront. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="NzWF8e4npFhZTWTtKp4cFE" name="Blink-Video-Doorbell--6" alt="Blink Video Doorbell (2nd gen) mounted on a doorframe" src="https://cdn.mos.cms.futurecdn.net/NzWF8e4npFhZTWTtKp4cFE.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>If you don't subscribe to a Blink subscription plan, the video doorbell is severely limited. It’s basically a glorified motion detector with a camera that you can pop into and two-way talk. It’ll still work as a doorbell chime, but any recording of the person pressing the button remains unsaved if there’s no active subscription (or sold separately module) tied to the device. </p><h3 class="article-body__section" id="section-blink-video-doorbell-2nd-gen-review-verdict"><span>Blink Video Doorbell (2nd gen) review: Verdict</span></h3><p>The Blink video doorbell is a relatively no-frills security solution that offers a reliable drop-in feed for the front door, especially considering its affordable price. However, unless you're paying for an active subscription, the lack of video storage may have you spending more than you bargained for on an accessory like the Sync Module 2 upgrade, which enables local video storage. </p><p>Overall, it's still cheaper than Nest and Amazon's other brand, Ring, both of which require an active subscription for storing and downloading video clips. Another closely priced alternative is TP-Link's Tapo D230S1 Smart Battery Video Doorbell, which retails for $100 and features local video storage built into the unit. Among the best video doorbells, the Blink is a solid option, but there are better alternatives, even at this price.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring launches battery-powered versions of its 2K and 4K video doorbells starting at $99 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/ring-launches-battery-powered-versions-of-its-2k-and-4k-video-doorbells-starting-at-usd99</link>
                                                                            <description>
                            <![CDATA[ Ring has updated all of its battery-powered doorbells with a new design as well as 4K and 2K cameras. Here's a look at all of the new models. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ezehY8tGjUMqDgzKeh8KUh</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Rc4eYmTQ5QsoXuCkjBi9JB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 25 Mar 2026 13:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 25 Mar 2026 17:30:40 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Rc4eYmTQ5QsoXuCkjBi9JB-1280-80.jpg">
                                                            <media:credit><![CDATA[Ring]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Battery Doorbell Pro (2nd gen)]]></media:description>                                                            <media:text><![CDATA[Ring Battery Doorbell Pro (2nd gen)]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Battery Doorbell Pro (2nd gen)]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Rc4eYmTQ5QsoXuCkjBi9JB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last fall, Ring updated its wired video doorbells with a new, sleeker design and more powerful 2K and 4K retinal cameras; now, the company is refreshing its battery-powered doorbells with similar capabilities, so that homeowners who need the flexibility of a non-hardwired device (or merely want a battery backup) will be able to get higher-resolution feeds from their doorstep.</p><p>In total, Ring is launching three new battery-powered doorbells, the least expensive of which is just $99, and it's also refreshing its cheapest video doorbell, the Ring Wired Doorbell, which will cost just $79. </p><p>The naming conventions of the new models — Ring Battery Doorbell Pro (2nd gen), Ring Battery Doorbell Plus (2nd gen) and Ring Battery Doorbell (2nd gen) follows that of the ones they're replacing, so there shouldn't be much confusion over an upgrade path if you're ready for a change.</p><p>Here's the lowdown on each model.</p><h2 id="pricing-and-availability">Pricing and availability</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:55.80%;"><img id="NVkJCCsSFBq8iS3Yzq5aiY" name="Ring Battery Doorbell Plus (2nd gen)" alt="Ring Battery Doorbell Plus (2nd gen)" src="https://cdn.mos.cms.futurecdn.net/NVkJCCsSFBq8iS3Yzq5aiY.jpg" mos="" align="middle" fullscreen="" width="1500" height="837" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ring)</span></figcaption></figure><p>All four Ring doorbells go on sale today (March 25), and will be priced as follows:</p><ul><li><strong></strong><a href="https://ring.com/products/battery-doorbell-pro-2nd-gen" target="_blank" rel="nofollow"><strong>Ring Battery Doorbell Pro (2nd Gen): </strong>$249.99</a></li><li><strong></strong><a href="https://ring.com/products/battery-doorbell-plus-2nd-gen" target="_blank" rel="nofollow"><strong>Ring Battery Doorbell Plus (2nd Gen): </strong>$179.99</a></li><li><strong></strong><a href="https://ring.com/products/battery-doorbell-2nd-gen" target="_blank" rel="nofollow"><strong>Ring Battery Doorbell (2nd Gen):</strong> $99.99</a></li><li><strong></strong><a href="https://ring.com/products/wired-doorbell-2nd-gen" target="_blank" rel="nofollow"><strong>Ring Wired Doorbell (2nd Gen):</strong> $79.99</a></li></ul><h2 id="the-biggest-differences">The biggest differences</h2><div ><table><thead><tr><th class="firstcol empty" ></th><th  ><p><strong>Battery Doorbell Pro (2nd Gen)</strong></p></th><th  ><p><strong>Battery Doorbell Plus (2nd Gen)</strong></p></th><th  ><p><strong>Battery Doorbell (2nd Gen) </strong></p></th></tr></thead><tbody><tr><td class="firstcol " ><p><strong>Price</strong></p></td><td  ><p>$249</p></td><td  ><p>$179</p></td><td  ><p>$99</p></td></tr><tr><td class="firstcol " ><p><strong>Resolution</strong></p></td><td  ><p>4K</p></td><td  ><p>2K</p></td><td  ><p>2K</p></td></tr><tr><td class="firstcol " ><p><strong>Removable battery</strong></p></td><td  ><p>Yes</p></td><td  ><p>Yes</p></td><td  ><p>No</p></td></tr></tbody></table></div><p>Like the <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review">Ring Wired Doorbell Pro (3rd gen)</a>, the Ring Battery Doorbell Pro (2nd gen) will have a 4K Retinal camera, so you'll be able to get the sharpest picture out of the three models. It will also have a removable battery, so you can recharge it without having to remove the entire unit from your front door.</p><p>The Ring Battery Doorbell Plus and Ring Battery Doorbell will both have 2K cameras, similar to the <a href="https://www.tomsguide.com/home/home-security/ring-wired-doorbell-plus-2nd-gen-review">Ring Wired Doorbell Plus (2nd gen)</a>. However, only the Battery Doorbell Plus will have a removable battery. This is similar to the previous generation models, where only the Plus version had a battery that could be removed from the unit.</p><h2 id="a-new-budget-wired-doorbell-too">A new budget wired doorbell, too</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:57.27%;"><img id="9tcmrveBMeBUGPH5G2UNwh" name="Ring Wired Doorbell (2nd gen)" alt="Ring Wired Doorbell (2nd gen)" src="https://cdn.mos.cms.futurecdn.net/9tcmrveBMeBUGPH5G2UNwh.jpg" mos="" align="middle" fullscreen="" width="1500" height="859" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ring)</span></figcaption></figure><p>Ring is also updating its least expensive video doorbell. The <a href="https://www.tomsguide.com/reviews/ring-video-doorbell-wired-review">Ring Wired Doorbell</a> is being replaced with the — you guessed it — Ring Wired Doorbell (2nd gen). This model will have 2K resolution and sell for just $79, making it the most affordable doorbell in the company's lineup. </p><p>In the past, we've been hesitant to recommend this product, because the first-gen Wired Doorbell did not work with a home's existing doorbell chime. Unfortunately, the second-gen model also does not work with built-in chimes, so you'll need to purchase a separate plug-in chime. <a href="https://ring.com/products/wired-doorbell-2nd-gen-chime-3rd-gen-bundle" target="_blank" rel="nofollow">Ring sells a combo of the doorbell and chime for $99</a>.</p><h2 id="outlook">Outlook</h2><p>Ever since Ring released the 4K and 2K video doorbells in the fall, it was only a matter of time until it refreshed the rest of its lineup. The new, sleeker design of the video doorbells will be welcome, considering the company has had the same look since nearly its inception. </p><p>The addition of higher resolution cameras to its entire lineup means that Ring will be able to better compete with the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">best video doorbells</a>, though it should be noted that unlike options from Nest, Wyze, and Eufy, you'll need to sign up for a Ring subscription in order to save video. </p><p>For those already in the Ring ecosystem whose video doorbells are showing their age, this upgrade should have you set for another five years at least.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">We've tested every Ring video doorbell, and this is the one you should get</a></li><li><a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">Best video doorbells</a></li><li><a href="https://www.tomsguide.com/home/smart-home/i-upgraded-to-a-smart-lock-with-a-built-in-screen-and-its-an-absolute-game-changer-for-my-home">I just upgraded to a smart lock with built-in video doorbell camera — and it’s a game changer</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring Indoor Cam Plus review ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/ring-indoor-cam-plus-review</link>
                                                                            <description>
                            <![CDATA[ The Ring Indoor Cam Plus offers great 2K video, but to save anything, you’ll need a subscription. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">raiJCDvsRtETrD82AQEWW3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/vqPYEWT2DuvWtTX2q9X5tC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 19 Mar 2026 18:34:46 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dan Cavallari ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RzBY7zZLXQ8jdC6dtzKdxZ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/vqPYEWT2DuvWtTX2q9X5tC-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Indoor Cam Plus on a shelf]]></media:description>                                                            <media:text><![CDATA[Ring Indoor Cam Plus on a shelf]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Indoor Cam Plus on a shelf]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/vqPYEWT2DuvWtTX2q9X5tC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Ring Indoor Cam Plus: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Price: </strong>$59.99<br><strong>Dimensions: </strong>1.97 x 1.97 x 3.8 inches<br><strong>Connectivity: </strong>Single band wifi, 2.4GHz; WiFi 4; requires min upload speed of 5Mbps<br><strong>Camera resolution: </strong>2K video<br><strong>Field of view: </strong>115 degrees horizontal; 60 degrees vertical<br><strong>Motion detection: </strong>Advanced Motion Detection with Customizable Motion Zones<br><strong>Audio: </strong>Two-way talk with noise cancellatio<br><strong>Siren: </strong>remote activated</p></div></div><p>Having installed the <a href="https://www.tomsguide.com/home/home-security/ring-wired-doorbell-plus-2nd-gen-review"><u>Ring Wired Doorbell Plus</u></a> for a review, it only made sense to expand the Ring ecosystem in and around my home. In that vein, I installed Ring’s Indoor Cam Plus in my garage so I can keep an eye on comings and goings where I store some of my favorite toys, like my motorcycle and bikes. </p><p>It’s an awesome versatility option for the Ring ecosystem and opens up viewing in other areas besides my front yard, which is scoped out by the Ring doorbell. The Indoor Cam Plus offers the same exceptional 2K video as the doorbell — when it works. I had issues with artifacts and cut-outs while using the Indoor Cam Plus, which put a damper on an otherwise convenient device — and lessened its appeal among the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras"><u>best home security cameras</u></a>.</p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-price-and-availability"><span>Ring Indoor Cam Plus review: Price and availability</span></h3><p>The Ring Indoor Cam Plus costs $59.99 and is available for purchase now on Ring’s website. You can choose a single camera, or up to a 4-pack of cameras at check-out, and you can also finance the purchase using Affirm. The camera comes with a 1-year warranty.</p><p>Ring also offers various packages, like the Indoor Cam Plus and a Battery Doorbell for $159.98, or a Spotlight Cam Pro and Indoor Cam Plus combo for $309.98.</p><p>The Indoor Cam Plus is also available at major retailers like Amazon. Combo options will vary depending on which retailer you choose.</p><h3 class="article-body__section" id="section-design"><span>Design</span></h3><p>There’s a lot of cool stuff packed into this very small package. The biggest advantage is Ring’s Retinal Vision 2K video, which boasts lots of clarity and bright color in almost all conditions except full dark. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2r9cKfpNrpHXqBbEX3b9sC" name="Ring Indoor Cam Plus-7" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/2r9cKfpNrpHXqBbEX3b9sC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>When the lights get dim, Ring’s Low Light Sight maintains color and clarity. Then, when the lights are out, you still get a super-clear picture in black and white, somewhat akin to night-vision goggles (minus the green tinge). Regardless of lighting conditions, you can also zoom in up to 4X to pinpoint your view on specific parts of the scene.</p><p>You can set up privacy zones within the scene to prevent the camera from recording specific locations. The swivel mount also helps with this, allowing you to move the camera to a location that works best for you. If all else fails, you can use the included removable lens cover to completely block the lens when you need to.</p><p>Automatic motion detection triggers the camera to record when it senses people or moving objects. This gets saved in your video history (which can vary based on whether you’re using the free app features or the paid subscription). The longest the videos get saved is 180 days.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="ZagE7MCW2UhNg82ZUPoFbB" name="Ring-Indoor-Cam-Plus-screenshot1" alt="Screenshot of the Ring Indoor Cam Plus app" src="https://cdn.mos.cms.futurecdn.net/ZagE7MCW2UhNg82ZUPoFbB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Within the app, you can set up real-time notifications, motion-activated notifications, person and vehicle alerts, video preview alerts, and safety alerts. It’s easy to respond to events as they happen with Live View and Two-Way Talk, the latter of which allows you to speak to anyone in view of the camera right from your phone. If you’re not available, you can even pre-record responses for quick-replies. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="LaBsViyuYrCwsJMTZvErpC" name="Ring Indoor Cam Plus-4" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/LaBsViyuYrCwsJMTZvErpC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Indoor Cam Plus has 2.4GHz connectivity, and it works with iOS and Android. It also works with Alexa, though it is not compatible with other smart home ecosystems like Google. </p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-using-the-ring-indoor-cam-plus"><span>Ring Indoor Cam Plus review: Using the Ring Indoor Cam Plus</span></h3><p>Setting up the Indoor Cam Plus is super easy. I set my camera up in my garage, since this is a highly-trafficked area in my home and I wanted to be able to see the comings and goings. (Usually that’s just video of me puttering around.) I wanted to wall-mount my camera, but the included power cable is very short, which made it impossible to mount the camera high enough for my preferences. Instead, I put it up on a shelf. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Qo3JDHNsbXJ5ZioZ5dveiC" name="Ring Indoor Cam Plus-5" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/Qo3JDHNsbXJ5ZioZ5dveiC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I often do photo shoots in my garage as well. In this case, I prefer to use the included lens cover to ensure visitor privacy. It’s a nice feature that’s easy to use, though if you mount the camera high up on a wall or shelf, you’ll have to get up there frequently to manually turn the lens cover. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="W5jQyRXEgfFTX7JC5EHYWB" name="Ring-Indoor-Cam-Plus-screenshot2" alt="Screenshot of the Ring Indoor Cam Plus app" src="https://cdn.mos.cms.futurecdn.net/W5jQyRXEgfFTX7JC5EHYWB.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Once I had my camera installed, I opened the Live Video feed to check out colors and clarity. Like the Ring doorbell camera, the 2K Retinal video is excellent. It’s clear, the colors come through vibrantly, and even in low light conditions the image quality is excellent. Zooming in all the way (4x) produces some grain and pixelation, which is to be expected, but it’s still remarkably clear for what essentially amounts to security footage.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eKpa6WANUHMY9UQkx5YVqC" name="Ring-Indoor-Cam-Plus-IMG_5670" alt="Ring Indoor Cam Plus still image taken in the light" src="https://cdn.mos.cms.futurecdn.net/eKpa6WANUHMY9UQkx5YVqC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>My garage lights are off when I’m not in there. So being able to view the space clearly in no light is especially important to me. In the dark, the video image quality is still excellent, though you don’t get a color image. It’s like night vision. That said, it’s still very easy to see even smaller objects in the field of view. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6DjsfWxpCYNuu9uCm2b8rB" name="Ring-Indoor-Cam-Plus-IMG_5671" alt="Ring Indoor Cam Plus still image taken in the dark" src="https://cdn.mos.cms.futurecdn.net/6DjsfWxpCYNuu9uCm2b8rB.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Speaking of the field of view, it’s very generous. I can see just about my entire garage, though there are blind spots just below the camera and in extreme angles. I’ve positioned it in such a way that those particular blind spots aren’t relevant. </p><p>I also love being able to set up privacy areas. In a dream world, my garage would be my photography studio, which means I’d have a changing area for clients. This would be an ideal use for the privacy settings, and they’re easy to use and set up in the app. On your video image, the privacy zone presents as a blacked-out shape over the area you wish to hide.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Q3EXg6xB3ZoKVWE4tYWRqC" name="Ring Indoor Cam Plus-6" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/Q3EXg6xB3ZoKVWE4tYWRqC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>You can also set up motion detection zones. These zones will trigger recordings when someone or something enters a specific part of the video’s frame. It’s as easy as setting up a virtual shape on your screen with your finger. </p><p>It integrates nicely into the app and it’s easy to pick and choose which clips are relevant to you.  But, like all Ring products, you’ll have to subscribe to get the most out of the camera. You get a free trial, but it’s a pretty big bummer that you have to pay for an app after buying the product. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/A6NNhMmquss" allowfullscreen></iframe></div></div><p>My only big complaint with the Indoor Cam Plus is the reliability of the video footage. While the video quality has been excellent, occasionally I’ll get artifacts, or complete cut-outs. This might be due to the quality of my Wi-Fi, so be sure you set up your camera where your Wi-Fi signal is strong. That said, I’ve never had Wi-Fi difficulties with any other smart devices, or my computer, in my garage space. So the artifacts and cut-outs were particularly frustrating. </p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-accessories"><span>Ring Indoor Cam Plus review: Accessories</span></h3><p>You can increase the usability of your Indoor Cam Plus with a few key accessories. The one I intend to purchase is the 10ft USB-A to USB-C power cable ($14.99) so I can run my camera in a higher position on the wall. It seems odd that the included power cable is so short to begin with, so it’s a bit of an annoyance that I have to buy an additional accessory for this.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="dWmvgNpWc2RTmXAxtVJ9oC" name="Ring Indoor Cam Plus-3" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/dWmvgNpWc2RTmXAxtVJ9oC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Other accessories are less directly relevant to the Indoor Cam Plus and more relevant if you have other Ring accessories. You can get the Pet Tag ($9.99) and  Reflective Security Stickers ($5.99), for example, or a Chime. The latter usually comes with the Ring Doorbell, but you can always add another for a different part of the house. </p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-subscription-fees"><span>Ring Indoor Cam Plus review: Subscription fees</span></h3><p>Like all of Ring’s other products, you need to pay for a subscription if you want to use most of the Ring Indoor Cam Plus’ features — most notably, saving video. Among the best home security cameras, it’s one of the only companies that doesn’t offer any sort of video history for free.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XmBd6zR72SucfyVzJdasoC" name="Ring Indoor Cam Plus-8" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/XmBd6zR72SucfyVzJdasoC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Ring’s plans start at $5/month, which gets you 180 days of video history, as well as person, Package, and Vehicle Alerts. However, this plan only covers one device. If you want to cover an unlimited number of devices, you’ll need the $10/month plan. And, if you want to access Ring’s AI features — which include such things as more descriptive alerts, and the ability to use natural-language searches — it’ll cost $20/month.</p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-competition"><span>Ring Indoor Cam Plus review: Competition</span></h3><p>The indoor camera market is increasingly large. Ring has perhaps the best name recognition in the market, and the video quality really is exceptional. But if you want integration with other smart home ecosystems beyond Alexa, you’ll have to look elsewhere. Eufy, Arlo, Simlisafe, and Wyze all offer camera alternatives. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="tFCDrKK5ePizSG6g4GdDrC" name="Ring Indoor Cam Plus-2" alt="Ring Indoor Cam Plus on a shelf" src="https://cdn.mos.cms.futurecdn.net/tFCDrKK5ePizSG6g4GdDrC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>One of the strongest alternatives is the TP-Link Tapo, which works with Alexa and Google Assistant. It’s also less expensive than the Ring; you can get a single camera for around $30 or a two-pack for around $60. It offers 2K video, and the option for both local and cloud storage. (You have to pay extra for Ring’s cloud storage.) </p><h3 class="article-body__section" id="section-ring-indoor-cam-plus-review-verdict"><span>Ring Indoor Cam Plus review: Verdict</span></h3><p>The Ring Indoor Cam Plus is a good complement to the Ring ecosystem if you’ve already invested in a Ring doorbell or are willing to shell out the cash for the features behind the app’s paywall. The camera itself pumps out beautiful, sharp video and it’s super easy to zoom in to see what you want to see, even in low light.</p><p>But, I was a bit frustrated with its inconsistent performance, which means you might miss certain important events or visitors in your video history. And like other Ring products, the experience would be much improved without having to shell out extra cash for an app. If you’re in the Ring ecosystem already, the Indoor Cam Plus is worth a look, but otherwise, there are better options among the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras"><u>best home security cameras</u></a>. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I just saw TP-Link’s security camera of the future — and it basically turns your home into Fort Knox  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/i-just-saw-tp-links-security-camera-of-the-future-and-it-basically-turns-your-home-into-fort-knox</link>
                                                                            <description>
                            <![CDATA[ The TP-Link Tapo C665G just might be the world’s smartest security camera with 4K capture, support for WiFi and 4G, an optional bundled solar panel, ridiculously good battery life, and a weatherproof design. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">xHbZDXCrpr6HxfJdJmXi8E</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/LT6ueaUnxKTo7JVMxEDVw4-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Mar 2026 22:08:13 +0000</pubDate>                                                                                                                                <updated>Mon, 02 Mar 2026 22:14:58 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ dan.bracaglia@futurenet.com (Dan Bracaglia) ]]></author>                    <dc:creator><![CDATA[ Dan Bracaglia ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/3Ev8EFrheNxPemMWSBaKcK.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/LT6ueaUnxKTo7JVMxEDVw4-1280-80.jpg">
                                                            <media:credit><![CDATA[Dan Bracaglia/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Close-up of the new TP-Link Tapo C665G smart security camera with connected solar panel at MWC 2026 in Barcelona Spain]]></media:description>                                                            <media:text><![CDATA[Close-up of the new TP-Link Tapo C665G smart security camera with connected solar panel at MWC 2026 in Barcelona Spain]]></media:text>
                                <media:title type="plain"><![CDATA[Close-up of the new TP-Link Tapo C665G smart security camera with connected solar panel at MWC 2026 in Barcelona Spain]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/LT6ueaUnxKTo7JVMxEDVw4-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There are smart security cameras, and then there’s the new TP-Link Tapo C665G. I just checked out the latest home security solution from TP-Link at Mobile World Congress, Europe’s largest tech show, and it pretty much has every peace-of-mind feature I could dream of… and then some. </p><p>Offered in two variations, one with a bundled solar panel and one without, this weatherproof security camera can pan, tilt, track subjects, and much more. Here’s everything you need to know about the new TP-Link Tapo C665G smart security camera. </p><h2 id="tp-link-tapo-c665g-price-and-availability">TP-Link Tapo C665G: Price and availability</h2><p>There’s no word yet on what the new TP-Link Tapo C665G will cost. However, based on the price of prior solar-powered, outdoor camera bundles from the brand, I would expect it to be on the affordable side (under $200), though you’ll need to shell out a little more for cloud storage (~$35 a year) or rely on a MicroSD for storage. TP-Link reps say the camera should begin shipping in the next few months.</p><h2 id="tp-link-tapo-c665g-key-features">TP-Link Tapo C665G: Key features</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4032px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2rhzcHNNypkMPfZ7fM2Ed4" name="TP-Link-Tapo-C665G-03" alt="Close-up of the new TP-Link Tapo C665G smart security camera with connected solar panel at MWC 2026 in Barcelona Spain" src="https://cdn.mos.cms.futurecdn.net/2rhzcHNNypkMPfZ7fM2Ed4.jpg" mos="" align="middle" fullscreen="" width="4032" height="2268" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>While nearly all modern security cameras allow you to check the feed via WiFi, the C665G also supports 4G connectivity. Simply pop in a 4G SIM card (not included) and unlock peace of mind that you’ll be able to check in on your home turf, even when the WiFi is out. </p><p>Video quality is 4K, which should provide more than enough detail for most users. The camera also offers a black-and-white night mode, as well as built-in flood lights for enhanced nighttime viewing.</p><p>Capture is continuous 24 hours a day and seven days a week. To save battery, the camera records at 1 fps unless a subject is detected, at which point the frame rate jumps to a standard 30 fps capture. </p><p>Speaking of subject recognition, the TP-Link Tapo C665G handles all of its AI-powered processing within the device itself, rather than sending it to the cloud. This ensures maximum privacy for your footage. </p><p>According to TP-Link, the subject recognition algorithm is smart enough to discern between people, pets, vehicles, and more. It’s also tuned to avoid false motion alarms, like tree branches swaying in the wind. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:4008px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="F5hugUdyozbotyKHcahM49" name="TP-Link-Tapo-C665G-04" alt="Close-up of the TP-Link Tapo C665G security camera" src="https://cdn.mos.cms.futurecdn.net/F5hugUdyozbotyKHcahM49.jpg" mos="" align="middle" fullscreen="" width="4008" height="2255" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>Battery life is good for up to half a year (assuming ten motion activations a day), but for those wanting to ‘set it and forget it,’ the solar panel bundle is probably the move. Once hooked up, the TP-Link Tapo C665G needs just 45 minutes of sunlight a day for 24 hours of recording power.</p><p>While this might be an issue during the winter months in Seattle, Washington, where I live, and the sun doesn’t shine for weeks upon weeks, I imagine that in most other outdoor locations, it’ll be able to garner enough UV to keep on humming all year long.</p><p>Meanwhile, an IP65 rating ensures ample protection from the elements, while pan, tilting, and zooming functionality all add to the security camera’s versatility.</p><p>Lightweight and mountable with two standard screws, the new TP-Link Tapo C665G is ultimately nothing short of a no-brainer, feature-wise, when it comes to an outdoor smart camera security solution.</p><h2 id="tp-link-tapo-c665g-outlook">TP-Link Tapo C665G: Outlook</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2522px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="WwMsKmp3CPifQySpCaCDaC" name="TP-Link-Tapo-C665G-05" alt="Close-up showing the key features of the TP-Link Tapo C665G outdoor security camera at MWC 2026" src="https://cdn.mos.cms.futurecdn.net/WwMsKmp3CPifQySpCaCDaC.jpg" mos="" align="middle" fullscreen="" width="2522" height="1419" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Dan Bracaglia/Tom's Guide)</span></figcaption></figure><p>TP-Link has been churning out high-performance, well-priced outdoor (and indoor) security cameras for a long time now —  the <a href="https://www.tomsguide.com/home/home-security/tp-link-tapo-c246d-hybridcam-duo-review">TP-Link Tapo C246D</a> is our current pick for the <a href="https://www.tomsguide.com/best-picks/best-outdoor-security-cameras#section-best-dual-camera">best outdoor dual camera solution</a> in 2026 —  and the TP-Link Tapo C665G is a welcome addition to the brand’s portfolio. </p><p>Stay tuned for a full review of the TP-Link Tapo C665G outdoor smart security camera bundle as soon as samples become available. In the meantime, what do you think? Is this a product you’d buy to protect your home, office, or business? Let me know in the comments below. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/computing/online-security/how-did-the-fbi-get-nancy-guthries-google-nest-camera-footage-if-it-was-disabled-and-what-does-it-mean-for-your-privacy">How did the FBI get Nancy Guthrie's Google Nest camera footage if it was disabled — and what does it mean for your privacy?</a></li><li><a href="https://www.tomsguide.com/home/home-security/tp-link-tapo-c615f-kit-review">TP-Link Tapo C615F Kit review</a></li><li><a href="https://www.tomsguide.com/wellness/fitness-trackers/i-just-tried-the-worlds-first-smartphone-for-pets-and-i-cant-wait-to-call-my-dog">I just tried the world’s first smartphone for pets — and I can’t wait to call my dog</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ TP-Link Tapo C615F Kit review ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/tp-link-tapo-c615f-kit-review</link>
                                                                            <description>
                            <![CDATA[ The TP-Link Tapo C615F Kit is a solar powered pan/tilt outdoor security camera that supports offline recording, and offers features that aren’t locked behind a subscription. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">3sWZBS2YksRpUKiTDxJQq3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/uLxEj6u2xX4hBY2cRfhQBX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 11 Feb 2026 20:32:33 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:27 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/uLxEj6u2xX4hBY2cRfhQBX-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A TP Link Tapo C615F security camera mounted to a fence]]></media:description>                                                            <media:text><![CDATA[A TP Link Tapo C615F security camera mounted to a fence]]></media:text>
                                <media:title type="plain"><![CDATA[A TP Link Tapo C615F security camera mounted to a fence]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/uLxEj6u2xX4hBY2cRfhQBX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">TP-Link Tapo C615F Kit: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Video: </strong>2K, 20fps<br><strong>Field of view: </strong>100 degrees<br><strong>Sensor: </strong>3MP<br><strong>Night vision: I</strong>nfrared and color night vision<br><strong>Wireless: </strong>2.4 GHz/5 GHz Wi-Fi 4<br><strong>Weather Resistance:</strong> IP65<br><strong>Power: </strong>10,400mAh battery, integrated solar panel<br><strong>Works with: </strong>Google Home, Alexa</p></div></div><p>Solar-powered security cameras are becoming much more common as a way to get home security without having to worry about power or charging. The TP-Link Tapo C615F Kit is the latest in a series of solar-powered options from the company, but unlike alternatives from the likes of Arlo, it’s also pretty cheap.</p><p>Even better: The Tapo C615F has pan/tilt motion-tracking, a sharp 2K resolution, and doesn’t require a subscription for things such as saving video. However, there are some compromises to be made when compared with some of the premium options among the <a href="https://www.tomsguide.com/best-picks/best-outdoor-security-cameras"><u>best outdoor security cameras</u></a>. Does TP-Link cut too many corners to hit the lower price point? You’ll just have to read the rest of the review to find out.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-price-and-availability"><span>TP-Link Tapo C615F Kit review: Price and availability</span></h3><p>The TP-Link Tapo C615F Kit comes at $99.99, and is available through major retailers including Best Buy and Amazon, as well as directly from the official TP-Link Tapo Store. Currently, it's only available in white, which should blend well with most home exteriors.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-design-and-setup"><span>TP-Link Tapo C615F Kit review: Design and setup</span></h3><p>The C615F's design follows TP-Link's aesthetic for their Tapo camera line, which isn't particularly unique but still looks fine. All of the components have an all-white body, helping make sure they look good together. There are no alternatives to the all-white look, so you'll have to be fine with it -- but it should look fine outside most homes.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="oZUt9oWHJgYDWvYivwiexW" name="TP-Link-Tapo-C615F-Kit-5" alt="A TP Link Tapo C615F security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/oZUt9oWHJgYDWvYivwiexW.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The unit is made up of two parts, and the camera itself kind of looks like two modules. There's the larger floodlight module at the top, under which hangs the camera, which can pan and tilt as needed. Both the camera and solar panel feature IP65 weather resistance, ensuring they can withstand rain and dust without issue.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="sgu3maWYABmnKvmkbuLjwW" name="TP-Link-Tapo-C615F-Kit-6" alt="A TP Link Tapo C615F security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/sgu3maWYABmnKvmkbuLjwW.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The camera and solar panel both connect to a main base plate that serves as the mounting point for the entire system. Installation of all of the pieces was pretty simple, and there are instructions both in the box and in the app. Everything you need to mount the camera and solar panel is in the box. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="riawVqeemP6iG8am4fcDCX" name="TP-Link-Tapo-C615F-Kit-3" alt="A TP Link Tapo C615F security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/riawVqeemP6iG8am4fcDCX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Setting up the camera in the app is equally painless. After mounting, you simply hold down the power button on the bottom of the camera and follow the instructions in the Tapo app. The app immediately recognized the camera and walked me through the connection process without any hiccups.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-video-audio-quality"><span>TP-Link Tapo C615F Kit review: Video & audio quality</span></h3><p>The C615F captures video at a 2K resolution using a 3-megapixel sensor, and I found that video was relatively crisp and detailed, both in good lighting during the day and at night. While some competitors offer higher resolutions, the 2K footage here looks quite good, with clear details that make it easy to identify faces.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Z2RndPSnr4k" allowfullscreen></iframe></div></div><p>The camera offers a 100-degree diagonal field of view, which is only fine — but combined with its pan and tilt feature, it can cover a 360-degree horizontal area and tilt to cover a 130-degree vertical area. Of course if motion occurs outside of the camera sensor’s field-of-view, it won’t know to pan or tilt to track it, so there’s still benefit to a wider view from the camera sensor itself.</p><p>Night vision comes in two forms: color and infrared. The infrared mode can provide visibility up to 32.8 feet. Of course the main reason to buy this camera over some others, though, is the large 800-lumen floodlight. While 800 lumens is somewhat modest compared to competitors that can reach 2,000 lumens or more, I found that it was easily enough to illuminate my backyard effectively. If you find that the floodlight is <em>too</em> bright, you can adjust the brightness in the app.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/QHExm8pIeD4" allowfullscreen></iframe></div></div><p>To be clear, footage captured in infrared mode is going to be slightly more crisp — but the benefits of color night vision, at least in this case, easily outweigh the downsides. Footage generally looked great. The light can be set to activate automatically when motion is detected, on a schedule, or manually through the app.</p><p>Motion detection performed well during testing too, quickly picking up movement and beginning recording without a noticeable delay. The camera can track all activity or be configured to auto-track specific subjects like people, vehicles, and pets, and you can choose settings for each separately. When tracking begins, the camera smoothly follows the subject to keep them centered in frame, then returns to its original position once the subject leaves the area. It did trigger quicker when motion was closer to the camera though – particularly in low light. It kicked in immediately when I exited my back door and walked towards a garden shed in the opposite corner of the backyard to the camera, but didn’t trigger until I was halfway back when I walked the other direction. Some of this can be fixed by tweaking the motion sensitivity settings, so I recommend playing with them a little when you first set up the camera.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/HbGLvPAH6VU" allowfullscreen></iframe></div></div><p>The camera supports "24/7 Capture," but this isn't actually continuous recording. Rather, it's a feature in which the camera takes photos at a pre-set interval, on top of recording whenever an event is detected. </p><p>Two-way audio also worked just fine. My voice came through clearly on the other end when I was using my phone, but understanding responses the other way around, when someone else was talking through my phone, sometimes proved challenging. This could vary a little depending on how far away the person is from the camera. </p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-app"><span>TP-Link Tapo C615F Kit review: App</span></h3><p>The camera works with the TP-Link Tapo app, which is generally well-organized and easy to navigate. There’s a home that shows you a list of your connected devices, though it’s really just a tile view that shows basic information like battery life, and you can’t see a live view straight from that screen.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="GcRN4Co7entF9oBsndPe9W" name="TP-Link-Tapo-C615F-Kit-screenshot-1" alt="Screenshots of the TP Link Tapo C615F security camera app" src="https://cdn.mos.cms.futurecdn.net/GcRN4Co7entF9oBsndPe9W.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>From there you can tap on the camera and access its live feed, plus wider settings for panning and tilting manually, activating an alarm, or turning on the floodlight. You can also jump between pre-set positions, which is handy. </p><p>One of the C615F's better selling points is its subscription-free detection capabilities. The camera can identify and differentiate between people, pets, and vehicles without requiring any monthly fees. You can also configure different motion-tracking settings for different detection zones, allowing the camera to detect vehicles in one area while ignoring them in another.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="paufT4GgVL9QvdeVfCnVzV" name="TP-Link-Tapo-C615F-Kit-screenshot-2" alt="A screenshot of the TP Link Tapo C615F security camera app" src="https://cdn.mos.cms.futurecdn.net/paufT4GgVL9QvdeVfCnVzV.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>There are other features that make it easier to ensure any activity is detected. The Patrol Mode has the camera move between positions on a schedule, somewhat getting around the limitations of the camera’s field of view. You can also schedule timed panoramic videos, and they can be set as many times per day as you want, including different schedules for different days. </p><p>The app doesn't offer generative AI features like some competitors offer. I've found some of these features, like Google's Home Brief and AI-based descriptions, kind of handy -- and I hope TP-Link adds this functionality someday soon. In terms of direct competition, Wyze <em>does</em> offer generative AI features -- but you'll have to pay a subscription fee to access them.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-smart-home-compatibility"><span>TP-Link Tapo C615F Kit: Smart home compatibility</span></h3><p>The C615F supports both Amazon Alexa and Google Assistant, allowing for voice control and integration with existing smart home setups. You’ll still need to use the Tapo app for setup and to access most of the basic settings though. </p><p>Unfortunately, there's no HomeKit support, which will disappoint Apple users looking for native integration with their ecosystem. This limitation means iPhone users will need to rely on the Tapo app rather than the Home app for camera access and control. Maybe Matter will allow for more cameras in Apple Home at some point, but that’s likely to be a few years away even though Matter 1.5 finally adds cameras to the Matter spec.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-battery-power-and-solar-charging"><span>TP-Link Tapo C615F Kit review: Battery power and solar charging</span></h3><p>One of the main advantages to this particular kit, of course, is its power system. The solar panel adds extra bulk, but means that it'll constantly charge up the camera unit, so you'll never really have to worry about power. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="rM66kbsA65coSEmvdMqV7X" name="TP-Link-Tapo-C615F-Kit-4" alt="A TP Link Tapo C615F security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/rM66kbsA65coSEmvdMqV7X.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>TP-Link claims that just 45 minutes of direct sunlight can power the camera for a full day of use. It also claims the battery can last up to 140 days on a single charge, though real-world usage with regular floodlight activation will likely be considerably less. </p><p>I was unable to test the 140-day battery claim in my shorter testing time, but over the course of use the camera always stayed above 90% or so. In fact, out of the box the camera had around 45% charge, but was fully charged by the end of one day. Even during extended cloudy periods, the combination of solar charging and battery capacity means you're unlikely to ever run out of power.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-storage-and-subscription-plans"><span>TP-Link Tapo C615F Kit review: Storage and subscription plans</span></h3><p>One of the things that TP-Link has been good at is offering local storage in its Tapo cameras. This camera has a microSD card slot that supports up to 512GB of storage, which is more than enough for continuous recording without any ongoing costs.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z2rGxj7PKTLE6sEWhZ2nCX" name="TP-Link-Tapo-C615F-Kit-2" alt="A TP Link Tapo C615F security camera mounted to a fence" src="https://cdn.mos.cms.futurecdn.net/Z2rGxj7PKTLE6sEWhZ2nCX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>If you do prefer cloud storage, TP-Link offers the optional Tapo Care subscription service. Pricing runs at $3.49 per month or $34.99 per year for a single device, or $11.99 per month and $119.99 per year for up to 10 devices. At the time of this writing, TP-Link was running discounts on the service for some subscriptions, and I suspect those kinds of discounts aren't uncommon.</p><p>Importantly, the subscription only adds cloud storage and extended video history — all the detection features, motion tracking, and smart alerts work without any subscription. That's not very common these days, and nice to see.</p><h3 class="article-body__section" id="section-tp-link-tapo-c615f-kit-review-verdict"><span>TP-Link Tapo C615F Kit review: Verdict</span></h3><p>The TP-Link Tapo C615F Kit delivers great value in the crowded security camera market. The combination of solar power, 360-degree coverage, built-in floodlight, and subscription-free features creates a solid package that rivals the likes of the $250 Arlo Pro 3 Floodlight (which also has a 2K resolution), at a lower price. Perhaps the closest competitor in terms of price is the Wyze Floodlight v2, which has a brighter floodlight, but doesn't have the pan-tilt features on offer by the Tapo C615F Kit. </p><p>If you're looking for a self-sufficient security camera with advanced features and the option to avoid ongoing subscription costs, the TP-Link Tapo C615F Kit is an excellent option -- especially for those in the Google or Alexa ecosystems, or who don't mind sticking to the Tapo app.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ How did the FBI get Nancy Guthrie's Google Nest camera footage if it was disabled — and what does it mean for your privacy? ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/computing/online-security/how-did-the-fbi-get-nancy-guthries-google-nest-camera-footage-if-it-was-disabled-and-what-does-it-mean-for-your-privacy</link>
                                                                            <description>
                            <![CDATA[ Nancy Gutherie didn’t have a Nest Aware subscription but Google was still able to recover surveillance footage, raising serious concerns about how security cameras could put your privacy at risk. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">4mgUpgQvrbP94G5n8fPzAJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/KzNqctoeJyPX789BxvY9Pn-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 11 Feb 2026 19:44:12 +0000</pubDate>                                                                                                                                <updated>Thu, 12 Feb 2026 18:46:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ anthony.spadafora@futurenet.com (Anthony Spadafora) ]]></author>                    <dc:creator><![CDATA[ Anthony Spadafora ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/z73LEoj7FkUjNG85GcWHtH.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Anthony Spadafora is the managing editor for security and home office furniture at Tom’s Guide where he covers everything from data breaches and malware to password managers and the best way to cover your whole home or business with a strong Wi-Fi signal.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Before joining the team, he spent three years covering cybersecurity and B2B tech for ITProPortal while living in South Korea. After moving back to the US. Anthony joined the TechRadar Pro team where he covered these topics along with VPNs, web hosting, online collaboration software and video conferencing for four years. Anthony also has his ears to the ground and is on the lookout for the next major cyberattack or data breach.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Based in Houston, Texas, Anthony also handles VPN testing for both Tom’s Guide and TechRadar. As someone who has worked from home exclusively since 2018, he has reviewed dozens of standing desks as well as office chairs and has taken a closer look at other essential remote working accessories. As part of these reviews, Anthony frequently builds intricate desk setups which is why he’s such a big advocate for cable management and keeping things organized. When he’s not writing, he can be found tinkering with PCs and game consoles, managing cables and making upgrades to his smart home.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/KzNqctoeJyPX789BxvY9Pn-1280-80.jpg">
                                                            <media:credit><![CDATA[Credit: Nathan Congleton/NBC/Brandon Bell/Getty/Tom’s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Nest footage of Nancy Guthrie suspect next to photo of Savannah and Nancy Guthrie]]></media:description>                                                            <media:text><![CDATA[Nest footage of Nancy Guthrie suspect next to photo of Savannah and Nancy Guthrie]]></media:text>
                                <media:title type="plain"><![CDATA[Nest footage of Nancy Guthrie suspect next to photo of Savannah and Nancy Guthrie]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/KzNqctoeJyPX789BxvY9Pn-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>There’s finally been a breakthrough in the disappearance of Nancy Guthrie after the FBI managed to recover footage from the video doorbell outside her home. However, without an active <a href="https://www.tomsguide.com/us/security-camera-storage-plans-comparison,review-5178.html">Nest Aware</a> subscription, questions have been raised as to how this footage was recovered in the first place and what this means for the privacy of other Nest users.</p><p>The mother of "Today" co-host Savannah Guthrie was reported missing on Sunday, February 1 after being dropped off at her home the evening before. Normally, footage from her video doorbell’s security camera would have been used to look for possible leads. In this case, not only was the power cut to her home before the kidnapping but she also didn’t have a paid plan that would have uploaded any recorded clips to the cloud.</p><p>Yesterday, 10 days after Nancy Guthrie was reported missing, the FBI has released new images from the camera outside her house. Here’s everything you need to know about how this lost footage was recovered and why cloud-based security cameras could be putting your own privacy at risk.</p><h2 id="stored-but-not-saved">Stored but not saved</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="meftzFoMRuF4rvEhP4FHz9" name="TG_Nest-doorbell-app-4.jpg" alt="Nest Doorbell (battery) review" src="https://cdn.mos.cms.futurecdn.net/meftzFoMRuF4rvEhP4FHz9.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Before we get into how the security camera footage was recovered, a bit of background on Nancy Guthrie’s home surveillance system. Instead of having a few of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best outdoor security cameras</a> positioned at key points around her property, the 84-year-old mother relied on a single video doorbell, not for surveillance but as a way for her kids to check that she got home safely and to see when packages and people arrived at her door.</p><p>With only a single camera though, there was no cross-coverage video for law enforcement to use in their investigation. Likewise, as Nancy is a widow that lives in a secluded neighborhood, there weren’t other security cameras nearby to help shine light on what happened. Law enforcement did unsuccessfully try to use <a href="https://www.tomsguide.com/home/home-security/ring-will-help-you-find-a-lost-dog-even-if-you-dont-own-a-ring-camera-with-the-expanded-search-party-feature">Ring’s Neighbors app</a> for additional insights into her disappearance.</p><p>According to the investigation, Nancy had a <a href="https://www.tomsguide.com/reviews/nest-doorbell-battery">Google Nest Doorbell (2nd Gen)</a> that was wireless. Due to this, it didn’t lose power when the suspect disconnected it. Unlike with older wired models that only upload to the cloud, this one has a small amount of on-device flash memory. The Nest Doorbell (2nd Gen) is designed to fall back to local storage when its Wi-Fi connection goes out, which is why it was possible to recover any video at all.</p><div class="see-more see-more--clipped"><blockquote class="twitter-tweet hawk-ignore" data-lang="en"><p lang="en" dir="ltr">New images in the search for Nancy Guthrie: Over the last eight days, the FBI and Pima County Sheriff’s Department have been working closely with our private sector partners to continue to recover any images or video footage from Nancy Guthrie’s home that may have been lost,… pic.twitter.com/z5WLgPtZpT<a href="https://twitter.com/cantworkitout/status/2021281103454072983">February 10, 2026</a></p></blockquote><div class="see-more__filter"></div></div><p>In a <a href="https://x.com/FBIDirectorKash/status/2021281103454072983" target="_blank">post on X</a>, FBI Director Kash Patel confirmed that while the agency and the Pima County Sheriff’s Department had been working closely with private sector partners to recover images or videos from the video doorbell for the past eight days. On Monday, a video of the suspect was recovered from residual data located in Google’s backend systems.</p><p>Even without a Nest Aware subscription, the video doorbell in question saves around three hours of event-based video history for free before it’s deleted. Just like on your computer’s hard drive, when you delete something, it isn’t actually deleted right away. Instead, that data remains there until it’s overwritten. So while the clips from Nancy Guthrie’s video doorbell weren’t saved in the traditional sense, they were stored on Google’s servers pending  permanently deletion by being overwritten.</p><p>Tom’s Guide has reached out to both Google and Nest for more information and we’ll update this story if and when we hear back. However, this whole situation raises serious privacy concerns regarding what is stored and accessible by both law enforcement and the companies themselves.</p><h2 id="a-bird-s-eye-view-but-at-the-cost-of-your-privacy">A bird’s eye view but at the cost of your privacy</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zdT6cYkiwiYhjGxMEd2j8e" name="AI security cameras-1-LEDE" alt="Four home security cameras on an outdoor bench with green bushes in the background" src="https://cdn.mos.cms.futurecdn.net/zdT6cYkiwiYhjGxMEd2j8e.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Whether you live in a house or an apartment, a few of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> are a worthwhile investment. Not only do they let you keep track of packages while <a href="https://www.tomsguide.com/home/home-security/stop-porch-pirates-before-they-strike-with-these-essential-tips-and-devices">deterring porch pirates</a> but they also let you keep an eye on your home and can really come in handy in the event of an emergency or an incident like this one.</p><p>The problem, though, is that once security footage from your home is uploaded to the cloud, law enforcement can request and get access to it. This is the reason why companies like Eufy — which prioritize local over cloud storage — have become more popular in recent years. There are also <a href="https://www.tomsguide.com/home/home-security/checking-out-my-friends-security-cameras-gave-me-serious-fomo-heres-why">closed, hard-wired home security camera systems</a> like those from Reolink which are much harder for others to access.</p><p>Besides the convenience of being able to view your cameras and their footage from anywhere over the cloud, there’s another big reason someone might go with Nest, Ring or similar camera makers with subscription plans: the initial cost. </p><p>You will end up paying more over the long run for security cameras that require a monthly subscription to get access to all their best features, but when you’re shopping for your first security camera after moving into a new house or a break-in, their lower prices can be very enticing. </p><p>For instance, with Amazon’s Ring cameras, they often get heavily discounted during Prime Day or other sales events. They’re also more popular and come with extras like integrations with your existing smart home devices.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uK3Ad9TqN9Xh9aR6yumD9E" name="Reolink PoE.jpg" alt="A Reolink PoE camera mounted to the side of a house" src="https://cdn.mos.cms.futurecdn.net/uK3Ad9TqN9Xh9aR6yumD9E.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Eufy’s security cameras are priced similarly to those from Nest or Ring. However, you will need a local storage device like the company’s <a href="https://www.tomsguide.com/reviews/eufy-edge-security-system-review">HomeBase 3</a> to store and access footage from your cameras. </p><p>As for closed, hardwired security camera systems like Reolink’s, instead of spending $50-$100 per camera, you often buy them in a full set for anywhere from $500 to $1,000 depending on the quality and how many cameras you get. On top of that upfront cost, you will have to <a href="https://www.tomsguide.com/computing/internet/i-thought-wi-fi-was-good-enough-until-i-upgraded-to-a-mesh-router-now-im-wiring-my-whole-home-for-ethernet">hardwire your home</a> to use them which adds to the expense and complexity of a system like this.</p><p>The choice is yours but both approaches have their benefits and downsides. If privacy is your main concern, then a closed, hardwired system might be best. However, if you want the convenience of wireless cameras from a more well-known brand and don’t mind adding another subscription to your list, then a cloud-based system might be a better fit.</p><p>Either way, investing in a few outdoor security cameras is absolutely worth it for the added peace of mind and to deter would-be burglars. But once you start recording video, just know that law enforcement could come knocking on your door asking for video clips if the need arises.</p><div style="min-height: 250px;">                                <div class="kwizly-quiz kwizly-ePjDpO"></div>                            </div>                            <script src="https://kwizly.com/embed/ePjDpO.js" async></script><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/smart-home/the-3-best-places-to-put-a-home-security-camera-and-the-3-worst">The 3 best places to put a home security camera — and the 3 worst</a></li><li><a href="https://www.tomsguide.com/home/smart-home/security-camera-subscription-plan-prices-keep-rising-these-3-cameras-dont-need-them">Security camera subscription plan prices keep rising — these 5 cameras don't need them</a></li><li><a href="https://www.tomsguide.com/home/smart-home/5-things-to-think-about-when-buying-and-installing-an-outdoor-security-camera">5 things to think about when buying and installing an outdoor security camera</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I’ve been using the Wyze Battery Video Doorbell for two weeks, and it’s the best option under $100 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/wyze-battery-video-doorbell-review</link>
                                                                            <description>
                            <![CDATA[ Don't sleep on the Wyze Battery Video Doorbell. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">j8U9kMXMPU5Z2p3sNtrQMC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/JQaPbyzfibjPoTcYyJqiWG-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 09 Feb 2026 22:30:47 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:26 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Jason Cipriani ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/2Sx72WJgiEjz5S92jG2gPT.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/JQaPbyzfibjPoTcYyJqiWG-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Wyze Battery Video Doorbell mounted on a door frame]]></media:description>                                                            <media:text><![CDATA[A Wyze Battery Video Doorbell mounted on a door frame]]></media:text>
                                <media:title type="plain"><![CDATA[A Wyze Battery Video Doorbell mounted on a door frame]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/JQaPbyzfibjPoTcYyJqiWG-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Wyze Battery Video Doorbell: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Camera resolution:</strong> 1536 x 1536. Up to 20 fps in daytime, 15 fps at nighttime<br><strong>Field of view:</strong> 150 x 150-degrees <br><strong>Night vision: </strong>Color Night Vision, 850nm IR Lights <br><strong>Size: </strong>5.71 x 1.85 x 1.14-inches, 7.58 ounces <br><strong>Battery Life: </strong>Up to 6 months with normal use<br><strong>Weather proofing: </strong>IP65 "weather" resistance <br><strong>Wi-Fi: </strong>802.11 b/g/n Wi-Fi 6 at 2.4GHz</p></div></div><p>The Wyze Battery Video Doorbell is the company's third doorbell that doesn't need always-on power, and this latest generation boasts a higher resolution camera, head-to-toe video and a microSD card slot for continuous recording, all for less than $100. And, it features AI-powered person and package detection.</p><p>But how does it compare to the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html"><u>best video doorbells</u></a>? I tested the Wyze Battery Video Doorbell over nearly two weeks, using it to keep an eye on my back porch, and subsequently my dogs, while looking for the return of a gray fox we spotted roaming our yard a few weeks ago. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-price-availability"><span>Wyze Battery Video Doorbell: Price & availability</span></h3><p>Wyze announced the Wyze Battery Video Doorbell in October 2025 and is currently available directly from <a href="https://www.wyze.com/products/wyze-battery-video-doorbell"><u>Wyze</u></a>, <a href="https://www.amazon.com/Battery-Doorbell-Wireless-Camera-1536x1536/dp/B0FNMBRJ54/"><u>Amazon</u></a> and <a href="https://www.bestbuy.com/product/wyze-battery-video-doorbell-black/J3GWC6TPW9"><u>Best Buy</u></a>. </p><p>The Wyze Battery Video Doorbell is the same price and color -- $65.98 and black -- no matter where you buy it. If you plan on using the Wyze Battery Video Doorbell as a wired doorbell with constant power, you'll want to pick up one of <a href="https://www.wyze.com/products/wyze-128gb-and-32gb-microsdhc-card-class-10"><u>Wyze's microSD cards</u></a> to take advantage of its continuous recording capabilities. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-design"><span>Wyze Battery Video Doorbell review: Design</span></h3><p>There's nothing groundbreaking about the design of the Wyze Battery Video Doorbell. It reminds me a lot of any generation Nest Doorbell, only less refined. The front of the case is black, silver along the sides. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="4Qf2X3ux7wsW7zwNWcNkUG" name="Wyze Battery Video Doorbell-4" alt="A Wyze Battery Video Doorbell mounted on a door frame" src="https://cdn.mos.cms.futurecdn.net/4Qf2X3ux7wsW7zwNWcNkUG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The front face has two circles stacked atop the 5.71-inch tall housing. The top circle is the camera, while the bottom circle is the doorbell button that's surrounded by a small light-up ring. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="PrKWm5s75NnP6UiohrRpnG" name="Wyze Battery Video Doorbell-9" alt="Showing the ports on the back of a Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/PrKWm5s75NnP6UiohrRpnG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>On the backside of the doorbell is where you'll find two screws to connect wired power from an existing doorbell, along with a USB-C port for recharging, and a microSD card slot. There are two small rubber coverings that go over the charge port and microSD card slot to keep the doorbell's IP65 weatherproof rating. </p><p>The USB-C port is a welcome addition to any gadget, but even more so a video doorbell that you (hopefully) won't have to charge all that often. By ditching the microUSB port, you no longer have to keep tabs on a charging cable you don't need but every once in a while. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9gfQTT4WvS3dQEGDYDjSbG" name="Wyze Battery Video Doorbell-6" alt="A Wyze Battery Video Doorbell mounted on a door frame" src="https://cdn.mos.cms.futurecdn.net/9gfQTT4WvS3dQEGDYDjSbG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Included in the box is everything you'll need to install the doorbell, which includes a flat mount, a corner mount if you need to angle the doorbell, along with screws, wire nuts, extension wires and a USB-C charging cable. </p><p>Inside the Wyze Battery Video Doorbell is a 6,400 milliamp-hour battery that's partially charged out of the box. Wyze states it takes up to 6 hours to fully charge the battery using a standard 10W USB-C wall adapter. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-installation"><span>Wyze Battery Video Doorbell review: Installation</span></h3><p>After charging the doorbell and connecting it to your Wyze account, the real work begins depending on how you plan on powering the doorbell. The setup process for the doorbell in the Wyze app will walk you through connecting it to your Wi-Fi network, updating the firmware and then the rest of the install. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="8knZhPrkZHwHAb6v2xhKbG" name="Wyze Battery Video Doorbell-5" alt="Video from the Wyze Battery Video Doorbell displayed on a cell phone" src="https://cdn.mos.cms.futurecdn.net/8knZhPrkZHwHAb6v2xhKbG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The installation process itself is simple so long as you're somewhat comfortable with DIY projects and using the doorbell in a wireless fashion. However, if you're going to replace your existing hardwired doorbell with the Wyze Battery Video Doorbell, you'll want to be comfortable with limited electrical work. </p><p>In short, you'll want to have enough confidence to turn off the breaker to your doorbell's power, connect two wires to the back of the Wyze Battery Video Doorbell, and then turn it back on. (The Wyze Battery Video Doorbell is compatible with 12-24V doorbell transformers). </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="2G9Jhn9iYUgrmRZ7A6xUTG" name="Wyze Battery Video Doorbell-3" alt="A Wyze Battery Video Doorbell mounted on a door frame" src="https://cdn.mos.cms.futurecdn.net/2G9Jhn9iYUgrmRZ7A6xUTG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>If that doesn't make sense to you or you find it intimidating, call a handyman. </p><p>Once you've figured out how you're going to power the doorbell, the rest of the process consists of drilling a couple of holes into the mounting surface and using the included screws (along with anchors if appropriate) to secure the doorbell to its mount. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="C78Zq7zJxsJQsxjNRymSfG" name="Wyze Battery Video Doorbell-8" alt="Showing the ports on the back of a Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/C78Zq7zJxsJQsxjNRymSfG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Again, the app walks you through the entire process. For me, it took about 10 minutes from unboxing to having the doorbell installed and sending me alerts. </p><p>One more note about a wired installation if you're connecting the doorbell to your existing chime -- you'll need to purchase and install the $18 <a href="https://www.wyze.com/products/wyze-chime-controller"><u>Wyze Chime Controller</u></a> in order for the doorbell to control the chime. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-video-quality-and-features"><span>Wyze Battery Video Doorbell review: Video quality and features</span></h3><p>One of the upgrades the Wyze Battery Video Doorbell has over its predecessors is that it now captures video at a resolution of 1536p. That's a slight step up from the Wyze Video Doorbell Pro's 1440p resolution. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/J4-rbwIXdic" allowfullscreen></iframe></div></div><p>Better yet, it captures footage with a 150-degree field of view that's big enough to nearly see what's directly under the doorbell and what's high above it, leaving little room for anyone or anything to hide. </p><p>It doesn't see all the way to the floor directly underneath the doorbell. There's a small step underneath where I have it installed on my back porch that's not seen in any pictures or videos until it gets out to the edge of the frame, so if someone were to leave a package there it wouldn't be visible. </p><p>That said, I'm impressed by the wide field of view and overall video quality. There's some pixelation when objects are moving, especially the closer they are to the camera, but it's not a deal breaker. I'm still able to see who or what is being recorded. The video clarity really shines when someone is standing still while they wait for you to answer the door; it looks fantastic. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/ToXz2zJgsFQ" allowfullscreen></iframe></div></div><p>If anything the color quality could be a touch better, with colors often looking washed out or muted, especially during the early part of the day when the sun is shining directly at the doorbell. </p><p>There are two different views available from the Wyze Battery Video Doorbell in the app. There's a standard view that's perfect for seeing who is at your door, and there's also a wide-angle feed that shows the full 150-degree viewing area. I prefer the latter option, but I'm certain others will prefer the more zoomed in view; options are good. </p><p>When someone presses the doorbell's button, instead of getting yet another push notification that's far too easy to ignore, your phone starts ringing as if you're getting a phone call. It's a surefire way to know when someone is at the door. I can't tell you how many times I've heard or seen a Ring alert on my phone and just assumed it was errant motion or a package being delivered, only to later realize that someone actually rang the doorbell. (To be fair, Ring has a similar feature). </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/rp2phLKYE7o" allowfullscreen></iframe></div></div><p>The Wyze Battery Video Doorbell can capture color video at night, or use its IR lights to capture black and white video. I originally set the camera's Night Vision Mode to Auto, assuming it'd switch between the two modes depending on how much light was available, but for nearly two weeks it only captured black and white video. Only after setting the Night Vision Mode to Off did I start to see color video captured at night. Both types of video captured at night look good.</p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-ai-has-entered-your-doorbell"><span>Wyze Battery Video Doorbell review: AI has entered your doorbell</span></h3><p>A few days into testing, Wyze activated its Cam Unlimited Pro plan on my account, which enables the company's Descriptive Alerts feature. </p><p>When enabled, instead of getting an alert that there was motion on your back porch, or that a person was detected, Descriptive Alerts gives you so many more details. For example, it was common to get an alert that there were two dogs playing on my porch or in the grass. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1290px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="ePr6u5TyDNHQRbAcS4kuSF" name="Wyze-Battery-Video-Doorbell-screenshot-1" alt="A screenshot of notifications from the  Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/ePr6u5TyDNHQRbAcS4kuSF.jpg" mos="" align="middle" fullscreen="" width="1290" height="726" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>And so, one sunny afternoon when my wife hung a dress to dry on our back porch, I received a few alerts letting me know that a dress hanging from the roof was blowing in the wind. On another occasion I got an alert that the shadow of the dress was moving. Crazy, right?!</p><p>As a longtime Ring user who hadn't paid attention to features the company rolled out in the last few months, I was quite impressed. So impressed, my camera roll is currently full of screenshots of alerts and their eerily accurate and amusing descriptions. I subsequently enabled Ring's AI features on my account and have to say, Ring's alerts are helpful, but not nearly as descriptive or informative. They're a lot more generic, with alerts saying stuff like "A person is walking on your driveway" without any type of detail. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1290px;"><p class="vanilla-image-block" style="padding-top:56.28%;"><img id="kmTfVx7F47KaHFMZCbHwP3" name="Wyze-Battery-Video-Doorbell-screenshot-3" alt="A screenshot of notifiactions from the Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/kmTfVx7F47KaHFMZCbHwP3.jpg" mos="" align="middle" fullscreen="" width="1290" height="726" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Descriptive Alerts aren't perfect, with the most common mistake I experienced being the alert identifying the wrong color of shirt or jacket I was wearing, sometimes just minutes apart. For example, one day I wore a green hoodie, and the first time I walked by the camera I got an alert saying a person wearing a green jacket walked by. Not five minutes later when I walked by the doorbell again, it said a person wearing a gray jacket walked by. </p><p>If I wasn't home and I saw those alerts without looking at the videos, I would assume more than one person was in my backyard. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1290px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="EzkSfE5zt8eCiPFMPjSpTF" name="Wyze-Battery-Video-Doorbell-screenshot-2" alt="A screenshot of notifications from the  Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/EzkSfE5zt8eCiPFMPjSpTF.jpg" mos="" align="middle" fullscreen="" width="1290" height="725" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>As is the case with all things AI, it's always a good idea to treat descriptive alerts with some skepticism.</p><p>One more AI related gripe: After getting access to Wyze's Friendly Faces feature, I enrolled my own face through a process that's similar to turning on Face ID or Face Unlock and expected to start receiving alerts letting me know I had been seen in the backyard. </p><p>However, only once have I received an alert that indicated the doorbell recognized me while I was standing directly in front of it for an extended amount of time, despite walking past the doorbell a few dozen times. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-video-storage-and-plans"><span>Wyze Battery Video Doorbell review: Video storage and plans</span></h3><p>In order to take full advantage of all the features Wyze has to offer, including Descriptive Alerts, AI video search, 60 day cloud storage and emergency dispatch, you'll need to sign up for its Cam Unlimited Pro subscription at $19.99 a month or $199 a year, covering all of your Wyze cameras. That’s comparable to both Ring and Nest, which also charge the same amount to use their AI features.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="GNUNgeiKMRPmFvmTZGSffG" name="Wyze Battery Video Doorbell-7" alt="Showing the ports on the back of a Wyze Battery Video Doorbell" src="https://cdn.mos.cms.futurecdn.net/GNUNgeiKMRPmFvmTZGSffG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Alternatively, Wyze's Cam Plus subscription service is $2.99 a month or $19.99 a year for a single camera, and includes 14 day cloud history along with smart alerts for people, pets, packages and vehicles. </p><p>For those with more than one Wyze camera, the Cam Unlimited plan will set you back $9.99 a month or $99.99 a year. It includes everything in the Plus plan, with the addition of unlimited cameras and the Friendly Faces feature. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-battery-life"><span>Wyze Battery Video Doorbell review: Battery life</span></h3><p>Wyze estimates the battery will last up to 6 months, in ideal conditions. After two weeks, I can confidently say that 6 months isn't going to happen, even in what I'd consider a medium traffic environment. In two weeks, the battery has gone from 100% to 73%. At that rate, it's going to last close to 5 weeks. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9LGpue8e53P7o9qGx4DKUG" name="Wyze Battery Video Doorbell-2" alt="A Wyze Battery Video Doorbell mounted on a door frame" src="https://cdn.mos.cms.futurecdn.net/9LGpue8e53P7o9qGx4DKUG.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Admittedly, I'm sure part of the issue is just how cold it was outside here in Colorado for that first week of testing, but the second week we've seen unseasonably warm days. </p><h3 class="article-body__section" id="section-wyze-battery-video-doorbell-review-verdict"><span>Wyze Battery Video Doorbell review: Verdict</span></h3><p>At $66, it's hard to find many faults in Wyze Battery Video Doorbell, especially when you look at it in the silo of Wyze's own lineup. The $100 Wyze Video Doorbell Pro includes a wireless chime, but lacks local storage and has a lower video resolution. </p><p>Outside of Wyze's lineup, the <a href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV/"><u>$99 Ring Battery Doorbell</u></a> and <a href="https://www.amazon.com/Blink-Video-Doorbell-Sync-Module-Core-Included-System-Black/dp/B0DGQZ8JZK?th=1"><u>$69 Blink Video Doorbell</u></a> are close competitors when it comes to cost, although both have a lower 1440p resolution. </p><p>Blink's solution uses two AA batteries for an estimated 2 years of battery life, while the Ring Battery Doorbell is nearly a 1:1 match in terms of features (save video quality and local storage) with a higher $4.99 monthly subscription fee for a single camera. </p><p>For someone who isn't already heavily invested in a home security camera platform, the Wyze Battery Video Doorbell's features and performance make a compelling and attractive argument, especially for the price. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring will help you find a lost dog even if you don't own a Ring camera with the expanded "Search Party" feature ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/ring-will-help-you-find-a-lost-dog-even-if-you-dont-own-a-ring-camera-with-the-expanded-search-party-feature</link>
                                                                            <description>
                            <![CDATA[ Ring's "Search Party" feature is now available to non-Ring owners to help find lost dogs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">NDpx4E4bL6xcjYVerqEiHU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 02 Feb 2026 21:01:12 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ scott.younker@futurenet.com (Scott Younker) ]]></author>                    <dc:creator><![CDATA[ Scott Younker ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RZsUpqcJ6Uj2q83oCUwNhQ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Scott Younker is the West Coast Reporter at Tom’s Guide. He covers all the latest tech news, including phones, computing and more. He’s been involved in tech since 2011 covering everything from cameras and swimming pool equipment to the latest gaming consoles and smart TVs. He is on a seemingly never ending hunt to build the easiest to use home media system. &lt;/p&gt;&lt;p&gt;Before Tom’s Guide, Scott worked for publications like &lt;em&gt;Digital Trends, Outdoor Photographer, Dead Beats Panel&lt;/em&gt;, and in a brief detour, &lt;em&gt;America’s Funniest Home Videos&lt;/em&gt;. Yes, he has seen more pratfalls, silly pets and ridiculous home movie fails than is reasonably healthy. &lt;/p&gt;&lt;p&gt;When not writing about the latest devices or advances in chipsets, be sure to ask about Scott about disc golf and sustainability, or just if you’re being cheeky, ask about his noodle arm. If you truly want to get nerdy, bring up board games and his ongoing losing streak. &lt;/p&gt;&lt;p&gt;Scott joined Tom&#039;s Guide in 2024 as the West Coast Reporter. He graduated from the School of Journalism at the University of Oregon with a degree in magazine journalism and a minor in communications. While there he blogged or wrote for several magazines including the Fluxx, Ethos and the Oregon Commentator. He briefly wrote and managed a moderately successful blog focused on web comics. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring doorbell search party feature]]></media:description>                                                            <media:text><![CDATA[Ring doorbell search party feature]]></media:text>
                                <media:title type="plain"><![CDATA[Ring doorbell search party feature]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Last Fall Ring introduced a new <a href="https://www.tomsguide.com/home/home-security/rings-new-search-party-feature-can-help-you-find-your-lost-dog-heres-how-it-works">AI-powered feature dubbed "Search Party"</a> that uses the company's network of doorbell and security cameras to help worried pet owners find their lost dogs. However, you needed to have a Ring camera to access the feature.</p><p>Ring just <a href="https://www.aboutamazon.com/news/devices/ring-search-party-for-dogs-united-states-missing-pets" target="_blank">announced that the feature</a> will be made available to all Ring customers, even those who don't own a Ring camera. According to Ring, the company has helped "bring home more than a dog a day" since it launched.</p><p>Search Party uses AI to find potential matches for lost dogs using footage from your neighbors' cameras. You can report a lost dog in the Ring app, and nearby outdoor cameras will use AI to scan for dogs. If a match is found, the camera owner receives an alert and can choose to share related clips with the missing pet owner. There's also an option to call the neighbor or send a message without sharing their phone number.</p><h2 id="compatible-ring-devices">Compatible Ring devices</h2><ul><li><strong>Doorbells:</strong> All <a href="https://www.tomsguide.com/tag/ring">Ring doorbell</a> models are compatible with Search Party and can participate in lost dog alerts.</li><li><strong>Floodlight Cams:</strong> All models work with the feature to help locate missing pets in your area.</li><li><strong>Spotlight Cams:</strong> All models support Search Party functionality for finding lost dogs.</li><li><strong>Stick Up Cam:</strong> All models are eligible only if explicitly set to "Outdoor" Install Type in Device Settings.</li><li><strong>Outdoor Cam:</strong> All models are eligible only if explicitly set to "Outdoor" Install Type in Device Settings.</li></ul><h2 id="more-to-come">More to come</h2><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/nQMuDtsLv0g" allowfullscreen></iframe></div></div><p>Now you just have to have the Ring Neighbors app to use the feature.</p><p>“Now, pet owners can mobilize the whole community—and communities are empowered to help—to find lost pets more effectively than ever before,” Ring founder Jamie Siminoff said in the announcement. “That’s why we believe it’s so important to make this feature available to anyone who shares a lost dog post in Neighbors."</p><p>The Amazon-owned Ring also announced that it will be committing more than $1 million to equip animal shelters across the U.S. with Ring camera systems and to aid shelters in reuniting lost dogs with owners. Adding shelters to the network is one way the company hopes to help dogs find their people.</p><p>When Search Party was first announced, it was promised that other animals, including cats, would be added at a later date, though that wasn't updated with today's announcement.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/winter-storm-prep-guide">Winter storm preparedness guide — everything you need to know</a></li><li><a href="https://www.tomsguide.com/home/lawn-care/i-spent-a-season-with-the-ecovacs-goat-a3000-robot-lawn-mower-and-its-the-ultimate-time-saver">Is the Ecovacs Goat A3000 worth it? My honest review after four months of testing</a></li><li><a href="https://www.tomsguide.com/home/ikeas-adorable-new-portable-lamp-looks-like-a-sad-giraffe-and-i-want-to-give-it-a-big-hug">IKEA's adorable new portable lamp looks like a sad giraffe, and I want to give it a big hug</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Aqara U400 review: Made for Apple Home ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/aqara-u400-review</link>
                                                                            <description>
                            <![CDATA[ The Aqara U400 offers plenty of unlocking methods and wide smart home support – plus it has UWB for hands-free unlocking. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">TMPgreb2HRJKvaQj9rtTwj</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/bh87bHcUhX2usXJYdYtA69-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 06 Jan 2026 14:00:00 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:21 +0000</updated>
                                                                                                                                            <category><![CDATA[Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/bh87bHcUhX2usXJYdYtA69-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Aqara U400]]></media:description>                                                            <media:text><![CDATA[Aqara U400]]></media:text>
                                <media:title type="plain"><![CDATA[Aqara U400]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/bh87bHcUhX2usXJYdYtA69-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Aqara U400: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Lock type: </strong>Deadbolt<br><strong>Wireless: </strong>Bluetooth, Matter over Thread<br><strong>Number Pad: </strong>Yes<br><strong>Codes: </strong>75<br><strong>ANSI/BHMA rating: </strong>Grade 3<br><strong>Power: </strong>Rechargeable battery (included)</p></div></div><p>Smart locks have gotten progressively more convenient, adding features like fingerprint sensors, palm vein readers, and more app-based controls. These are all well and good, but there's one problem with them -- they all still require you to actively do something. The Aqara Smart Lock U400 changes that equation with ultra-wideband (UWB) support for Apple Home Key, allowing the lock to detect your approach and unlock automatically just by knowing it's you.</p><p>Aqara has carved out a solid reputation among smart home enthusiasts, especially those deep in the Apple ecosystem. The company has been steadily broadening its device compatibility through Matter support, which means its products now play nicely with Google Home, Amazon Alexa, Samsung SmartThings, and Home Assistant. The U400 is Aqara's most feature-packed lock to date. But does UWB live up to its promises as one of the <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html"><u>best smart locks</u></a>?</p><h2 id="aqara-u400-review-price-and-availability">Aqara U400 review: Price and availability</h2><p>The Aqara U400 is now available from the Aqara website, as well as other participating retailers, like <a href="https://www.amazon.com/dp/B0FRS6T6HL?maas=maas_adg_F9D4D047FC637C24812AD8CE63652272_afap_abs&ref_=aa_maas&tag=maas"><u>Amazon</u></a>. It comes at $269.99, and is only available in Black.</p><h2 id="aqara-u400-review-design-and-setup">Aqara U400 review: Design and setup</h2><p>The U400 is relatively sleek and stylish from an aesthetic standpoint, though there's no mistaking it for a traditional deadbolt -- it clearly looks like a smart gadget. That's not necessarily a bad thing, of course. The footprint is larger than a conventional lock, but it should fit in reasonably well with most door designs. The exterior panel keeps the keypad hidden when you're not using it, which helps maintain a cleaner look. A fingerprint sensor sits below the keypad, and a small UWB indicator in the bottom left corner lights up when the lock senses you approaching.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZsgSHGD4xcr8D7gwc33yH9" name="Aqara-U400-2" alt="Aqara U400" src="https://cdn.mos.cms.futurecdn.net/ZsgSHGD4xcr8D7gwc33yH9.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1125" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/ZsgSHGD4xcr8D7gwc33yH9.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Unlike smart locks that retrofit onto your existing deadbolt, the U400 replaces the entire assembly, which means installation takes a bit more effort. The lock works with standard doors, and the exterior keypad has an IP65 water-resistance rating, so it can handle being on a door that faces the elements.</p><p>On the inside, you'll find a removable rechargeable battery, a thumb latch for manual control, and buttons for initial setup, hidden under a cover. Aqara says the battery should last around six months, which isn't terrible, but nothing to write home about either. When the battery eventually dies, you can remove it and charge it via a built-in USB-C port, and if you're gone when it loses power, you can use the USB-C port connected to an external power bank or even your phone to get inside.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cr3Yn3fxgV8PLWjVMpgdW9" name="Aqara-U400-4" alt="Aqara U400 smart lock on door" src="https://cdn.mos.cms.futurecdn.net/cr3Yn3fxgV8PLWjVMpgdW9.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1125" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/cr3Yn3fxgV8PLWjVMpgdW9.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Setting up the U400 is straightforward. The Aqara app guides you through the process step by step, and printed instructions come in the box. After you've got the physical hardware installed, you'll need to configure it on your phone. Since the U400 is a Matter device, you're free to set it up in whatever smart home platform you prefer rather than being stuck with Aqara's software -- though you will need a Thread border router for most features. The lock technically functions over Bluetooth alone, but buying this particular lock for Bluetooth-only use kind of defeats the purpose.</p><p>The lock offers a range of locking and unlocking features, which is nice. It can store up to 50 fingerprints and 75 PIN codes ranging from 6 to 10 digits. It also supports NFC cards if you want to use them -- though you'll need to buy those separately since none come in the box. And, it works with a good ol' fashioned key.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="RCYTpuCoV9YsQou7v89gV9" name="Aqara-U400-3" alt="Aqara U400" src="https://cdn.mos.cms.futurecdn.net/RCYTpuCoV9YsQou7v89gV9.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1125" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/RCYTpuCoV9YsQou7v89gV9.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Unlike other smart locks, which might have a PIN pad as a backup to a fingerprint sensor, it's the fingerprint sensor that's the backup -- and the PIN pad is the backup to the backup. Of course, the PIN pad also comes in handy for things like guest codes, however you can also share Home Key access in Apple Home.</p><h2 id="aqara-u400-review-app">Aqara U400 review: App</h2><p>While you don't have to use the lock with Aqara's app, you'll probably want to download the app to set up things like fingerprints. You can set up codes and guest codes in other smart home apps, but the fingerprint sensor will need to be set up through Aqara.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:59.80%;"><img id="BeMWN2dVbE5YvcSjZwu3d8" name="Aqara-U400-app3" alt="Aqara U400" src="https://cdn.mos.cms.futurecdn.net/BeMWN2dVbE5YvcSjZwu3d8.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1196" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/BeMWN2dVbE5YvcSjZwu3d8.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>For the most part, the app has a clean, easy-to-navigate interface. Managing the lock through the app is simple enough, though if you're already set up in another ecosystem like Apple Home, you'll probably do most of your day-to-day interaction there instead, especially since it also supports features like auto-locking. There is an auto-lock feature in the Aqara app that's supposed to be able to detect when you close your door and lock immediately, which worked most of the time, but sometimes took more than a few seconds when I tested it. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:59.80%;"><img id="2jRrxf8BwMhuC2SaVyDcd8" name="Aqara-U400-app2" alt="Aqara U400 app screenshot" src="https://cdn.mos.cms.futurecdn.net/2jRrxf8BwMhuC2SaVyDcd8.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1196" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/2jRrxf8BwMhuC2SaVyDcd8.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It's a neat idea, but it's worth having the time-based auto-lock feature enabled too, as a backup, even if it means you might occasionally find the door locks on its own when you haven't closed the door yet.</p><p>User management works differently depending on whether you're using Aqara's system or Matter. Through Aqara, you can set up to 100 users with detailed control over admin, standard, and temporary roles. Matter caps you at 20 users with up to 35 passwords of 4 to 8 digits, 35 NFC devices, and 20 UWB devices. For most households, either limit should be plenty.</p><h2 id="aqara-u400-review-connectivity-and-performance">Aqara U400 review: Connectivity and performance</h2><p>The U400 supports Thread with Matter 1.4, Bluetooth 5.2, NFC, and ultra-wideband. That means that it'll work with all major smart home platforms -- however you will need a Thread border router to be able to control most functions of the lock.</p><p>Connectivity held up well in my testing. I installed the lock on my garden shed at the back of my backyard -- an area that usually has pretty weak wireless coverage. Despite the challenging location, the lock performed solidly. It's also worth pointing out that fingerprint and UWB unlocking don't need network connectivity to work. They operate locally regardless of what's happening with your home network.</p><p>The UWB hands-free unlocking worked quite well — honestly better than I expected. The lock detected my approach and unlocked consistently almost every time. There were occasional moments where it took an extra second to register when I only had my Apple Watch and not my phone, but this rarely became an actual problem. Even when that happened, the delay was about the same as the time it would take to use the fingerprint sensor anyway.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:59.80%;"><img id="eiNS4H6MTRoV7gBYJJeJb8" name="Aqara-U400-app1" alt="Aqara U400" src="https://cdn.mos.cms.futurecdn.net/eiNS4H6MTRoV7gBYJJeJb8.jpg" mos="" align="middle" fullscreen="1" width="2000" height="1196" attribution="" endorsement="" class="inline expandable"><a href='https://cdn.mos.cms.futurecdn.net/eiNS4H6MTRoV7gBYJJeJb8.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>That reliability is kind of a big deal. Up until now, smart locks have given you more ways to unlock your door without a physical key, but they've still needed you to do something, or provided clunky workarounds, like geo-fencing that often unlocks the door when you're within a relatively large area. With UWB support, as long as you've got a compatible phone or smartwatch on you, the U400 unlocks without any action on your part whatsoever.</p><p>The other unlock methods worked well too. The fingerprint sensor was quick and accurate. The PIN pad, by comparison, sometimes took a few taps to turn on, but then worked fine. To be fair, I only really used it during initial testing and setup. In actual daily use, I never touched it. Even if UWB completely failed for some reason, the fingerprint sensor would have been my go-to backup, not the keypad. </p><p>Last but not least, there’s NFC. While you won’t get NFC cards in the box, you can still use your phone or watch with Apple Home Key through NFC, which worked well.</p><h2 id="aqara-u400-review-verdict">Aqara U400 review: Verdict</h2><p>The whole promise of smart home technology has always been that your home can work without requiring your active involvement. UWB makes that promise real for smart locks in a way that fingerprint sensors and PIN codes never could, and in a way that's yet to come to other kinds of smart devices in any real way. </p><p>For the time being, while the Aqara U400 works well with any major smart home ecosystem thanks to Matter support, it's best suited for Apple users who can fully leverage the UWB Home Key functionality. If you're not in the Apple ecosystem or don't have a compatible device for hands-free unlocking, there are plenty of fingerprint-enabled smart locks that will serve you nearly as well. But for those who can use it the way it's meant to be used, the U400 makes a serious case for itself as the smart lock to beat for those who don't want to have to manually lock and unlock their door. Sure, it’s a little pricey – but for now, it’s the price you’ll have to pay if you want a lock that supports UWB.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Best smart locks of CES ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/best-smart-locks-of-ces</link>
                                                                            <description>
                            <![CDATA[ The smart locks launched at CES 2026 feature batteries that you'll never have to replace and smarter ways of unlocking your door using your face and palms. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">fjWhvJugQaz5vEP2JRGBzb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/w8zL4mHUPzynpf56usebDM-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 05 Jan 2026 17:00:00 +0000</pubDate>                                                                                                                                <updated>Fri, 09 Jan 2026 15:01:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/w8zL4mHUPzynpf56usebDM-1280-80.jpg">
                                                            <media:credit><![CDATA[Lockin/Ultraloq/Lockly/Eufy/Switchbot]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[smart locks of CES 2026]]></media:description>                                                            <media:text><![CDATA[smart locks of CES 2026]]></media:text>
                                <media:title type="plain"><![CDATA[smart locks of CES 2026]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/w8zL4mHUPzynpf56usebDM-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I’ve been testing the <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html">best smart locks</a> for years, and while there’s been a lot of advancements when it comes to entry methods and design, one thing has stubbornly remained more or less the same: battery life. Every four to six months, I always had to change the batteries in the locks, which isn’t time consuming, but it is annoying, and it generates e-waste. </p><p>That could all be changing. At <a href="https://www.tomsguide.com/tag/ces">CES 2026</a>, companies are introducing smart locks that might never need to be recharged, while others are launching models with long-lasting rechargeable lithium-ion batteries. On top of that, we’re also seeing the Matter standard take over, and newer and smarter facial recognition added, so you may never need to remember a passcode again. </p><p>Here are the smart locks of CES 2026 that really caught our attention.</p><h2 id="lockin-v7-max">Lockin V7 Max</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:62.45%;"><img id="o3CXnpGZDK9pwdNagSgtFf" name="Lockin V7 Max" alt="Lockin V7 Max" src="https://cdn.mos.cms.futurecdn.net/o3CXnpGZDK9pwdNagSgtFf.jpg" mos="" align="middle" fullscreen="" width="2000" height="1249" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Lockin)</span></figcaption></figure><p>Lockin’s newest lock uses what it calls AuraCharge, an optical charging technology that harvests light (natural or artificial), converts it to electricity, and sends it to the lock. </p><p>The lock comes with a separate unit that gets plugged in inside your home. It then beams power to a panel on the lock, which can be as far as 12 feet away.</p><p>In addition, the V7 Max also has vein recognition (palm and finger), 3D facial recognition, and uses cloud-based AI to help identify family members, delivery drivers and others, and send you customized notifications and actions based on their behaviors.</p><p>The lock has two high-definition outer cameras with a wide-angle view and dual 5-inch touchscreens. This Matter-compatible lock works with Google, Apple, Amazon, and Samsung SmartThings.</p><p>Unfortunately for most U.S. consumers, the V7 Max is a mortise-style lock. However, Lockin says that the remote-charging capability is also coming to one of its other deadbolt locks.</p><h2 id="desloc-v150-plus">Desloc V150 Plus</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1080px;"><p class="vanilla-image-block" style="padding-top:56.20%;"><img id="cPrk3PhZGCaXABUJnNCo25" name="Desloc" alt="Desloc V150 Plus" src="https://cdn.mos.cms.futurecdn.net/cPrk3PhZGCaXABUJnNCo25.jpg" mos="" align="middle" fullscreen="" width="1080" height="607" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Desloc)</span></figcaption></figure><p>Desloc’s device has a perovskite solar panel, which the company says can help recharge the lock’s 10,000 mAh battery even in shaded entryways and overcast skies — which means you may never have to remove the battery to recharge it. </p><p>In addition, the lock has 3D facial recognition with “liveliness detection,” to help prevent it from being spoofed with a picture. It also has a fingerprint sensor, but the large solar panel on the front of the lock prevents it from having a keypad.</p><p>The lock is BHMA Grade 3 certified and IP65 water resistant,  has built-in Wi-Fi, and will work with Alexa and Google Home. (Surprisingly, it’s one of the only locks that isn’t Matter-compatible. The lock will be available for preorder in the second quarter of 2026; the company says it will cost less than $300, which we’re taking to mean $299. </p><h2 id="ultraloq-bolt-sense">ULTRALOQ Bolt Sense</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1009px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="7gaQ8jfpUXpmWqqWj7zACS" name="ULTRALOQ Bolt Sense palm unlock" alt="ULTRALOQ Bolt Sense palm unlock" src="https://cdn.mos.cms.futurecdn.net/7gaQ8jfpUXpmWqqWj7zACS.jpg" mos="" align="middle" fullscreen="" width="1009" height="568" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ultraloq)</span></figcaption></figure><p>Like Lockin’s V7 Max, the Ultraloq Bolt Sense also uses 3D facial recognition with palm vein authentication to unlock your front door. This dual-method authentication should help prevent false identification, so that you — and only you — can unlock your door. The lock has infrared cameras and low-light technology, so that it will work both day and night. </p><p>If you don’t want to use your face, the lock also has a keypad as well as a traditional keyed lock. The Bolt Sense will pack a 10,000 mAh battery, which should last for several months on a charge. It also has Wi-Fi and is expected to support Matter when it’s released in April of this year. </p><h2 id="aqara-u400">Aqara U400</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ZsgSHGD4xcr8D7gwc33yH9" name="Aqara-U400-2" alt="Aqara U400" src="https://cdn.mos.cms.futurecdn.net/ZsgSHGD4xcr8D7gwc33yH9.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Yes, you can use your face or your palm or your fingerprint to unlock your door, but what if you could unlock it simply by walking up to it? The Aqara U400 uses Ultra Wide Band technology to detect when you — or more specifically, your phone or Apple Watch — is next to your door, and then unlocks it automatically. We <a href="https://www.tomsguide.com/home/home-security/aqara-u400-review">reviewed the Aqara U400</a> before its launch, and found it worked great — we barely even touched the lock after getting it installed. At $269, it’s on the expensive side, but could be worth the price if you often arrive home with your hands full.</p><h2 id="switchbot-lock-vision-pro">SwitchBot Lock Vision Pro</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:62.45%;"><img id="4Pc3txchxUoQXQMygQZNXH" name="Switchbot Vision Pro" alt="Switchbot Vision Pro" src="https://cdn.mos.cms.futurecdn.net/4Pc3txchxUoQXQMygQZNXH.jpg" mos="" align="middle" fullscreen="" width="2000" height="1249" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Switchbot)</span></figcaption></figure><p>Switchbot’s smart locks are also incorporating facial recognition, but the company says that its technology —  3D structured-light facial recognition — means that it can reliably recognize your face even if you’re wearing a hat and glasses. Switchbot says the technology creates 3D maps of your face with other 2,000 infrared projection points, and uses “3D liveness detection” to help prevent spoofing. </p><p>The Vision Pro will also have contactless palm-vein recognition that uses near-infrared sensing, so that it can unlock your door if your hands are slightly wet or dirty. The locks will have built-in Wi-Fi and will be compatible with Matter. They will feature not one, but two batteries — a 10,000mAh rechargeable battery that will last for up to six months, and a backup CR123A battery that will work for up to five years and give you 500 emergency unlocks.</p><h2 id="lockly-affirm">Lockly Affirm</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1449px;"><p class="vanilla-image-block" style="padding-top:55.76%;"><img id="dHJZmN3cJaXSPDi9in7KGY" name="Lockly Affirm Series Deadbolt" alt="Lockly Affirm Series Deadbolt" src="https://cdn.mos.cms.futurecdn.net/dHJZmN3cJaXSPDi9in7KGY.jpg" mos="" align="middle" fullscreen="" width="1449" height="808" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Lockly)</span></figcaption></figure><p>Compared to some of the other smart locks being introduced at CES, Lockly’s Affirm series — a deadbolt and a latch smart lock — aren’t the most groundbreaking, but are the company’s first to have built-in Wi-Fi with Matter. The locks will have a numeric keypad and will also support NFC, allowing you to use either a physical or digital key card to unlock your door. Both models will be available in the second quarter of this year, and are priced at $179.</p><h2 id="eufy-smart-lock-e40">Eufy Smart Lock E40</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.65%;"><img id="c79BU3fkShPRSRZHYG9Hr5" name="eufy Smart Lock E40" alt="eufy Smart Lock E40" src="https://cdn.mos.cms.futurecdn.net/c79BU3fkShPRSRZHYG9Hr5.jpg" mos="" align="middle" fullscreen="" width="2000" height="1133" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Eufy)</span></figcaption></figure><p>The Eufy Smart Lock E40 has a 2K camera with head-to-toe video, and uses 3D facial recognition to unlock your door. This ANSI/BHMA Grade 2 lock will also use AI to detect if people are loitering in front of your door, and can detect such things as packages, too. Like Switchbot’s lock, Eufy’s also has two batteries — a main 15,000 mAh unit, as well as an 800 mAh backup battery. The lock is IP65 water resistant, has Wi-Fi built in, and supports Matter, Apple Home, Amazon Alexa, Google Home Assistant, and Samsung Smart Things. The lock is slated to launch in the first quarter of this year at Home Depot (online and in stores) for $299. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/tvs/ces-2026-could-change-tvs-forever-heres-what-to-expect">CES could change TVs forever — here's what to expect</a></li><li><a href="https://www.tomsguide.com/tag/ces">CES 2026 coverage: Follow us at the show!</a></li><li><a href="https://www.tomsguide.com/tech-events/ces-2026-preview-what-to-expect">CES 2026 preview: What to expect</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 7 security steps to prepare your home before you leave your for the holidays ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/7-security-steps-to-prepare-your-home-before-you-leave-your-for-the-holidays</link>
                                                                            <description>
                            <![CDATA[ Take these seven security steps before you head out for the holidays to ensure your home is protected while you're gone. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">X4rc4DpSyoQe9uxXNPpPeG</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/SyCf9GufFUwdTwNi6NSQwi-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 20 Dec 2025 08:15:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/SyCf9GufFUwdTwNi6NSQwi-1280-80.jpg">
                                                            <media:credit><![CDATA[Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A door opens onto a room with a decorated Christmas tree inside]]></media:description>                                                            <media:text><![CDATA[A door opens onto a room with a decorated Christmas tree inside]]></media:text>
                                <media:title type="plain"><![CDATA[A door opens onto a room with a decorated Christmas tree inside]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/SyCf9GufFUwdTwNi6NSQwi-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>The holidays are nearly here and if you're getting ready to travel you may have quite a lot left on your to-do list. In addition to gifts, wrapping and food, you also have packing, planning and home preparations to get sorted. </p><p>If you already have any of the <a href="https://www.tomsguide.com/us/best-smart-home-devices,review-2008.html">best smart home devices</a> set up, they can help you get prepared. Likewise, if you're ready to add a few extra gadgets to the line up, they can help round out those few scenarios or blind spots you probably haven't even considered. </p><p>Here are seven ways smart home devices can easily assist you in keeping your home safe and secure when you're traveling for the holidays. </p><h2 id="1-update-your-smart-lock-code">1. Update your smart lock code</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="cdt3KsA8yFz62JtR77dGtA" name="Hero.jpg" alt="Lockly Visage shows keypad at night" src="https://cdn.mos.cms.futurecdn.net/cdt3KsA8yFz62JtR77dGtA.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>There are a lot of great reasons to have one of the<a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html"> best smart locks</a> as part of your home security setup – unlike a standard lock, a smart lock can let visitors or service people temporarily access your home, give you access to your front door from your smartphone and help you keep track of who has entered and exited your household. </p><p>During the holidays, you may have a neighbor, friend or family member you ask to check in on your house. You may even have hired someone to come feed your pets. In this case, it's a great time to update your smart lock codes and add new temporaries for people you expect to drop by. </p><p>I always like to give temporary access to a nearby neighbor as well, in case something catastrophic happens (fire or flood). That way, they can ensure first responders are able to get in without having to break down my door.</p><div class="product"><a data-dimension112="bdd429cf-d6fe-4752-96bb-83263e048554" data-action="Deal Block" data-label="best smart locks" data-dimension48="best smart locks" data-dimension25="$97" href="https://www.amazon.com/dp/B0B9HZGHTP?tag=georiot-us-default-20&th=1&ascsubtag=tomsguide-us-3191055365412820477-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1352px;"><p class="vanilla-image-block" style="padding-top:85.28%;"><img id="EgWbKhgwGvws5YkBZk23we" name="Yale.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/EgWbKhgwGvws5YkBZk23we.jpg" mos="" align="middle" fullscreen="" width="1352" height="1153" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>One of our <a href="https://www.tomsguide.com/us/best-smart-locks,review-3352.html" data-dimension112="bdd429cf-d6fe-4752-96bb-83263e048554" data-action="Deal Block" data-label="best smart locks" data-dimension48="best smart locks" data-dimension25="$97">best smart locks</a>, the Assure Lock 2 has a deadbolt and a number pad. It can also open with Apple Watch and is compatible with a wide variety of smart assistants including Alexa, Google Assistant, and Apple Home. When <a href="https://www.tomsguide.com/reviews/yale-assure-lock-2">we tested it</a>, we liked the compact, sleek design, and we found it easy to install. We also found the app and the auto-unlock to work well, and for the price it's a great option (though it doesn't have all the bells and whistles of some competitors.)<a class="view-deal button" href="https://www.amazon.com/dp/B0B9HZGHTP?tag=georiot-us-default-20&th=1&ascsubtag=tomsguide-us-3191055365412820477-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="bdd429cf-d6fe-4752-96bb-83263e048554" data-action="Deal Block" data-label="best smart locks" data-dimension48="best smart locks" data-dimension25="$97">View Deal</a></p></div><h2 id="2-motion-detectors-for-windows-and-doors">2. Motion detectors for windows and doors</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:900px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qmchMzu4wgwX8szuUYFVwS" name="ikea myggbett-door-window-sensor-smart" alt="ikea myggbett-door-window-sensor-smart" src="https://cdn.mos.cms.futurecdn.net/qmchMzu4wgwX8szuUYFVwS.jpg" mos="" align="middle" fullscreen="" width="900" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: ikea)</span></figcaption></figure><p>If you already have a home security system that features a hub, now is the perfect time to add a few <a href="https://www.tomsguide.com/news/5-ways-to-use-motion-sensors-to-supercharge-your-smart-home">smart motion detectors</a> on those windows or doors that could provide easy to access if no one is home. Think windows hidden from view, garage doors, doors in alleyways, or storm doors. </p><p>Motion detectors are often inexpensive and they're also easy to install using their included adhesive strips on the back. When the two parts are separated, you get an alert sent right to your phone. It's easy enough to add them right before you leave town to make sure that access points that could become break-in points aren't being taken advantage of.</p><div class="product"><a data-dimension112="2d140d52-bbc4-467b-b9c9-7a677a9aded7" data-action="Deal Block" data-label="These Ring Alarm contact sensors can be easily placed on doors, windows, garage doors, or fences. They work with a Ring Alarm Base station to alert you when a window or door is opened or shut. They attach with adhesive, making them easy to place anywhere you can stick them, and the battery life lasts up to 3 years." data-dimension48="These Ring Alarm contact sensors can be easily placed on doors, windows, garage doors, or fences. They work with a Ring Alarm Base station to alert you when a window or door is opened or shut. They attach with adhesive, making them easy to place anywhere you can stick them, and the battery life lasts up to 3 years." data-dimension25="$10" href="https://www.amazon.com/Ring-Alarm-Contact-Sensor/dp/B07ZB2QLC2/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GLicmDapVWypg3zrgD79bc" name="41siPqHKP1L._SL1000_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GLicmDapVWypg3zrgD79bc.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>These Ring Alarm contact sensors can be easily placed on doors, windows, garage doors, or fences. They work with a Ring Alarm Base station to alert you when a window or door is opened or shut. They attach with adhesive, making them easy to place anywhere you can stick them, and the battery life lasts up to 3 years. <a class="view-deal button" href="https://www.amazon.com/Ring-Alarm-Contact-Sensor/dp/B07ZB2QLC2/" target="_blank" rel="nofollow" data-dimension112="2d140d52-bbc4-467b-b9c9-7a677a9aded7" data-action="Deal Block" data-label="These Ring Alarm contact sensors can be easily placed on doors, windows, garage doors, or fences. They work with a Ring Alarm Base station to alert you when a window or door is opened or shut. They attach with adhesive, making them easy to place anywhere you can stick them, and the battery life lasts up to 3 years." data-dimension48="These Ring Alarm contact sensors can be easily placed on doors, windows, garage doors, or fences. They work with a Ring Alarm Base station to alert you when a window or door is opened or shut. They attach with adhesive, making them easy to place anywhere you can stick them, and the battery life lasts up to 3 years." data-dimension25="$10">View Deal</a></p></div><h2 id="3-set-smart-thermostats-to-away">3. Set smart thermostats to away</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:970px;"><p class="vanilla-image-block" style="padding-top:60.00%;"><img id="AYb49E9zMYNVzXjt9AT5jM" name="AbjrvFEj7myGdNBsipqxre-970-80.jpg" alt="Nest Learning Thermostat" src="https://cdn.mos.cms.futurecdn.net/AYb49E9zMYNVzXjt9AT5jM.jpg" mos="" align="middle" fullscreen="" width="970" height="582" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If you're heading out for a period of time, don't forget to update the settings on your <a href="https://www.tomsguide.com/us/best-smart-thermostats,review-2751.html">smart thermostat</a> – after all, there's no reason to heat a house when no one is home. Smart thermostats can be controlled with smart assistants or an app, so many of them can be spoken to, or adjusted, from miles away. </p><p>However, many smart thermostats also offer settings like "Vacation" that tell the device you won't be at home, which will not only save energy but start reheating your home a few hours before you arrive back. </p><div class="product"><a data-dimension112="bbf59bee-42ab-45a4-81f7-8347d027e946" data-action="Deal Block" data-label="best smart thermostats" data-dimension48="best smart thermostats" data-dimension25="$228.5" href="https://www.amazon.com/dp/B09XXS48P8?tag=georiot-us-default-20&ascsubtag=tomsguide-us-1267796216133503193-20&geniuslink=true&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1232px;"><p class="vanilla-image-block" style="padding-top:107.31%;"><img id="tKKoUZj5PM3fyKq6QTdpdh" name="Ecobee smart thermostat essential" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tKKoUZj5PM3fyKq6QTdpdh.jpg" mos="" align="middle" fullscreen="" width="1232" height="1322" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Ecobee is one of the <a href="https://www.tomsguide.com/us/best-smart-thermostats,review-2751.html" data-dimension112="bbf59bee-42ab-45a4-81f7-8347d027e946" data-action="Deal Block" data-label="best smart thermostats" data-dimension48="best smart thermostats" data-dimension25="$228.5">best smart thermostats</a> because it can adjust the temperature in a room so that hot or cold spots are evened out, monitor air quality (which means it can act as a smoke alarm), save on heating and cooling costs, alert you to break-in's and even play your favorite Spotify playlists (though when <a href="https://www.tomsguide.com/reviews/ecobee-smart-thermostat-premium">we tested it</a>, we weren't impressed with the sound). It can also sense when doors are left open and pause the heater, and the giant display will show the weather for the whole week. <a class="view-deal button" href="https://www.amazon.com/dp/B09XXS48P8?tag=georiot-us-default-20&ascsubtag=tomsguide-us-1267796216133503193-20&geniuslink=true&th=1" target="_blank" rel="nofollow" data-dimension112="bbf59bee-42ab-45a4-81f7-8347d027e946" data-action="Deal Block" data-label="best smart thermostats" data-dimension48="best smart thermostats" data-dimension25="$228.5">View Deal</a></p></div><h2 id="4-get-smart-lights-or-smart-plugs">4. Get smart lights or smart plugs</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5391px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="HsVZtamoDke5QxjtoPSJ3M" name="Decorating door crop.jpg" alt="Woman decorating front door" src="https://cdn.mos.cms.futurecdn.net/HsVZtamoDke5QxjtoPSJ3M.jpg" mos="" align="middle" fullscreen="" width="5391" height="3032" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>There's no better way to tell when someone is home than if the lights are on – which is exactly why the <a href="https://www.tomsguide.com/us/best-smart-lights,review-6194.html">best smart lights</a> are so popular. There's a wide variety of options for <a href="https://www.tomsguide.com/home/smart-home/3-ways-im-using-smart-bulbs-to-make-my-life-a-bit-easier">smart indoor light bulbs</a> that can be used in lamps and overhead lights to ones that will work in wreaths and Christmas trees to exterior lighting that works all year round.</p><p>We recently reviewed <a href="https://www.tomsguide.com/home/smart-home/govee-permanent-outdoor-lights-prism-review">Govee's Permanent Outdoor Prism Lights</a> which can be securely installed thanks to their new design that features screw holes. The lights themselves don't look strictly seasonal but can be changed to match whatever the theme may be, and can work with over 100 preset scenes. They also work with smart assistants. </p><p>At the same time, smart bulbs can be programmed to turn on and off at a scheduled time through their respective apps or <a href="https://www.tomsguide.com/home/forget-switches-heres-how-to-control-your-lights-with-your-voice">turned on with a digital assistant</a>, So no matter where you are, it looks like you've just gotten home. Bonus if you get a <a href="https://www.tomsguide.com/us/best-smart-plugs,review-4087.html">smart plug</a> for the Christmas tree or a few of the <a href="https://www.tomsguide.com/best-picks/best-outdoor-smart-plugs">best outdoor smart plugs</a> for your exterior decorations as well. </p><div class="product"><a data-dimension112="3d26d9f1-737b-403e-969e-a6c539ef242d" data-action="Deal Block" data-label="Never decorate for the holidays again with these smart permanent outdoor lights. Govee's new Prism light model take things up a notch with three 3 dynamic color zones on each fixture and they also have screw holes for an even more secure installation. Plus, you can cut, slice and extend them to reach even the tallest rooftops." data-dimension48="Never decorate for the holidays again with these smart permanent outdoor lights. Govee's new Prism light model take things up a notch with three 3 dynamic color zones on each fixture and they also have screw holes for an even more secure installation. Plus, you can cut, slice and extend them to reach even the tallest rooftops." data-dimension25="$399" href="https://www.amazon.com/dp/B0FGCZCQMR?tag=georiot-us-default-20&ascsubtag=tomsguide-us-4355492061018118444-20&geniuslink=true&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:92.27%;"><img id="N7HK3RoEn9dXLdiwaBMaMZ" name="Permanent Outdoor Lights Prism (100 feet)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/N7HK3RoEn9dXLdiwaBMaMZ.jpg" mos="" align="middle" fullscreen="" width="1500" height="1384" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Never decorate for the holidays again with these smart permanent outdoor lights. Govee's new Prism light model take things up a notch with three 3 dynamic color zones on each fixture and they also have screw holes for an even more secure installation. Plus, you can cut, slice and extend them to reach even the tallest rooftops.<a class="view-deal button" href="https://www.amazon.com/dp/B0FGCZCQMR?tag=georiot-us-default-20&ascsubtag=tomsguide-us-4355492061018118444-20&geniuslink=true&th=1" target="_blank" rel="nofollow" data-dimension112="3d26d9f1-737b-403e-969e-a6c539ef242d" data-action="Deal Block" data-label="Never decorate for the holidays again with these smart permanent outdoor lights. Govee's new Prism light model take things up a notch with three 3 dynamic color zones on each fixture and they also have screw holes for an even more secure installation. Plus, you can cut, slice and extend them to reach even the tallest rooftops." data-dimension48="Never decorate for the holidays again with these smart permanent outdoor lights. Govee's new Prism light model take things up a notch with three 3 dynamic color zones on each fixture and they also have screw holes for an even more secure installation. Plus, you can cut, slice and extend them to reach even the tallest rooftops." data-dimension25="$399">View Deal</a></p></div><h2 id="5-automate-your-curtains">5. Automate your curtains</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1600px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="3MMhHkDMBYNsnnZJ5WmqQY" name="Roller-Shade_3D_Scenes_Alexa_v2 copy" alt="SwitchBot Roller Shade" src="https://cdn.mos.cms.futurecdn.net/3MMhHkDMBYNsnnZJ5WmqQY.jpg" mos="" align="middle" fullscreen="" width="1600" height="900" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: SwitchBot)</span></figcaption></figure><p>Admittedly, this one might be a little more advanced but if you've already automated the rest of your home it might be time to tackle the curtains. After all, how cool is the idea of being able to open and close your curtains from an app? If your lights come on, and your blinds open and close, your home really gives off the appearance of having people inside. </p><p>Smart blinds aren't as widely available as some other options, but one of the more popular companies is SwitchBot because their devices allow you to swap in whatever fabric you want. They also integrate with smart assistants and operate quietly. </p><div class="product"><a data-dimension112="0b9e1cc6-8149-440f-b27a-4fb7a287ef98" data-action="Deal Block" data-label="The SmartBot Roller Shade is not just smart, it's a customizable blind that can be adjusted to fit, with the added benefit of being able to swap the fabric. The blind is adjusted using a retractable curtain box at the top of the blind." data-dimension48="The SmartBot Roller Shade is not just smart, it's a customizable blind that can be adjusted to fit, with the added benefit of being able to swap the fabric. The blind is adjusted using a retractable curtain box at the top of the blind." data-dimension25="$199" href="https://us.switch-bot.com/products/switchbot-roller-shade?cjdata=MXxOfDB8WXww&cjevent=d3a9171fdc5211f081cb01870a82b820&utm_source=cj&utm_medium=affiliate&utm_campaign=8900245" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:392px;"><p class="vanilla-image-block" style="padding-top:99.74%;"><img id="e89f4KtGk6HiZDimAf57dn" name="SmartBot Roller Shade" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/e89f4KtGk6HiZDimAf57dn.png" mos="" align="middle" fullscreen="" width="392" height="391" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The SmartBot Roller Shade is not just smart, it's a customizable blind that can be adjusted to fit, with the added benefit of being able to swap the fabric. The blind is adjusted using a retractable curtain box at the top of the blind.<a class="view-deal button" href="https://us.switch-bot.com/products/switchbot-roller-shade?cjdata=MXxOfDB8WXww&cjevent=d3a9171fdc5211f081cb01870a82b820&utm_source=cj&utm_medium=affiliate&utm_campaign=8900245" target="_blank" rel="nofollow" data-dimension112="0b9e1cc6-8149-440f-b27a-4fb7a287ef98" data-action="Deal Block" data-label="The SmartBot Roller Shade is not just smart, it's a customizable blind that can be adjusted to fit, with the added benefit of being able to swap the fabric. The blind is adjusted using a retractable curtain box at the top of the blind." data-dimension48="The SmartBot Roller Shade is not just smart, it's a customizable blind that can be adjusted to fit, with the added benefit of being able to swap the fabric. The blind is adjusted using a retractable curtain box at the top of the blind." data-dimension25="$199">View Deal</a></p></div><h2 id="6-set-up-smart-pet-feeders">6. Set up smart pet feeders </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2236px;"><p class="vanilla-image-block" style="padding-top:56.26%;"><img id="vXUdJDkX4BbgTuw7atyTke" name="Petlibro Granary Smart Camera Feeder-5" alt="Petlibro Granary Smart Camera Feeder with a cat." src="https://cdn.mos.cms.futurecdn.net/vXUdJDkX4BbgTuw7atyTke.jpg" mos="" align="middle" fullscreen="" width="2236" height="1258" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Petlibro)</span></figcaption></figure><p>Smart pet feeders have come a long way from just automatically feeding your pet. Sure, they'll still do that but now you can also watch your cats using a 1080p video feed and speak to them over a microphone. If you already regularly use a smart pet feeder there may not be much more to do then just to make sure that it's filled up and connected to your phone. And if you don't, it's fairly easy to plug one in and pair it to the app on your smartphone so that you can make sure your pets are appropriately fed while you're away from home.</p><p>Our editor who<a href="https://www.tomsguide.com/home/my-cats-tested-this-smart-pet-feeder-for-a-month-and-now-i-cant-stop-watching-them"> tested the Petlibro</a> found it not only useful for keeping each of their cats fed the appropriate food, but also really enjoyed keeping an eye on them throughout the day. Likewise, he appreciated the data in the app that helped keep track of successful feedings and low food dishes. Because it can sense motion and record activity it also acts as a secondary home security device. </p><div class="product"><a data-dimension112="656e0532-cda2-49c6-a173-4da61da95543" data-action="Deal Block" data-label="Never miss a feeding while making sure your correct pet is eating from the Petlibro Granary Smart Camera Feeder thanks to its built-in 1080p camera. You can schedule feedings, interact with them, set an announcement, and much more. It also features a microSD slot for saving videos locally and backup power in the event there's an outage." data-dimension48="Never miss a feeding while making sure your correct pet is eating from the Petlibro Granary Smart Camera Feeder thanks to its built-in 1080p camera. You can schedule feedings, interact with them, set an announcement, and much more. It also features a microSD slot for saving videos locally and backup power in the event there's an outage." data-dimension25="$105" href="https://www.amazon.com/dp/B0B5ZGGWBQ/ref=sspa_dk_offsite_search_5185?aaxitk=965c715badd1006074cfb8a684d32f1a&tag=hawk-future-20&ascsubtag=tomsguide-us-8496683456296598388-20&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:600px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="GEAjkrA748KfTmk8JFSGei" name="Petlibro Granary Smart Camera Feeder deal block" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/GEAjkrA748KfTmk8JFSGei.jpg" mos="" align="middle" fullscreen="" width="600" height="600" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Never miss a feeding while making sure your correct pet is eating from the Petlibro Granary Smart Camera Feeder thanks to its built-in 1080p camera. You can schedule feedings, interact with them, set an announcement, and much more. It also features a microSD slot for saving videos locally and backup power in the event there's an outage.<a class="view-deal button" href="https://www.amazon.com/dp/B0B5ZGGWBQ/ref=sspa_dk_offsite_search_5185?aaxitk=965c715badd1006074cfb8a684d32f1a&tag=hawk-future-20&ascsubtag=tomsguide-us-8496683456296598388-20&th=1" target="_blank" rel="nofollow" data-dimension112="656e0532-cda2-49c6-a173-4da61da95543" data-action="Deal Block" data-label="Never miss a feeding while making sure your correct pet is eating from the Petlibro Granary Smart Camera Feeder thanks to its built-in 1080p camera. You can schedule feedings, interact with them, set an announcement, and much more. It also features a microSD slot for saving videos locally and backup power in the event there's an outage." data-dimension48="Never miss a feeding while making sure your correct pet is eating from the Petlibro Granary Smart Camera Feeder thanks to its built-in 1080p camera. You can schedule feedings, interact with them, set an announcement, and much more. It also features a microSD slot for saving videos locally and backup power in the event there's an outage." data-dimension25="$105">View Deal</a></p></div><h2 id="7-add-a-leak-detector">7. Add a leak detector </h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:832px;"><p class="vanilla-image-block" style="padding-top:68.15%;"><img id="zYGreDnndauJj5ECzuUwB5" name="Phyn under sink.jpg" alt="phyn under sink" src="https://cdn.mos.cms.futurecdn.net/zYGreDnndauJj5ECzuUwB5.jpg" mos="" align="middle" fullscreen="" width="832" height="567" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Phyn)</span></figcaption></figure><p>Whenever the temperatures drop, homeowners look sideways at their pipes. And when you travel, you never want to come home to a problem – particularly one that involves water leakage. A smart water detector can alert you to issues faster by sensing moisture and sending you an alert over your smartphone so you know there's a problem even if you're thousands of miles away. </p><p>There are a lot of options available among the <a href="https://www.tomsguide.com/best-picks/best-water-leak-detectors#section-best-overall">best smart water detectors</a>, but what you're looking for is something that will fit into your space and is loud enough to alert you when you're home. You also want to consider whether you need something that runs on batteries or can be plugged in and if you need additional features like a device that also can shut off the water leak or monitor your water usage. </p><div class="product"><a data-dimension112="e604bdea-58be-4a9f-9c20-a65989eaab81" data-action="Deal Block" data-label="We like Moen's Flo because the shape makes it easy to place in a variety of locations throughout the home. It has both a siren and an app to alert you if it gets wet enough, and its battery lasts two years. It can integrate with Alexa, or the Moen shutoff valve so that it can work to turn off whatever may be leaking, and it can measure temperature and humidity." data-dimension48="We like Moen's Flo because the shape makes it easy to place in a variety of locations throughout the home. It has both a siren and an app to alert you if it gets wet enough, and its battery lasts two years. It can integrate with Alexa, or the Moen shutoff valve so that it can work to turn off whatever may be leaking, and it can measure temperature and humidity." data-dimension25="$142" href="https://www.amazon.com/dp/B089ZY7V7V?tag=georiot-us-default-20&th=1&ascsubtag=tomsguide-us-3772529248677217159-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:771px;"><p class="vanilla-image-block" style="padding-top:99.87%;"><img id="9A7eEmbcaEVbeTEQyn6f98" name="flo by moen.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9A7eEmbcaEVbeTEQyn6f98.jpg" mos="" align="middle" fullscreen="" width="771" height="770" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We like Moen's Flo because the shape makes it easy to place in a variety of locations throughout the home. It has both a siren and an app to alert you if it gets wet enough, and its battery lasts two years. It can integrate with Alexa, or the Moen shutoff valve so that it can work to turn off whatever may be leaking, and it can measure temperature and humidity. <a class="view-deal button" href="https://www.amazon.com/dp/B089ZY7V7V?tag=georiot-us-default-20&th=1&ascsubtag=tomsguide-us-3772529248677217159-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="e604bdea-58be-4a9f-9c20-a65989eaab81" data-action="Deal Block" data-label="We like Moen's Flo because the shape makes it easy to place in a variety of locations throughout the home. It has both a siren and an app to alert you if it gets wet enough, and its battery lasts two years. It can integrate with Alexa, or the Moen shutoff valve so that it can work to turn off whatever may be leaking, and it can measure temperature and humidity." data-dimension48="We like Moen's Flo because the shape makes it easy to place in a variety of locations throughout the home. It has both a siren and an app to alert you if it gets wet enough, and its battery lasts two years. It can integrate with Alexa, or the Moen shutoff valve so that it can work to turn off whatever may be leaking, and it can measure temperature and humidity." data-dimension25="$142">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/home-security/stop-porch-pirates-before-they-strike-with-these-essential-tips-and-devices">Stop porch pirates before they strike with these essential tips and devices</a></li><li><a href="https://www.tomsguide.com/home/smart-home/5-common-mistakes-when-buying-a-security-camera">5 common mistakes when buying a security camera</a></li><li><a href="https://www.tomsguide.com/home/home-security/your-security-cameras-are-in-the-wrong-spots-heres-how-to-fix-it">Your security cameras are in the wrong spots — here's how to fix it</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google Nest Doorbell (wired, 3rd gen) review ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/google-nest-doorbell-wired-3rd-gen-review</link>
                                                                            <description>
                            <![CDATA[ The new Google Nest Doorbell boasts tons of helpful features and a better video quality, but be prepared to pay for those new updates. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vfQDQyPN6AaEEtx78wjk7f</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/Fi9hRRZquUq666Ea75sYGV-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Dec 2025 19:12:09 +0000</pubDate>                                                                                                                                <updated>Thu, 04 Jun 2026 12:51:32 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/Fi9hRRZquUq666Ea75sYGV-1280-80.jpg">
                                                            <media:credit><![CDATA[Google]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall]]></media:description>                                                            <media:text><![CDATA[Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall]]></media:text>
                                <media:title type="plain"><![CDATA[Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/Fi9hRRZquUq666Ea75sYGV-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Google Nest Doorbell (3rd gen): Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Size: </strong>5.2 x 1.7 x 1.1 inches<br><strong>Video resolution: </strong>2048 x 2048, 30 FPS<br><strong>Field of view: </strong>166º diagonal<br><strong>Aspect ratio: </strong>3:4<br><strong>Night vision: </strong>Up to 10 feet/ 6 four 850 nm infrared LEDs<br><strong>Wireless: </strong>802.11ac (2.4 GHz and 5 GHz) Wi-Fi, Bluetooth Low Energy<br><strong>Power: </strong>16–24VAC, 10–40VA, 50/60Hz</p></div></div><p>We all knew it was coming, but Google is finally giving its smart home devices the AI treatment. One of the first is the 3rd-gen Google Nest Doorbell that Google says has been designed for the new AI-based Gemini for Home platform. These new smarts allow it to better recognize who or what is at the door, and make it easier for you to find the footage you’re looking for.</p><p>On top of the AI features, however, the new Nest Doorbell offers a range of other improvements, including a higher 2K resolution camera with a wider field of view. Does it solidify its status as the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html"><u>best video doorbell</u></a> out there right now, or should you go for one of the increasing number of competitors that also offer AI-enhanced capabilities?</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-price-availability"><span>Nest Doorbell (wired, 3rd gen): Price & availability</span></h3><p>As mentioned, only the wired model of the Google Nest Doorbell has been refreshed. The Google Nest Doorbell (wired, 3rd gen) costs $179.99. It's available right now from Google directly or from participating third-party retailers. It comes in three colors, including Snow, Hazel, and Linen.</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-review-design-setup"><span>Nest Doorbell (wired, 3rd gen) review: Design & setup</span></h3><p>The newest Nest Doorbell may not look all that different from its predecessors, but that’s not a bad thing. The design of the device is modern and premium, without being over the top.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5CwkWRAA8eJyLkJHRtdKEV" name="Google-Nest-Doorbell-(wired,-3rd-gen)-3" alt="Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall" src="https://cdn.mos.cms.futurecdn.net/5CwkWRAA8eJyLkJHRtdKEV.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The device features a large camera module at the top of the front, and a large button below. I've been testing the Linen colorway which, despite its bland name, actually looks quite sophisticated against most home exteriors.</p><p>The construction of the device feels mostly solid too, despite the fact that it's largely made from plastic. And, it has an IP65 rating that ensures it should be able to withstand most weather conditions, including heavy rain.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="XQQG7NnXcWMEMMx68Hq5DV" name="Google-Nest-Doorbell-(wired,-3rd-gen)-2" alt="Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall" src="https://cdn.mos.cms.futurecdn.net/XQQG7NnXcWMEMMx68Hq5DV.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>As the name suggests, this is a wired model (Google hasn't updated its wireless model with the new sensor and features), and installation requires a 16-24VAC, 10-40VA transformer. If you're comfortable with wiring low-voltage doorbell wires the process is simple, but if not you should probably get an electrician to help you. The entire installation process took me about 10 minutes, which included screwing the baseplate to the exterior wall and connecting the wires. Google includes an angled mounting wedge in the box for situations where you need to adjust the viewing angle.</p><p>After physically installing the device, you'll add it to the Google Home app, which was also simple and quick. All you'll really need to do is scan the QR code on the device itself or on the quick start guide in the box, then follow the on-screen instructions to connect the device to your Wi-Fi network and wider Google Home setup. This will include setting up a subscription, if you want one, though you don't have to set one up.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="aPyLcZkzGn4z6DpG2BG84V" name="Google-Nest-Doorbell-(wired,-3rd-gen)-1" alt="Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall" src="https://cdn.mos.cms.futurecdn.net/aPyLcZkzGn4z6DpG2BG84V.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The doorbell doesn't include a separate chime unit, instead relying on your existing mechanical doorbell chime or Google <a href="https://www.tomsguide.com/us/best-smart-speakers,review-4480.html"><u>smart speakers</u></a> throughout your home. This keeps the package simple but means you'll need alternative solutions if you don't have existing chimes or smart speakers.</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-video-audio-quality"><span>Nest Doorbell (wired, 3rd gen): Video & audio quality</span></h3><p>Overall, the video and audio quality from the Google Nest Doorbell is very good. Sure, there are competitors that offer a higher resolution than 2K (such as the 4K <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review"><u>Ring Wired Doorbell Pro</u></a>), but as a whole, I found the video to look detailed and sharp.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="Qgww8HkYmDvz54LuFtpcMU" name="Google-Nest-Doorbell-(wired,-3rd-gen)-screenshot-1" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/Qgww8HkYmDvz54LuFtpcMU.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>In the Google Home app you can pinch to zoom to up to 6x digital zoom, and while footage zoomed at 6x is obviously less detailed, it could come in handy for getting a better look at far-away objects. You can set your preferred zoom level as the default video view too, which is a handy feature for when you want to cut out, for example, a wall near your door that you don't need to monitor.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/oc-Dfuh3Ie8" allowfullscreen></iframe></div></div><p>The doorbell has a 166-degree diagonal field of view, and with its square sensor, it's wide enough to see things like packages, even if they're directly below it. It's not without a trade-off though -- there's a noticeable fisheye look to footage. I don't mind this -- and I find it easily worth it for the ability to get package detection and have a better view of your entryway.</p><p>HDR performance was quite good, even in more challenging lighting conditions. With bright driveway lights at night, the camera managed to maintain detail in both the illuminated areas and shadows without excessive blow-out, and without switching over to infrared. When lighting is low enough, it will leverage its infrared LEDs to capture footage (there's no built-in light for color night vision), and this can provide black and white visibility up to 10 feet. Despite the lack of color night vision, the black-and-white footage generally looked crisp. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/Y7utjZq0_Ac" allowfullscreen></iframe></div></div><p>The full-duplex two-way audio with noise cancellation works reliably well too. The microphone picked up visitor voices clearly, and the speaker projected my voice loud enough for easy conversation. Wind noise is effectively minimized, which isn't always the case on outdoor cameras.</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-app-ai-features"><span>Nest Doorbell (wired, 3rd gen): App & AI features</span></h3><p>The Google Home app, which recently underwent a significant redesign, serves as the control center for the doorbell and generally works well. The interface is clean and intuitive, making it easy to view live footage, review recorded events, and adjust settings.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="eAEHyw7bg7sThj4ArXaTGU" name="Google-Nest-Doorbell-(wired,-3rd-gen)-screenshot-2" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/eAEHyw7bg7sThj4ArXaTGU.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The headline new features, however, come through the new AI integration, which is powered by Gemini. I've found these features to be genuinely quite helpful. Gemini will create natural language descriptions of captured events, and you can then use it to search through videos more easily, without having to scroll endlessly through footage. It can also create a daily "Home Brief," which gives you an overview of happenings from the day before, using data from all your connected devices that can work with Gemini. These briefs may not be all that useful unless something happens that you weren't aware of, but they were still kind of cool to look at. Maybe the novelty will wear off over time. </p><p>Gemini wasn't <em>always accurate</em>. It sometimes failed to recognize me or other people in my home, despite having been told who I or they were earlier. This isn't a huge issue — you can always simply look at footage to see who was at the door. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="PRYYRkjhjrKtMTuY7nqiLU" name="Google-Nest-Doorbell-(wired,-3rd-gen)-screenshot-3" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/PRYYRkjhjrKtMTuY7nqiLU.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Notifications for both motion detection and doorbell presses arrived almost instantly during testing. When someone rings the doorbell, you can enter two-way audio or you can respond with one of three pre-recorded messages: "You can just leave it," "We'll be right there," or "No one can come to the door." Unfortunately, you can't create custom messages — which seems like an obvious feature with Gemini's text-to-speech capabilities. The ability to message text-to-speech to someone seems like it would be handy too. Maybe I'm just too socially anxious, but I'd prefer to message someone rather than speak if I'm in a quiet waiting room.</p><p>Other more traditional smart camera features are present too. You can set motion zones, detection sensitivity, and notification preferences. You can fine-tune exactly what triggers alerts and when you receive them, including when the doorbell sees people, packages, animals, vehicles, or all motion.</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-smart-home-compatibility"><span>Nest Doorbell (wired, 3rd gen): Smart home compatibility</span></h3><p>The doorbell integrates seamlessly with Google Home, and to take advantage of all of the main features, you'll need to use Google's platform. This is to be expected. Even when camera support rolls out to the Matter spec, you won't suddenly be able to access Gemini-powered features in Apple Home.</p><p>It does support Alexa for basic use though. Through Alexa, you can do things like view a live feed from the doorbell and get notifications when the button is pressed. You can't do too much more, and frankly, if you're in the Alexa ecosystem you should probably stick with something from someone like Ring. There's no other smart home support,  so if you use Apple HomeKit or another platform you'll need to look elsewhere.</p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-storage-subscription-plans"><span>Nest Doorbell (wired, 3rd gen): Storage & subscription plans</span></h3><p>Unlike some competitors, the Nest Doorbell offers no local storage option. However, the free tier of cloud storage is more generous than most, offering six hours of event video history stored as 10-second clips. You also get person and package detection for free, too. This is actually probably enough for many basic users, though you'll lose out on access to other features.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="L7Pg6ZVaiqzMYJiPYQ4JGV" name="Google-Nest-Doorbell-(wired,-3rd-gen)-4" alt="Google Nest Doorbell (wired, 3rd gen) mounted to an exterior wall" src="https://cdn.mos.cms.futurecdn.net/L7Pg6ZVaiqzMYJiPYQ4JGV.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>To unlock the doorbell's full potential, including many AI features, you'll need a Google Home Premium subscription. The Premium Standard plan, which costs $10/month or $100/year, includes an unlimited number of cameras at a single location, and provides 30 days of event video history, and alerts for familiar faces, garage door detection, and smoke & CO alarms, and glass breaking. </p><p>The Premium Advanced plan ($20/month or $200/year) extends this to 60 days of event history plus 10 days of continuous 24/7 recording, as well as the ability to ask Gemini to search your videos, get detailed summaries of events, and daily summaries. </p><p>If you subscribe to the Google AI Pro plan ($20/month), you’ll get the Google Home Premium Standard subscription included as part of the deal. If you have the Google AI Ultra Plan ($249/month), the Google Home Premium Advanced plan is included at no extra charge.</p><p>These subscription costs aren't cheap, especially considering many of the doorbell's most compelling features are locked behind them. That said, if you're buying this doorbell, you might be doing so for the AI-powered features in the first place, so you might feel like you need to pony up. </p><h3 class="article-body__section" id="section-nest-doorbell-wired-3rd-gen-verdict"><span>Nest Doorbell (wired, 3rd gen): Verdict</span></h3><p>The Google Nest Doorbell (wired, 3rd gen) is an excellent, complete package of a smart doorbell. It's well-designed, offers good video quality, and has a range of helpful, unique features. I suspect Google is likely to continue to rely on its investment in Gemini to give its products an edge over the competition. </p><p>The main drawback is the subscription dependency for accessing the doorbell's best features. While the free tier is more generous than many competitors, you'll miss out on facial recognition and extended video history without paying monthly fees. </p><p>The most comparable competitor is the 2nd-gen Ring Wired Doorbell Plus, which also has a 2K camera resolution. However, it does not offer person or package detection for free, nor do you get any sort of video storage without a subscription. Similar to Google, you’ll need to subscribe to a Ring Home Premium plan ($20/month) if you want to use all of its camera’s AI capabilities, such as detailed video descriptions and history. However, Ring does provide up to 180 days of video history.</p><p>For users already invested in the Google ecosystem or those who value the AI features enough to justify the ongoing costs, the Google Nest Doorbell represents an excellent choice that combines reliable hardware with intelligent software.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring Wired Doorbell Plus (2nd gen) review: Now with 2K and AI ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/ring-wired-doorbell-plus-2nd-gen-review</link>
                                                                            <description>
                            <![CDATA[ With excellent audio and video quality and a super-wide field of view, the Ring Wired Doorbell Plus is an ideal addition to your home if you want to monitor more than just your front stoop. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">axQwcS336AEPfoKWtqHcYa</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/C6rzfY879N2zFBqdqp4wcF-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 18 Dec 2025 17:26:46 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Dan Cavallari ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/RzBY7zZLXQ8jdC6dtzKdxZ.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/C6rzfY879N2zFBqdqp4wcF-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring Wired Doorbell Plus (2nd gen) mounted next to a front door]]></media:description>                                                            <media:text><![CDATA[Ring Wired Doorbell Plus (2nd gen) mounted next to a front door]]></media:text>
                                <media:title type="plain"><![CDATA[Ring Wired Doorbell Plus (2nd gen) mounted next to a front door]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/C6rzfY879N2zFBqdqp4wcF-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Ring Wired Doorbell Plus: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Price: </strong>$179.99<br><strong>Dimensions: </strong>2.11 x 1.18 inches (without wall mount)<br><strong>Video: </strong>2K, low-light sight with adaptive night vision<br><strong>Motion detection: </strong>3D, with customizable motion zones<br><strong>Field of view: </strong>140 degrees horizontal and vertical; 1:1 aspect ratio<br><strong>Audio: </strong>two-way talk<br><strong>Connectivity: </strong>WiFi 6, dual-band 2.4GHz or 5GHz<br><strong>Operating temperature:  </strong>-4°F to 120°F</p></div></div><p>I’m not entirely sure why, but we get a lot of door-to-door solicitors in our neighborhood, far more than I’ve ever experienced anywhere else I’ve lived. Since I work from home, you can imagine it gets tedious telling these solicitors that I’m busy or just don’t want to talk. The Ring Wired Doorbell Plus (2nd gen) and its Alexa+ AI features seemed like a great solution to my solicitor problem, not to mention the peace of mind that comes with it when I’m traveling for work.</p><p>And it comes with even more benefits: It has a resolution of 2K, can track your packages in the age of porch pirates, and lets me see who’s coming and going while I’m far away from the front door (I spend a lot of time in my detached garage). </p><p>The Ring Wired Doorbell is a convenient option for anyone looking to monitor the front of their house from the couch. It’s got a massive field of view and even records well in the dark. But how does it compare to the <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review"><u>Ring Video Doorbell Pro</u></a>, which has an even higher 4K resolution, as well as the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html"><u>best video doorbells</u></a>?</p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-price-and-availability"><span>Ring Wired Doorbell Plus (2nd gen) review: Price and availability</span></h3><p>The Wired Doorbell Plus costs $179.99 and is available for purchase now. You can buy the unit on Ring’s website, or from other retailers like Lowe’s. </p><p>Ring sent me the Wired Doorbell Plus (2nd Gen) + Indoor Cam Plus bundle, which costs $239.98. I will review the Indoor Cam Plus separately. You can also purchase a Wired Doorbell Plus (2nd Gen) + Chime (3rd Gen) bundle for $214.98, or a Wired Doorbell Plus (2nd Gen) + Floodlight Cam Plus bundle for $359.98.</p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-design-and-setup"><span>Ring Wired Doorbell Plus (2nd gen) review: Design and setup</span></h3><p>The Ring Wired Doorbell plus comes packaged with the doorbell unit, which mounts to your home next to your front door; installation hardware; a corner kit for angling the doorbell if necessary; and a chime that can be installed into the existing wiring for your current doorbell chime unit. Ring also includes a small tool for removing the faceplate of the doorbell unit.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Mwg3dZLrYp4xMLYWitVvpF" name="Ring-Wired-Doorbell-Plus-2" alt="Ring Wired Doorbell Plus (2nd gen) unboxed" src="https://cdn.mos.cms.futurecdn.net/Mwg3dZLrYp4xMLYWitVvpF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Installing the Wired Doorbell Plus took about twenty minutes total. Simply remove your old doorbell and wire in the Ring Wired Doorbell Plus to the existing wiring. Ring also includes a wiring harness and wire nuts to simplify the process. The chime installs similarly on the other end of the doorbell system; use the existing chime wires and use the included wire nuts to tie into that system. It’s a pretty easy setup, even if you’re not a very handy person. Just remember to turn off the circuit breaker to the doorbell wiring before you get started.</p><p>Once installed, the app takes a few more minutes to download and sign in. Once I downloaded and created my account, and connected the Ring camera to WiFi (it is compatible with 2.4GHZ or 5GHZ signals) , the doorbell needed a firmware update, which took about five minutes to complete. From there, you’ll set up your camera preferences, or simply choose the defaults to speed through the rest of the setup. </p><p>The drawback of the Ring Wired Doorbell Plus is the wired install. At first, I wanted to install this system on my detached garage, since I operate my business out it. But there wasn’t any existing wiring in the garage, which meant this version of the Ring doorbell wouldn’t work. Ring does offer wireless video doorbells that operate on rechargeable batteries, but none that have 2K resolution.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="skdKRMpgciFojsh6mYjfnF" name="Ring-Wired-Doorbell-Plus-8" alt="Ring Wired Doorbell Plus (2nd gen) chime unit" src="https://cdn.mos.cms.futurecdn.net/skdKRMpgciFojsh6mYjfnF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The mini chime that came with my doorbell was easy to install and sounds out loud and clear within my house. I like that I can also shut off the chime if I want to. The Ring chime has become ubiquitous these days, and it’s more pleasant than my normal doorbell chime. But when I’m in meetings (I work from home), it sure is nice to shut off the chime and prevent my dog from reacting the way he always does: by barking his head off.</p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-performance"><span>Ring Wired Doorbell Plus (2nd gen) review: Performance</span></h3><p>The Ring Wired Doorbell Plus 2K video is very, very good. In broad daylight, it’s easy to pick out even small objects in the frame, and you can pinch to zoom in to see even more details. The image quality doesn’t suffer much in low light, either. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/wqvTXlUcRcw" allowfullscreen></iframe></div></div><p>Within the first week of using the Ring Wired Doorbell Plus, it came in quite handy. For starters, I was able to avoid awkward conversations with various solicitors — already the Ring camera justified its price. </p><p>On another occasion, a man came to our door asking for someone we’d never heard of. No big deal really, but it felt good to have the person on camera (both video and audio) should it have been something more nefarious, or if anyone returned later with bad intentions. As it was, nothing came of it, and all is well.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="uUhThPA7pnFshs7jaxcFTF" name="Ring-Wired-Doorbell-Plus-7" alt="Ring Wired Doorbell Plus (2nd gen) mounted next to a front door" src="https://cdn.mos.cms.futurecdn.net/uUhThPA7pnFshs7jaxcFTF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I very much like having the audio along with the video feed. And the audio is startlingly clear, as is the video image — in just about all conditions. I haven’t yet come across any video or audio clips that were indecipherable, or even close to it. The Ring doorbell’s recording is absolutely stellar.</p><p>The field of view is very wide, too. I like being able to see my entire front yard, as well as my driveway. My neighborhood recently experienced some car break-ins, and while our cars weren’t affected, someone did kindly scratch up the hood of my truck. This happened before I installed the Ring camera, and I sure do wish I had it back then. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="nsMGPRzsu8CsLmUNLVj23C" name="Ring-Wired-Doorbell-Plus-screenshot-nighttime" alt="Screenshot of the Ring Wired Doorbell Plus (2nd gen) app during nighttime" src="https://cdn.mos.cms.futurecdn.net/nsMGPRzsu8CsLmUNLVj23C.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>At night, you’ll lose the color from the image, but the detail and clarity still remains. Even zooming in, while not as sharp as in daylight conditions, allows you to pick out objects and people. My only complaint here is up close, subjects get a bit blown out, so it’s hard to see someone’s features when they’re positioned close to the doorbell.</p><p>The Ring Doorbell features Low Light Sight, which looks a bit like those scenes in movies where a character is wearing night-vision goggles, minus the green tinge. It was easy to pick out objects and people close to the camera, and I was able to see with clarity objects on the street, like my trash cans at the curb. </p><p>The front of my house faces east, which means in the morning, the sun blasts right at the camera mounted by my front door. The camera handles this well; the sun doesn’t wash out the image, though some flare is of course present. Throughout the day, as the sun works its way toward my backyard, the image only improves. By late afternoon, shadows wash over the front yard, and the 2K image avoids pixelation common in low light conditions. It’s a very clear image in all conditions throughout the day. </p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-app-and-smart-home-compatibility"><span>Ring Wired Doorbell Plus (2nd gen) review: App and smart home compatibility</span></h3><p>I found the Ring App easy to set up and use. There is a lot to explore within the app, and tons of various settings to either broaden the Ring’s applicability or limit it. It’s kind of easy to get lost in it all, and you’re bombarded with setup options during the initial setup process. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="roNx3nDZccUGFxSKnDt6DC" name="Ring-Wired-Doorbell-Plus-screenshot-daytime" alt="Screenshot of the Ring Wired Doorbell Plus (2nd gen) app during daytime" src="https://cdn.mos.cms.futurecdn.net/roNx3nDZccUGFxSKnDt6DC.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Live View setting shows you what the camera sees in real time, through Retinal Vision 2K video. It’s triggered by 3D motion detection, which records segments should anyone come within range of the doorbell. You can adjust this setting in the app to exclude moving vehicles and other things that aren’t humans approaching your door if you choose.</p><p>The Live View setting also features two-way talk, which is exactly what it sounds like: you can talk to someone at your door and they can talk to you. It’s a convenient way to speak with visitors that perhaps you don’t want to meet face to face.</p><p>Video History is handy should you need to reference events that happened in the past. That’s possible with the Ring subscription. You’ll get a 30-day free trial at purchase. More on that in a moment. </p><p>Keep in mind that this doorbell works with the Alexa ecosystem only, which is limiting. If your house is already on a different system, that might be a dealbreaker for you. As it is, I already use other Alexa devices, so the doorbell integrated easily. </p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-ai-features"><span>Ring Wired Doorbell Plus (2nd gen) review: AI features</span></h3><p>While not exclusive to the Wired Doorbell Plus, Ring has added a number of AI-powered features to its doorbells that make it easier to search through your video history and identify particular events. </p><p>Video Descriptions gives more detailed descriptions of what the doorbell records, so you might get a caption that reads "a person walked through the yard carrying a package." </p><p>AI Single Event Alerts will summarize a series of alerts from the same camera within a certain time period. So, if there are kids playing on your lawn and they go in and out of the camera frame, it will group all of these events into a single notification. </p><p>Last, Smart Video Search can let you search using natural language for particular events in your video history, like "dog catching a frisbee in my yard." </p><p>However, all of these features come at a cost.</p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-subscription-costs"><span>Ring Wired Doorbell Plus (2nd gen) review: Subscription costs</span></h3><p>You get a Home Plan 30-day trial when you install the video doorbell. After that, you’ll have to upgrade. Strangely, you can’t manage your plan in the Ring app. That seems counterintuitive. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="xJtwGWfyFyynTZJrpqEUuF" name="Ring-Wired-Doorbell-Plus-4" alt="Ring Wired Doorbell Plus (2nd gen) mounted next to a front door" src="https://cdn.mos.cms.futurecdn.net/xJtwGWfyFyynTZJrpqEUuF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>You’ll need to go to the Ring website instead and choose between the three offered plans: Basic for $4.99 a month or $49.99 a year; Standard for $9.99 a month or $99.99 a year; or Premium, for $19.99 a month of $199.99 a year. While the Basic plan gives you 180 days of video history as well as Person, Package, and Vehicle Alerts, you’ll need to spring for the Premium plan if you want AI-enabled features like Video Descriptions, AI Single Event Alerts, and Smart Video Search. I find it a bit irksome that I need to subscribe at all, after purchasing the unit for what I would consider to be a high dollar amount. </p><p>You can avoid the subscription altogether, but you will lose out on a lot of features, such as the ability to save video or look at past events, as well as any AI functionality. You’ll still get Live-View, Real-Time Notifications, and Keypad Arming and Disarming, among other features.</p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-accessories"><span>Ring Wired Doorbell Plus (2nd gen) review: Accessories</span></h3><p>Ring offers a ton of products and accessories to work within the Ring ecosystem. Outdoor and indoor cameras, alarms, Alexa products, and many more options are available for purchase. Ring offers a lot of bundles too, so you can buy several products at once and save a few bucks. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="SwJj9jHib6FGkykdt5h3qF" name="Ring-Wired-Doorbell-Plus-5" alt="Ring Wired Doorbell Plus (2nd gen) mounted next to a front door" src="https://cdn.mos.cms.futurecdn.net/SwJj9jHib6FGkykdt5h3qF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Some of the more useful accessories include hardwired kits for cameras, various wall mounts, and different chime options. The Ring Beacon ($49.99) warns passers-by that your home is protected by Ring, day or night. It captures solar energy to charge during the day, and glows at night not only to show people your home has a Ring camera, but also to light your front steps or path to get you safely to your door. </p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-competition"><span>Ring Wired Doorbell Plus (2nd gen) review: Competition</span></h3><p>Ring is perhaps the most well-known doorbell camera on the market. But several competitors have entered the space in recent years. Google Nest Doorbell is among the most prominent. This works best with the Google smart home environment, something Ring does not offer.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="C6rzfY879N2zFBqdqp4wcF" name="Ring-Wired-Doorbell-Plus-6" alt="Ring Wired Doorbell Plus (2nd gen) mounted next to a front door" src="https://cdn.mos.cms.futurecdn.net/C6rzfY879N2zFBqdqp4wcF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Other competitors in the space include Arlo Video Doorbell Camera and Chime 2 Bundle, Eufy Dual+ Security Video Doorbell, and brands like Simplisafe, Lorex, and Wyze Cam. While many of these offerings come in at a lower price than Ring, the Ring Doorbell Plus beats them all in features, video quality, and reliability. </p><h3 class="article-body__section" id="section-ring-wired-doorbell-plus-2nd-gen-review-verdict"><span>Ring Wired Doorbell Plus (2nd gen) review: Verdict</span></h3><p>I didn’t expect to like the Ring Wired Doorbell Plus as much as I do. I’m not generally the type who feels the need for constant surveillance. But it has simplified my life quite a bit, largely because I no longer have to get up from my desk to go deal with the surprisingly high number of solicitors we get in our neighborhood. I also love that I can see much of my driveway in the wide field of view, so should we get another spate of break-ins or someone scratching up my truck again, I’ll have some potential for recourse.</p><p>Google released the Nest Doorbell battery (3rd) gen around the same time as Ring released the Wired Doorbell Plus (2nd gen), and the two share a lot of similarities, such as 2K video and AI integration for smarter alerts. Both also require a subscription to use all their features, but Google does give you six hours of video history without charging you a monthly fee.</p><p>I do wish the app subscriptions were included with the sale price. And the device is limited to Alexa ecosystems, which can be limiting for certain consumers. But if you’re looking for exceptional video and audio quality, as well as a super wide field of view, it’s hard to beat the Ring Wired Doorbell Plus — unless you want to go with the 4K <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review"><u>Ring Wired Doorbell Pro</u></a>.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ TP-Link Tapo C246D HybridCam Duo review: Two cameras are better than one ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/tp-link-tapo-c246d-hybridcam-duo-review</link>
                                                                            <description>
                            <![CDATA[ The TP-Link Tapo HybridCam Duo offers a dual camera system that can keep an eye on your whole yard — and at a reasonable price. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">tRfsMJyWBCKfQbLnxC27Mb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/8RK9qhNM35i5Lv58zThkyK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 10 Dec 2025 21:26:32 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/8RK9qhNM35i5Lv58zThkyK-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[TP-Link Tapo C246D HybridCam Duo mounted on a wall]]></media:description>                                                            <media:text><![CDATA[TP-Link Tapo C246D HybridCam Duo mounted on a wall]]></media:text>
                                <media:title type="plain"><![CDATA[TP-Link Tapo C246D HybridCam Duo mounted on a wall]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/8RK9qhNM35i5Lv58zThkyK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">TP-Link Tapo HybridCam Duo: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Video: </strong>2,304 x 1296<br><strong>Field of view: </strong>125 degrees<br><strong>Night vision: </strong>Infrared and color night vision<br><strong>Wireless: 2.4 GHz Wi-Fi 4</strong><br><strong>Weather resistance: IP65</strong><br><strong>Power: DC 5.0V/2.0A</strong><br><strong>Works with: </strong>Alexa, Google Home, IFTTT, Samsung SmartThings</p></div></div><p>Basic security cameras are a dime a dozen. The result? Manufacturers are starting to have to build more features into their cameras to stand out. But instead of putting just one camera in a device, how about two? The TP-Link  Tapo HybridCam Duo has dual cameras to better monitor motion <em>while</em> keeping an eye on everything else. </p><p>But is the concept a little more of a gimmick than anything else, and how does it compare to the best home security cameras? To find out, I installed the TP-Link Tapo HybridCam Duo in my yard.</p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-price-and-availability"><span>TP-Link Tapo HybridCam Duo review: Price and Availability</span></h3><p>The TP-Link Tapo HybridCam Duo is available right now from TP-Link and from other retailers. It comes in white, and is actually pretty affordable — it came at $69.99 from TP-Link and Amazon, and you can get a discount if you buy a two-pack, for $129.99.</p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-design-and-installation"><span>TP-Link Tapo HybridCam Duo review: Design and installation</span></h3><p>The design of the TP-Link Tapo Hybrid Cam Duo is a little different than most traditional security cameras. That, of course, is because of the dual camera system that's designed to give you more flexibility in tracking motion. The camera itself consists of two halves: The top half connects to the mount, while the bottom half connects to the top half through a small arm that can rotate for motion tracking.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Z7TTSpiB24nAaN5cfmnDyK" name="tp-link-tapo-hybridcam-duo-4" alt="TP-Link Tapo C246D HybridCam Duo mounted on a wall" src="https://cdn.mos.cms.futurecdn.net/Z7TTSpiB24nAaN5cfmnDyK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The rest of the camera's design is fairly standard. It has a white body with a black front, along with sensors and lights on its face. There's a small USB-C port on the back of the top half of the camera. It's possible to plug in with the camera mounted, but a little tricky, so you might find it easier to plug the camera in before you mount it.</p><p>Mounting it is relatively easy. There's a white mount that attaches to the wall or ceiling where you intend to install the camera. Then the camera itself simply pops into place on that mount. You will need to keep in mind that this is a wired camera and not a battery-powered one, which might inform where you intend to place it.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iQPDgYquqH33T6CD4fb3uK" name="tp-link-tapo-hybridcam-duo-2" alt="TP-Link Tapo C246D HybridCam Duo mounted on a wall" src="https://cdn.mos.cms.futurecdn.net/iQPDgYquqH33T6CD4fb3uK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>After you physically install the camera, download the Tapo app and follow the instructions on screen to add the device. Note that TP-Link confusingly gives its cameras two names, with the HybridCam Duo actually being called the Tapo C246D. That's what you'll have to look for in the app when you go to add your camera to your account.</p><p>The whole installation process took me around 10 minutes — and that included downloading and installing a firmware update. Assuming you have a screwdriver, a power outlet, and a decent Wi-Fi connection, I suspect most will have a similar experience.</p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-image-and-audio-performance"><span>TP-Link Tapo HybridCam Duo review: Image and audio performance</span></h3><p>Of course, the unique thing about this system is that it has two 2K cameras built into it. One of them is a fixed wide-angle camera with a 125-degree field-of-view, while the other is a 6mm telephoto camera that delivers around 3x zoom compared to the main camera. You can also zoom to 10.8x with digital zoom. And, the camera supports smart tracking, so if there’s motion that’s spotted, it can be tracked with the telephoto camera. This feature works with people, pets, and vehicles, and you can choose to enable or disable it for those individual types of motion.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/QrYZ5eU7GCU" allowfullscreen></iframe></div></div><p>The camera can detect people, pets and vehicles separately, but it also has sound detection, and that works with crying (for babies), glass breaking, dogs barking, and even cats meowing. I didn’t test all of these, but the barking detection seemed to work fine for our neighbors’ dogs.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/jhD4lHLD9-4" allowfullscreen></iframe></div></div><p>I do wish the wide camera had a slightly wider field-of-view. It’s not bad, but given the fact that it has to be mounted on a flat surface, I wasn’t able to place it in a way that it could see one side of my backyard. Again, it’s not a huge issue — and the telephoto camera was still able to pan to view areas that the wide-angle camera couldn’t see.</p><p>In good lighting, the camera performed quite well. Images were crisp, and it did a good job at automatically tracking movement, even if it wasn’t necessarily super smooth when it moved the telephoto camera to track my walking across my backyard. The image was also pretty natural, and the camera did a good job at capturing details in both shadows and highlights. That means that even on a bright sunny day, it’ll capture motion in darker parts of the image, unlike cheaper cameras that might have a lower dynamic range. Once it has finished tracking motion, it will return back to its set position, ready for more tracking.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/uyRNCQRgJEk" allowfullscreen></iframe></div></div><p>The HybridCam Duo supports both infrared and full-color night vision, and you can set the mode individually for each of the two cameras, which is a nice touch. Of course, if you enable the spotlight on one of them, it’ll undoubtedly illuminate the scene for both of them, but it’s still nice to be able to toggle settings to your preferences.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/C11Z46f4hkk" allowfullscreen></iframe></div></div><p>In low lighting both cameras continued to perform well, but I did find the image to be a little less crisp, both when using infrared and color night vision. I actually found the details to be similar in both modes (often, the trade-off to color night vision is detail, depending on the distance of the subject). The wide camera certainly looked a little better with color night vision, though the lights built into it aren’t the strongest, so if you want to record subjects at a distance you may be better off with the infrared night vision. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/S8RuybTCSgA" allowfullscreen></iframe></div></div><p>The good news is that you don’t necessarily have to decide whether you want to use infrared or color on one or both cameras. Instead, you can simply use the “smart” mode. Smart mode basically just keeps both cameras in infrared mode until motion is detected, at which point the telephoto camera turns on color night vision, while the wide camera sticks to infrared. It’s a good option for those who don’t want to spend the time experimenting on modes to find the perfect fit for their area.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/SI8C30aPBG4" allowfullscreen></iframe></div></div><p>Regardless of the night modes you go for, the camera records excellent video for the price point. It’s quick to detect motion, and video quality is mostly pretty good. The camera also supports continuous recording with a microSD card inserted, which is a handy feature — but even without continuous recording, I found that it usually had enough buffer to include <em>right</em> before motion was detected in recordings for larger objects, like people, and recorded quick enough for smaller objects, like animals. </p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-app-and-smart-home-support"><span>TP-Link Tapo HybridCam Duo review: App and smart home support</span></h3><p>The TP-Link Tapo HybridCam Duo works with the Tapo app, which I found to be perfectly fine. It has a main screen that basically shows you your different Tapo devices at a glance, but it also has a “Cameras” tab that lets you see a snapshot of all of your Tapo cameras.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="W6PYvFbUe2Epnge7w8C9PH" name="tp-link-tapo-hybridcam-duo-5" alt="Screenshot of the TP-Link Tapo C246D HybridCam Duo app" src="https://cdn.mos.cms.futurecdn.net/W6PYvFbUe2Epnge7w8C9PH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Tapping on your camera from the home screen or the cameras tab will bring you to its settings, and thankfully they're relatively easy to manage. Here you can see a live feed of both cameras, but you can switch to a feed from the wide camera if you prefer. I found that even with the feed from both cameras, I was able to access all of the settings without having to scroll — only pre-recorded clips would require you scroll down a little. There are also buttons to record or take a photo or enter two-way audio. You can also pan and tilt the bottom telephoto camera, turn the built-in spotlight on and off, and initiate an alarm.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="CMmAd7gLCGYfD35XGV5TEH" name="tp-link-tapo-hybridcam-duo-6" alt="Screenshot of the TP-Link Tapo C246D HybridCam Duo app" src="https://cdn.mos.cms.futurecdn.net/CMmAd7gLCGYfD35XGV5TEH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The app also offers some handy features related to the pan/tilt telephoto camera. For starters, you can manually pan and tilt it as needed, but even better is the fact that you can put it into a patrol mode that has it sweep between pre-set points, allowing you to get a closer view of what’s happening. And, you can create a panoramic view which gives you an overview of the entire visible area, and lets you select on that image where you want the camera to be pointed. You can set a 360-degree, 270-degree, or 180-degree panoramic view. It’s a neat feature, but it only accounts for horizontal panning. I wish it could account for tilting too.</p><p>My main issue with these pan/tilt features is that they work <em>very</em> slowly. If you’re manually panning or tilting, you’ll want to do so one tap at a time — you’ll overshoot if you hold down on the controls. I routinely had to wait a few seconds for changes to be made. To be fair, the camera was placed outside, where the Wi-Fi connectivity isn’t as good as it is inside — but you would assume that if the internet is fast enough to stream video, it should be fast enough to deliver basic controls without latency too. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="kJWgdinw4LtgJeqRF6XGAH" name="tp-link-tapo-hybridcam-duo-7" alt="Screenshot of the TP-Link Tapo C246D HybridCam Duo app" src="https://cdn.mos.cms.futurecdn.net/kJWgdinw4LtgJeqRF6XGAH.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The TP-Link Tapo HybridCam Duo works with Alexa, Google Home, IFTTT, and Samsung SmartThings. It notably does not support Apple’s HomeKit, so if you’re a HomeKit user you’ll need to keep looking. </p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-video-storage-and-subscription-fees"><span>TP-Link Tapo HybridCam Duo review: Video storage and subscription fees</span></h3><p>The HybridCam Duo offers some versatility when it comes to video storage, which is always handy. Notably, it has a microSD card slot, which you can use to store footage locally. It supports cards up to 512GB, which should be enough to store a few weeks of recording, at least. You can even password-protect the microSD card in the Tapo app.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="hSnngAkq4m3yVcmngJZJwK" name="tp-link-tapo-hybridcam-duo-3" alt="TP-Link Tapo C246D HybridCam Duo mounted on a wall" src="https://cdn.mos.cms.futurecdn.net/hSnngAkq4m3yVcmngJZJwK.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Of course, you can go with cloud storage instead, if you prefer. TP-Link has what it calls the Tapo Care plan, which can store 30 days of video history, plus supports activity notifications, video summaries, smart sorting features, and more. Tapo Care costs $3.49 per month or $34.99 per year, but you will get a 30-day free trial with the camera, and you don’t have to enter your payment details to get it – so you’ll be able to get an idea of whether it’s worth the money or not, without having to worry about automatic payments. </p><h3 class="article-body__section" id="section-tp-link-tapo-hybridcam-duo-review-verdict"><span>TP-Link Tapo HybridCam Duo review: Verdict</span></h3><p>For around $70, you can’t really get a more versatile smart security camera than the TP-Link Tapo HybridCam Duo. It gets around perhaps the biggest issue with pan/tilt cameras — they can’t see everything, all of the time. This camera can, though. The pairing of a wide camera and a telephoto camera makes for a comprehensive security system that supports helpful features like local recording. While night vision could be better and the camera could be more responsive when manually panning and tilting, it performs well for the price.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Google Nest Cam Indoor (wired, 3rd gen) review ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/google-nest-cam-indoor-wired-3rd-gen-review</link>
                                                                            <description>
                            <![CDATA[ AI is everywhere and Google is bringing AI features to the Google Home platform — and in a way that, turns out, actually works pretty well. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">oNm5aXTGWfgrCoqS9ZGEUf</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/DeMRYvvyz74YUK3eoqndA8-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 09 Dec 2025 18:52:57 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:31:16 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/DeMRYvvyz74YUK3eoqndA8-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Google Nest Doorbell (wired, 3rd gen) on a shelf]]></media:description>                                                            <media:text><![CDATA[Google Nest Doorbell (wired, 3rd gen) on a shelf]]></media:text>
                                <media:title type="plain"><![CDATA[Google Nest Doorbell (wired, 3rd gen) on a shelf]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/DeMRYvvyz74YUK3eoqndA8-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Google Nest Cam Indoor (wired, 3rd gen): Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Camera Size: </strong>3.9 in H x 2.5 in W x 2.2 in D<br><strong>Video: </strong>2560 x 1440 / 30 FPS, HDR<br><strong>Aspect ratio: </strong>16:9<br><strong>Field of view: </strong>152° diagonal<br><strong>Night vision: </strong>Up to 15 ft, two 850 nm infrared LEDs<br><strong>Wireless: </strong>802.11ac (2.4/5 GHz), Bluetooth Low Energy<br><strong>Weather Resistance: </strong>None, indoor only<br><strong>Audio: </strong>Full-Duplex 2-way audio w/noise cancellation<br><strong>Lighting: </strong>None<br><strong>Power: </strong>Wired only, 10 ft attached cable w/USB-C connector and 7.5W USB-C adapter</p></div></div><p>Google is bringing its Nest smart home devices into the AI era. Along with the Gemini for Home platform, Google has revamped many of its Nest smart home products, including its beloved cameras, although only the wired model has been given a revamp so far. The Google Nest Cam Indoor (wired, 3rd gen), however, is about more than just AI. It also has a number of other improvements, including a new sensor that supports a 2K resolution and a wider field of view. Plus, it's available in a pretty Berry color.</p><p>Does the new Google Nest Cam Indoor (wired, 3rd gen) do enough given the increased competition in the smart home camera space?</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-price-and-availability"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Price and availability</span></h3><p>As mentioned, only the wired version of the Google Nest Cam has been given an update. It's available for $99.99 and can be purchased straight from Google or from participating retailers. It comes in three colors, including Snow, Hazel, and Berry — however, the Hazel and Berry colors are only available in the US.</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-design-and-setup"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Design and setup</span></h3><p>The Google Nest Cam Indoor looks largely the same as previous models, with a compact body that’s attached to a small base. The camera itself can swivel and rotate a little to help with positioning, though it’s not the most flexible security camera out there when it comes to angling. That said, it should be fine for most users, both placed on a surface or mounted to a wall.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="shuXdMRRtdXFR2J4t9PAJ8" name="Google-Nest-Doorbell-(wired,-3rd-gen)-2" alt="Google Nest Doorbell (wired, 3rd gen) on a shelf" src="https://cdn.mos.cms.futurecdn.net/shuXdMRRtdXFR2J4t9PAJ8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Keep in mind that unlike plenty of other options, the Nest Cam doesn't support any pan/tilt functionality. You'll want to ensure it's able to see what you want it to when you place it.</p><p>I’m reviewing the camera in the “Berry” color, which is a vibrant red that I really like. Most security cameras come in boring colors like white, black, or gray, so it’s refreshing to see Google offer something a little more interesting. The camera is also available in Snow and Hazel if you prefer something more subdued. It’s made largely with plastic but it feels high-quality and durable.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="ffjZShYsyjnJNNuo4HfCB8" name="Google-Nest-Doorbell-(wired,-3rd-gen)-5" alt="Google Nest Doorbell (wired, 3rd gen) on a shelf" src="https://cdn.mos.cms.futurecdn.net/ffjZShYsyjnJNNuo4HfCB8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The camera has a permanently attached 10-foot USB-C cable, which is long enough for most installations. The fact that it’s permanently attached means you can’t replace it if it gets damaged, which is unfortunate. While I could see the reasoning for having a permanently attached cable on an outdoor camera for weatherproofing, this is specifically the indoor model and it should have simply had a USB-C port instead. The cable ends in a USB-C connector, which plugs into the included 7.5W power adapter.</p><p>Installation is incredibly easy. You can either place the camera on a surface like a shelf or table, or mount it to a wall using the included mounting hardware. I didn’t mount mine during testing, opting instead to simply place it on a shelf. Getting it set up in the Google Home app was simple too. You’ll do so by opening the app and tapping on the button to add an accessory, scanning the QR code on the camera, and following the on-screen instructions. The whole process took about five minutes from unboxing to having a live feed on my phone.​​​​​​​​​​​​​​​​</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-video-and-audio-quality"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Video and audio quality</span></h3><p>The Google Nest Cam Indoor captures video at a 2K resolution, which is probably the biggest upgrade over previous models apart from the addition of Gemini AI features. The camera has a 152-degree diagonal field of view, which is wide enough to capture a large room or a long hallway without missing much. It’s a significant improvement over older Nest cameras, and it means you’ll be able to see more of what’s happening in a given space.</p><p>Video quality is excellent across the board. The camera captures crisp, detailed footage in both well-lit and poorly-lit environments, making it versatile for use in just about any room. Colors look natural and accurate, and there’s plenty of detail in the footage, even when zooming in on specific areas.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/3WQHIjwOSCs" allowfullscreen></iframe></div></div><p>Night vision performance is impressive too. The camera relies on infrared night vision rather than a spotlight, so there’s no color night vision here — it’s all black and white in low light. That said, the IR performance is very good, with lots of detail visible even in complete darkness. I would have liked to see color night vision as an option, especially considering that some (cheaper) competitors offer it, but the black-and-white IR footage is still more than good enough for most use cases, especially indoors. If you do want color night vision at a competitive price, it's worth looking at the likes of the Wyze Cam Pan v4.</p><p>The camera’s HDR performance is very good too. I found it easy to see details in both shadows and highlights, which is important for security cameras that need to capture footage in rooms with varying light conditions, or with windows. Windows and bright lights don’t get blown out, and darker areas of the frame still retain plenty of detail. It’s a big improvement over older cameras that would often struggle with high-contrast scenes.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/-8-RK0k34uQ" allowfullscreen></iframe></div></div><p>The camera was quick to detect motion during my testing, and notifications arrived on my phone reasonably fast — though there was still a 2-3 second delay between when motion was detected and when I received the alert. That’s pretty standard for security cameras, and while it would be nice to see instant notifications, the delay is short enough that it shouldn’t be a major issue for most users.</p><p>Audio quality is excellent too. The built-in microphone picked up everything clearly, from voices to ambient sounds, and the speaker played my voice back perfectly during two-way audio tests. It’s loud enough to have a conversation with someone through the camera, and the audio quality is clear and easy to understand. Some security cameras have mediocre audio, but that’s not the case here.</p><p>All of this said, the video quality of cheaper cameras has been getting better and better — so while the quality of the footage on the camera is very good, if video quality is your top or only priority, you might save some cash by buying something from a company like Wyze. Still, video quality is only part of the equation here, and it’s easily good enough for most, even without a 4K resolution.</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-app"><span>Google Nest Cam Indoor (wired, 3rd gen) review: App</span></h3><p>The Google Home app is well-designed and relatively easy to navigate, which is important considering it’s the only way to control the Nest Cam Indoor. The app has received a new design recently, but most things are generally in the same place, so if you’ve used it before, you shouldn’t have too much trouble finding what you need. The interface is clean and intuitive, with a live view of your camera readily accessible from the home screen.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="RvDCQ6vN9g3bAHSNBXZiR6" name="Google-Nest-Doorbell-(wired,-3rd-gen)--screenshot-Live-View" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/RvDCQ6vN9g3bAHSNBXZiR6.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The biggest change for this model, however, is the addition of AI features powered by Gemini. These features include things like the ability to ask Gemini questions about your Google Home, and AI-generated descriptions — for example, instead of just “motion detected,” you might get “person with a package entered the room” or “package delivered.” With Gemini, you can ask questions and essentially use it as a searchable video history. You can ask things like “What time did my package get delivered?” and Gemini will search through your video history to find the answer.</p><p>These features work quite well for the most part, though they’re not completely accurate. For example, the camera sometimes said that an “unknown person” was seen even after I went through the face recognition onboarding process, where I named people that it should have been able to recognize going forward. It was mostly accurate, but there were definitely some misses that could be frustrating if you’re relying on the camera to tell you specifically who’s at home.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="N5kobZBCAzgUhbUrMNWAJ6" name="Google-Nest-Doorbell-(wired,-3rd-gen)--screenshot-Camera-Settings" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/N5kobZBCAzgUhbUrMNWAJ6.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Things like face recognition and AI descriptions aren’t necessarily unique anymore — plenty of other cameras these days offer similar features. But the Gemini integration helps take it to the next level. It helps make features conversational, rather than one-way, which is a nice touch. Instead of just receiving notifications or scrolling through footage, you can interact with your camera’s video history in a more natural way. Gemini will also create a summary of events for each day, which it calls the “Home Brief.” This could be handy if you miss something. Here’s an example of a Home Brief I got.</p><p>“On Tuesday morning, Christian entered the office, followed by a cat, and settled down. Christian then briefly left the room, returning shortly with a mug before exiting again. Soon after, Christian came back to the office, settled into a chair, and began working on a laptop, wearing earbuds. A cat later joined Christian, resting on their lap. At one point, Christian stood to check the door before returning to the chair. Later, Christian removed their headphones, stood up, and exited the room. In the late afternoon, another person briefly entered and then exited the office.”</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="VK4uLeQJHQfTQkyFv2WDQ6" name="Google-Nest-Doorbell-(wired,-3rd-gen)--screenshot-Home-Brief" alt="Screenshot of the Google Nest Doorbell (wired, 3rd gen) app" src="https://cdn.mos.cms.futurecdn.net/VK4uLeQJHQfTQkyFv2WDQ6.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>There are some minor errors in this brief — like the fact that I wasn’t working on a laptop (it was a desktop computer, out of sight of the camera), and that the “other person” that entered then exited was actually me. These are the kinds of very minor issues that Gemini surfaced often — and that probably won’t have much of an impact on daily security. And, remember, if you’re suspicious of anything the camera picks up, you can still simply look at the footage.</p><p>That said, I still can’t necessarily imagine using these camera-specific features much in day-to-day life, unless something happens that I need to investigate. However, the conversational aspect of the wider smart home could come in handy, especially if you have multiple devices.</p><p>It’s also worth noting that many of these AI features are still improving in terms of accuracy. I often used the “Ask Home” search bar to query my video history, and I was sometimes told that “something went wrong.” When it works, it’s impressive, but the inconsistency can be frustrating. Google is clearly still fine-tuning these features, and I expect they’ll get better over time with software updates.</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-smart-home-compatibility"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Smart home compatibility</span></h3><p>The Google Nest Cam Indoor obviously works with Google Home, but it also works with Alexa. You won't get anywhere near the same features in the Alexa app as you will in Google Home, and you'll still need to use Google Home to set the camera up. But, if you use Alexa devices like an Echo Show in your home, you'll at least be able to view a live feed of the camera and control some aspects of it using Alexa. There's no other integration — so you won't be able to use the camera with HomeKit or any other platform.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="yZo7Jk4rXGfiTLDtN2YEK8" name="Google-Nest-Doorbell-(wired,-3rd-gen)-4" alt="Google Nest Doorbell (wired, 3rd gen) on a shelf" src="https://cdn.mos.cms.futurecdn.net/yZo7Jk4rXGfiTLDtN2YEK8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>To get the most out of the camera, you'll probably want to be a Google Home user. That's no surprise — more smart home interoperability is coming with Matter, but the Matter spec still doesn't support cameras, and even if it did, you wouldn't get things like the AI descriptions outside of the Google Home app. Basically, if you’re already invested in Google Home, that’s great — you’ll be able to control the camera with voice commands, set up automations, and integrate it with other Google Home devices. If you’re not using Google Home, however, you’ll want to look elsewhere.</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-storage-and-subscription-plans"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Storage and subscription plans</span></h3><p>Unlike some other security cameras, the Nest Cam Indoor doesn’t offer any local storage options — there’s no microSD card slot, no USB storage, and no built-in internal storage. That means you’ll need one of Google’s subscription plans to get the most from the camera.</p><p>Google has recently killed off Nest Aware in favor of Google Home Premium. Google Home Premium costs $10 per month (or $100 per year) for the Standard plan, and $20 per month (or $200 per year) for the Advanced plan. The annual plans save you a bit of money compared to paying monthly, so if you’re planning to stick with the service long-term, it’s worth opting for the yearly subscription.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VH9ey5Q28rYCEYWugYyxG8" name="Google-Nest-Doorbell-(wired,-3rd-gen)-3" alt="Google Nest Doorbell (wired, 3rd gen) on a shelf" src="https://cdn.mos.cms.futurecdn.net/VH9ey5Q28rYCEYWugYyxG8.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Standard plan gets you 30 days of event-based video history, intelligent alerts for familiar faces, package detection, and more. The Advanced plan bumps that up to 60 days of event-based video history and adds 10 days of 24/7 continuous video recording, along with more detailed event descriptions and the ability to search your video history using Gemini. The Advanced plan is where the real value lies if you want to take full advantage of Gemini’s AI features, but the Standard plan should be sufficient for most users who just want to review recent events.</p><p>It’s worth noting that you can also get the Standard plan included with Google One AI Pro, and the Advanced plan with Google One AI Ultra. If you’re already subscribed to one of those plans, you’ll get Google Home Premium as part of the package. Alternatively, you can mix and match — pay $10 per month on top of your AI Pro plan for Google Home Advanced. Without a subscription, you’ll only get 6 hours of event video previews with 10-second clips, which is pretty limited and probably won’t be enough for most users who actually want to use the camera for security purposes.</p><h3 class="article-body__section" id="section-google-nest-cam-indoor-wired-3rd-gen-review-verdict"><span>Google Nest Cam Indoor (wired, 3rd gen) review: Verdict</span></h3><p>The Google Nest Cam Indoor is an excellent camera overall, and is easy to recommend for those already invested in Google’s ecosystem. The design is sleek, the video quality is good, and the Google Home app works well. The Google Home Premium subscriptions are useful, particularly if you want to take advantage of the AI-powered features, however for most users who only have a few devices, the Standard plan should be more than enough. The Advanced plan may come in handy for those with a lot of smart home products.</p><p>As a whole the Nest Cam Indoor is a great camera for Google fans who want a reliable, high-quality indoor security camera. As the AI features continue to improve over time, the camera will only get better, making it a solid choice for anyone looking to build out their Google Home setup.​​​​​​​​​​​​​​​​</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Stop porch pirates before they strike with these essential tips and devices  ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/stop-porch-pirates-before-they-strike-with-these-essential-tips-and-devices</link>
                                                                            <description>
                            <![CDATA[ Keep package thieves off of your porch with these tips, tricks and gadgets, just in time for the holidays. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ZzwpPjiyEy9NdVTzEUXhFJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/eSHDkuBXVfiZepDXAZqmcX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 06 Dec 2025 08:00:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/eSHDkuBXVfiZepDXAZqmcX-1280-80.jpg">
                                                            <media:credit><![CDATA[RightFramePhotoVideo/Shutterstock]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Staged photo of a &#039;porch pirate&#039; stealing a package from a residence&#039;s front door, as captured by a video doorbell.]]></media:description>                                                            <media:text><![CDATA[Staged photo of a &#039;porch pirate&#039; stealing a package from a residence&#039;s front door, as captured by a video doorbell.]]></media:text>
                                <media:title type="plain"><![CDATA[Staged photo of a &#039;porch pirate&#039; stealing a package from a residence&#039;s front door, as captured by a video doorbell.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/eSHDkuBXVfiZepDXAZqmcX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>More than <a href="https://www.adt.com/resources/porch-pirates" target="_blank" rel="nofollow">a third of Americans</a> have been victims of porch pirates at least once according to ADT, but why? It’s an ideal crime of opportunity and if the item on your porch happens to be expensive or very popular, then it also has high resale value.</p><p>Over the past few years, there's been a tremendous increase in online shopping and that's made package theft a high value crime. For instance, in a <a href="https://www.security.org/package-theft/annual-report/" target="_blank" rel="nofollow">recent report</a>, Security.org revealed that package thieves stole over $8 billion dollars worth of online orders last year and each package was worth an average of $222.</p><p>While some may consider package theft a more minor crime, it's becoming such a large scale issue that some lawmakers are moving to make it a federal crime akin to tampering with postal mail. Though most online retailers have a system in place for when packages go missing, you still have to spend your time going through the process and waiting for a replacement or refund. </p><p>A replacement or refund also won't work in certain situations like having your kids present in time for Christmas. The point is, you ordered something online to have it arrive at your house because you needed it, so let's make sure all your packages arrive safely. Here are some recommended steps you can take to stop porch pirates for good ahead of the holidays</p><h2 id="banish-porch-pirates-actions-you-can-take">Banish porch pirates: Actions you can take</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:57.50%;"><img id="KBu8AMXE2bCdSb2xhtGYPE" name="package-delivery-shst.jpg" alt="Woman tapping smartphone while delivery person hands her a package." src="https://cdn.mos.cms.futurecdn.net/KBu8AMXE2bCdSb2xhtGYPE.jpg" mos="" align="middle" fullscreen="" width="1000" height="575" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Indypendenz/Shutterstock)</span></figcaption></figure><p>There are a few ways to keep your house from looking attractive to porch pirates: keep bushes and foliage cut back from the porch to keep shadows and dark areas to a minimum, and make sure that you're not letting bulbs burn out in porch lights or in the lights in your yard. </p><p>Next, if you have a regular delivery driver get to know them. You can ask them to leave packages in a spot that's out of sight from passerby's and they may notice if someone is keeping watch on your house, too. Also, get to know your neighbors, if possible, either in person or online so you can watch out for each other, especially when it gets closer to major shopping holidays when you're expecting more deliveries. </p><p>If you know you'll be expecting a lot of packages, or a particularly important package, consider having it shipped to the store location. UPS or FedEx will often allow customers to pick up at store locations. Likewise, many offices may allow you to have a package delivered at your workplace if there's a mailroom that can keep your parcel, and information, secure. But you'll need to ask the appropriate people about those policies first.</p><p>When making an order, you can request that a signature be required upon delivery. That means that unless someone is home to sign for the package, it won't be delivered — and it certainly won't be left unattended on your stoop. However, that obviously means someone will have to be home to receive it which may be a different issue. </p><p>The last option is a package receiving service. You can sign up with a major delivery company for a rental locker; USPS deliveries can often be held at a local post office as well. They will typically charge a monthly fee for a secure locker located near you where you can have packages delivered. This could be a convenient option if it's close enough to where you live or work but would still require you to pick the package up and get it home. </p><h2 id="banish-porch-pirates-products-you-can-buy">Banish porch pirates: Products you can buy</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="EZDeXekbm4CM9YZFbxAsfC" name="TG_Video-Doorbell_v4" alt="Video doorbell" src="https://cdn.mos.cms.futurecdn.net/EZDeXekbm4CM9YZFbxAsfC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class="inline"></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Amazon)</span></figcaption></figure><p>There are dozens of products available to solve the porch pirate problem, some that may work better for your household than others. And some that may work together to help make your porch a less attractive target. Here are some things to start outfitting your porch to make it more secure.</p><div class="product"><a data-dimension112="247f5fef-7cdf-46af-aaf7-94375ced48e7" data-action="Deal Block" data-label="best video doorbells" data-dimension48="best video doorbells" data-dimension25="$149" href="https://www.amazon.com/dp/B09WZBPX7K?tag=georiot-us-default-20&ascsubtag=tomsguide-us-4938252099512367813-20&geniuslink=true&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="KnmNkFhJ6cbWFkgqGjoEjQ" name="61MBp1T6huL._SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/KnmNkFhJ6cbWFkgqGjoEjQ.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We have a whole list of the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html" data-dimension112="247f5fef-7cdf-46af-aaf7-94375ced48e7" data-action="Deal Block" data-label="best video doorbells" data-dimension48="best video doorbells" data-dimension25="$149">best video doorbells</a> for specific needs, but this is our favorite overall. It offers head-to-toe views, HD+ video quality, motion detection and alerts, two-way talk, color night vision and person and package detection. Your videos stay recorded for up to 180 days with a Ring subscription, and the battery power means its easy to set up in a variety of places. <a class="view-deal button" href="https://www.amazon.com/dp/B09WZBPX7K?tag=georiot-us-default-20&ascsubtag=tomsguide-us-4938252099512367813-20&geniuslink=true&th=1" target="_blank" rel="nofollow" data-dimension112="247f5fef-7cdf-46af-aaf7-94375ced48e7" data-action="Deal Block" data-label="best video doorbells" data-dimension48="best video doorbells" data-dimension25="$149">View Deal</a></p></div><div class="product"><a data-dimension112="d4f779a3-2e84-4c25-a072-db279c776ad5" data-action="Deal Block" data-label="Boxes like this one allow a delivery person to drop a package inside which can then only be grabbed once you open it. It's a bit like a USPS letter box. Again, though, there are downsides – mostly that there's a size limitation, and you're still reliant on the small lock not being snipped off." data-dimension48="Boxes like this one allow a delivery person to drop a package inside which can then only be grabbed once you open it. It's a bit like a USPS letter box. Again, though, there are downsides – mostly that there's a size limitation, and you're still reliant on the small lock not being snipped off." data-dimension25="$129" href="https://www.amazon.com/Package-Delivery-Anti-Theft-Galvanized-Waterproof/dp/B0DSC2L52F?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:679px;"><p class="vanilla-image-block" style="padding-top:112.22%;"><img id="SLY33Nz4PzcAQgYKZLoYVk" name="61yvQZlg9dL._AC_SX679_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/SLY33Nz4PzcAQgYKZLoYVk.jpg" mos="" align="middle" fullscreen="" width="679" height="762" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Boxes like this one allow a delivery person to drop a package inside which can then only be grabbed once you open it. It's a bit like a USPS letter box. Again, though, there are downsides – mostly that there's a size limitation, and you're still reliant on the small lock not being snipped off. <a class="view-deal button" href="https://www.amazon.com/Package-Delivery-Anti-Theft-Galvanized-Waterproof/dp/B0DSC2L52F?th=1" target="_blank" rel="nofollow" data-dimension112="d4f779a3-2e84-4c25-a072-db279c776ad5" data-action="Deal Block" data-label="Boxes like this one allow a delivery person to drop a package inside which can then only be grabbed once you open it. It's a bit like a USPS letter box. Again, though, there are downsides – mostly that there's a size limitation, and you're still reliant on the small lock not being snipped off." data-dimension48="Boxes like this one allow a delivery person to drop a package inside which can then only be grabbed once you open it. It's a bit like a USPS letter box. Again, though, there are downsides – mostly that there's a size limitation, and you're still reliant on the small lock not being snipped off." data-dimension25="$129">View Deal</a></p></div><div class="product"><a data-dimension112="91172f6d-9ca2-4921-ac1b-d3634a2d839d" data-action="Deal Block" data-label="wired floodlight camera" data-dimension48="wired floodlight camera" data-dimension25="$94" href="https://www.amazon.com/Arlo-Wired-Floodlight-White-FLW2001/dp/B0DB6LX5SW?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:628px;"><p class="vanilla-image-block" style="padding-top:92.20%;"><img id="VyLq7rsBSwHLYKGBDrti8m" name="Arlo Wired Floodlight Camera" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VyLq7rsBSwHLYKGBDrti8m.png" mos="" align="middle" fullscreen="" width="628" height="579" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Arlo sells a <a href="https://www.amazon.com/Arlo-Wired-Floodlight-White-FLW2001/dp/B0DB6LX5SW" target="_blank" rel="nofollow" data-dimension112="91172f6d-9ca2-4921-ac1b-d3634a2d839d" data-action="Deal Block" data-label="wired floodlight camera" data-dimension48="wired floodlight camera" data-dimension25="$94">wired floodlight camera</a> that includes color night vision, a 160-degree field of view, a built in siren, two way audio and has 2K video quality. Normally $150, it's currently on sale for less than $100. Our favorite budget outdoor camera without a floodlight is the <a href="https://www.tomsguide.com/reviews/blink-outdoor-4">Blink Outdoor 4</a>; it's wireless and runs on batteries for easy installation. <a class="view-deal button" href="https://www.amazon.com/Arlo-Wired-Floodlight-White-FLW2001/dp/B0DB6LX5SW?th=1" target="_blank" rel="nofollow" data-dimension112="91172f6d-9ca2-4921-ac1b-d3634a2d839d" data-action="Deal Block" data-label="wired floodlight camera" data-dimension48="wired floodlight camera" data-dimension25="$94">View Deal</a></p></div><div class="product"><a data-dimension112="c8f7df76-7fbb-432d-b61a-6c7b935cc437" data-action="Deal Block" data-label="Smart lights are great because you can program them to come on at various times to make people think you are home. Most work with Alexa or Google Assistant and can be programmed  to match your daytime or nighttime needs using routines. This can help illuminate your porches, and bring light to dark spots that may cause shadows." data-dimension48="Smart lights are great because you can program them to come on at various times to make people think you are home. Most work with Alexa or Google Assistant and can be programmed  to match your daytime or nighttime needs using routines. This can help illuminate your porches, and bring light to dark spots that may cause shadows." data-dimension25="$39" href="https://www.amazon.com/Govee-Changing-Dynamic-Bluetooth-Assistant/dp/B09B7NQT2K/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:896px;"><p class="vanilla-image-block" style="padding-top:133.93%;"><img id="etMnu5dic2JmPrLyqH6ASj" name="Govee Smart Light Bulbs (4 Pack)" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/etMnu5dic2JmPrLyqH6ASj.jpg" mos="" align="middle" fullscreen="" width="896" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Smart lights are great because you can program them to come on at various times to make people think you are home. Most work with Alexa or Google Assistant and can be programmed  to match your daytime or nighttime needs using routines. This can help illuminate your porches, and bring light to dark spots that may cause shadows. <a class="view-deal button" href="https://www.amazon.com/Govee-Changing-Dynamic-Bluetooth-Assistant/dp/B09B7NQT2K/?th=1" target="_blank" rel="nofollow" data-dimension112="c8f7df76-7fbb-432d-b61a-6c7b935cc437" data-action="Deal Block" data-label="Smart lights are great because you can program them to come on at various times to make people think you are home. Most work with Alexa or Google Assistant and can be programmed  to match your daytime or nighttime needs using routines. This can help illuminate your porches, and bring light to dark spots that may cause shadows." data-dimension48="Smart lights are great because you can program them to come on at various times to make people think you are home. Most work with Alexa or Google Assistant and can be programmed  to match your daytime or nighttime needs using routines. This can help illuminate your porches, and bring light to dark spots that may cause shadows." data-dimension25="$39">View Deal</a></p></div><div class="product"><a data-dimension112="b33c7bf5-f6c0-4eb2-9302-257be0ed1a39" data-action="Deal Block" data-label="There are a ton of different motion detectors out there but these can send alerts to your phone when they register an open window or door, or they can set off an optional siren that's sold separately. If you link these motion detectors to a Ring camera, it will turn on when the detectors sense movement. They can be mounted to flat walls or corners, and run on AA batteries." data-dimension48="There are a ton of different motion detectors out there but these can send alerts to your phone when they register an open window or door, or they can set off an optional siren that's sold separately. If you link these motion detectors to a Ring camera, it will turn on when the detectors sense movement. They can be mounted to flat walls or corners, and run on AA batteries." data-dimension25="$39" href="https://www.amazon.com/Ring-Alarm-Contact-Sensor-2pk/dp/B07ZB2RNTW?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="BCyF5v5kJmvJMb8sGTZgpi" name="41xtjE8Co3L._SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/BCyF5v5kJmvJMb8sGTZgpi.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>There are a ton of different motion detectors out there but these can send alerts to your phone when they register an open window or door, or they can set off an optional siren that's sold separately. If you link these motion detectors to a Ring camera, it will turn on when the detectors sense movement. They can be mounted to flat walls or corners, and run on AA batteries. <a class="view-deal button" href="https://www.amazon.com/Ring-Alarm-Contact-Sensor-2pk/dp/B07ZB2RNTW?th=1" target="_blank" rel="nofollow" data-dimension112="b33c7bf5-f6c0-4eb2-9302-257be0ed1a39" data-action="Deal Block" data-label="There are a ton of different motion detectors out there but these can send alerts to your phone when they register an open window or door, or they can set off an optional siren that's sold separately. If you link these motion detectors to a Ring camera, it will turn on when the detectors sense movement. They can be mounted to flat walls or corners, and run on AA batteries." data-dimension48="There are a ton of different motion detectors out there but these can send alerts to your phone when they register an open window or door, or they can set off an optional siren that's sold separately. If you link these motion detectors to a Ring camera, it will turn on when the detectors sense movement. They can be mounted to flat walls or corners, and run on AA batteries." data-dimension25="$39">View Deal</a></p></div><div class="product"><a data-dimension112="715596aa-7bf1-4a73-ba2e-7aed12273019" data-action="Deal Block" data-label="Signs for your windows or yard that indicate your property is watched by cameras (and/or neighbors) aren't very expensive – and they can help bring eyes to your home. Even if you don't have a whole home security setup, they can help draw attention to your porch, driveway or problem areas, which can deter someone from snagging packages that are sitting out." data-dimension48="Signs for your windows or yard that indicate your property is watched by cameras (and/or neighbors) aren't very expensive – and they can help bring eyes to your home. Even if you don't have a whole home security setup, they can help draw attention to your porch, driveway or problem areas, which can deter someone from snagging packages that are sitting out." data-dimension25="$4" href="https://www.amazon.com/Qofaoye-Trespassing-Private-Property-Surveillance/dp/B0FH3NWHJX/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:466px;"><p class="vanilla-image-block" style="padding-top:87.55%;"><img id="HEoaxfUdkioBk9QaPvAXGD" name="71vL+0bqdGL._AC_SX466_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/HEoaxfUdkioBk9QaPvAXGD.jpg" mos="" align="middle" fullscreen="" width="466" height="408" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Signs for your windows or yard that indicate your property is watched by cameras (and/or neighbors) aren't very expensive – and they can help bring eyes to your home. Even if you don't have a whole home security setup, they can help draw attention to your porch, driveway or problem areas, which can deter someone from snagging packages that are sitting out. <a class="view-deal button" href="https://www.amazon.com/Qofaoye-Trespassing-Private-Property-Surveillance/dp/B0FH3NWHJX/" target="_blank" rel="nofollow" data-dimension112="715596aa-7bf1-4a73-ba2e-7aed12273019" data-action="Deal Block" data-label="Signs for your windows or yard that indicate your property is watched by cameras (and/or neighbors) aren't very expensive – and they can help bring eyes to your home. Even if you don't have a whole home security setup, they can help draw attention to your porch, driveway or problem areas, which can deter someone from snagging packages that are sitting out." data-dimension48="Signs for your windows or yard that indicate your property is watched by cameras (and/or neighbors) aren't very expensive – and they can help bring eyes to your home. Even if you don't have a whole home security setup, they can help draw attention to your porch, driveway or problem areas, which can deter someone from snagging packages that are sitting out." data-dimension25="$4">View Deal</a></p></div><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">Best Ring doorbell: Which Ring Video Doorbell should you buy?</a></li><li><a href="https://www.tomsguide.com/best-picks/best-outdoor-security-cameras">Best outdoor security cameras in 2025</a></li><li><a href="https://www.tomsguide.com/home/smart-home/5-things-to-think-about-when-buying-and-installing-an-outdoor-security-camera">5 things to think about when buying and installing an outdoor security camera</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 5 things to look for when buying a video doorbell ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/5-things-to-look-for-when-buying-a-video-doorbell</link>
                                                                            <description>
                            <![CDATA[ Thinking of buying a video doorbell? Here are five things you'll want to consider when making your decision. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">58CW69mjcrcrBMjU8CXZ2i</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/EZDeXekbm4CM9YZFbxAsfC-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Thu, 04 Dec 2025 21:27:09 +0000</pubDate>                                                                                                                                <updated>Thu, 04 Dec 2025 21:42:23 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/EZDeXekbm4CM9YZFbxAsfC-1280-80.jpg">
                                                            <media:credit><![CDATA[Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Video doorbell]]></media:description>                                                            <media:text><![CDATA[Video doorbell]]></media:text>
                                <media:title type="plain"><![CDATA[Video doorbell]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/EZDeXekbm4CM9YZFbxAsfC-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>During the holiday shopping season, there are often a load of Black Friday deals on video doorbells, making it an excellent time to upgrade your home security for less. But, with many products at deep discounts, it can be tough to decide which video doorbell you should get.</p><p>I've been overseeing our guide to the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">best video doorbells</a> for more than five years, and have come up with five simple things you should consider before buying one for your door. </p><div class="product"><a data-dimension112="58d2a683-0873-4640-b5b5-2693f7a0e1b7" data-action="Deal Block" data-label="Ring Wired Doorbell Pro" data-dimension48="Ring Wired Doorbell Pro" href="https://ring.com/products/wired-doorbell-pro" target="_blank" rel="nofollow sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:5000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="bEKiBRdrSXrUSMsk5ppzaM" name="Ring - Product Inclusion - DB - 2025" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/bEKiBRdrSXrUSMsk5ppzaM.jpg" mos="" align="middle" fullscreen="" width="5000" height="5000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://ring.com/products/wired-doorbell-pro" target="_blank" rel="nofollow sponsored" data-dimension112="58d2a683-0873-4640-b5b5-2693f7a0e1b7" data-action="Deal Block" data-label="Ring Wired Doorbell Pro" data-dimension48="Ring Wired Doorbell Pro" data-dimension25=""><u><strong>Ring Wired Doorbell Pro</strong></u></a></p><p>High-quality video? Low-light sight? Two-way talk? Whatever is on your wish list for a video doorbell, Ring's latest Wired Doorbell Pro has it. The video gives a wide-angle 4K view with up to 10 times enhanced zoom. The radar-powered 3D motion detection gives you more precise alerts. With low-light sight, live view and two-way talk with enhanced audio, you'll be able to see, hear and speak with visitors in real time.<a class="view-deal button" href="https://ring.com/products/wired-doorbell-pro" target="_blank" rel="nofollow sponsored" data-dimension112="58d2a683-0873-4640-b5b5-2693f7a0e1b7" data-action="Deal Block" data-label="Ring Wired Doorbell Pro" data-dimension48="Ring Wired Doorbell Pro" data-dimension25="">View Deal</a></p></div><h2 id="camera-resolution">Camera resolution </h2><p>At this point, you should not get a video doorbell that doesn't have at least a resolution of 1080p, or something similarly high, such as 1536 x 1536. Some of the best video doorbells have even higher resolutions — for example, the newest <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review">Ring Wired Doorbell Pro</a> has a 4K camera which, when coupled with HDR, allows for not just sharp video, but also lets you better see further into your yard. </p><h2 id="field-of-view">Field of view</h2><p>When video doorbells first arrived on the scene, the cameras that they used were largely off-the-shelf components, which meant that they gave you a wide field of view, but not one that was well-suited for the front of your door.</p><p>Now, most video doorbells have either a square or vertically oriented field of view, which means that the camera can better capture what's at the foot of your door, which helps you better see if someone has left a package. </p><p>Some video doorbells, like the <a href="https://www.tomsguide.com/reviews/eufy-video-doorbell-dual">Eufy Video Doorbell Dual</a>, even have two cameras — one that points straight ahead, and one that looks at the foot of your door — so that you can see things even better.</p><h2 id="package-and-person-detection">Package and person detection</h2><p>Package detection has become a near-ubiquitous feature for most video doorbells, so you should not get one that lacks this feature. Especially around the holiday season, it's important to see when something has been delivered — and if someone tries to swipe it from your stoop.</p><p>Most video doorbells also support person detection, which helps filter out unwanted notifications such as cars passing by. Certain Eufy, Google, and Ring video doorbells even have a Familiar Faces feature, where they can recognize family and friends that you've added to the system, to deliver even more customized notifications. </p><h2 id="local-storage-and-battery-backup">Local storage and battery backup</h2><p>What happens to your video doorbell if your power or internet goes out? If you want a little extra peace of mind, you'll want to choose a model that can run on battery power, and is capable of storing video footage locally - whether that's on the doorbell itself, or on a hub inside your house.</p><p><a href="https://www.tomsguide.com/reviews/nest-doorbell-battery">Google's Nest Doorbell (battery)</a> can store up to three hours of footage locally. The Eufy Video Doorbell E340 also has battery backup and local storage. Ring's battery-powered video doorbells can also store local footage, but only if you have a Ring Alarm Pro security system. Blink's video doorbell also has battery backup, and can save video locally to the Blink Sync module — but you've got to make sure that device can also get power in case of a blackout.</p><h2 id="subscription-costs">Subscription costs</h2><p>Unfortunately, there's more to a video doorbell than just the cost of the device itself. Most of the best video doorbells require you to sign up for a subscription in order to use many of their features, like the ability to save video footage, or get package alerts. Some companies that have subscription-free doorbells will charge more upfront for their products, but you'll end up saving more over the long term.</p><p>Before you purchase a video doorbell, take a look to see how much it will cost you per year to use the device. For most companies that require a subscription, it's often more cost-effective to get a multiple-device subscription, so that you can outfit your house with not just a video doorbell, but security cameras as well. </p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ These are the 7 best Cyber Monday home security camera deals — no subscription needed ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/7-best-black-friday-security-camera-deals-right-now-no-subscriptions-required</link>
                                                                            <description>
                            <![CDATA[ Before Cyber Monday ends, take the time to invest in a home security camera that doesn't tack on any added subscription fees. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">qiBxQ2j3hm46ztqWsT7WZk</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2MLGtj2eSLskMg6JU5bhNM-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 28 Nov 2025 17:56:52 +0000</pubDate>                                                                                                                                <updated>Mon, 01 Dec 2025 19:06:57 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2MLGtj2eSLskMg6JU5bhNM-1280-80.jpg">
                                                            <media:credit><![CDATA[Wyze]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wyze Cam Pan v4 attached to the exterior of a house with a yard in the background]]></media:description>                                                            <media:text><![CDATA[Wyze Cam Pan v4 attached to the exterior of a house with a yard in the background]]></media:text>
                                <media:title type="plain"><![CDATA[Wyze Cam Pan v4 attached to the exterior of a house with a yard in the background]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2MLGtj2eSLskMg6JU5bhNM-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Everyone wants one of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> to help secure their homes, but not everyone wants to sign up for yet another subscription fee in order to do so. And many smart security cameras have features, like person and package detection, that are locked behind subscriptions.</p><p>However, that isn't the case for the models on this list. Brands like Eufy, Wyze and Reolink offer local storage, usually courtesy of a microSD card slot, which allow you to store your footage without requiring you to pay a monthly fee.</p><p>That means you can purchase multiple cameras and secure your home without worrying about tacking on any additional costs, and these brands have excellent features and multiple models available – so you can choose from small indoor cameras to watch out for pets and kids, a budget outdoor camera that can keep an eye on an alleyway or even purchase a solar model that requires no power supply at all. </p><p>Either way, you'll wanted to take advantage of these deals before Cyber Monday ends on home security cameras that I can personally recommend based on our extensive real-world testing and reviews.  You'll have to hurry as many of these sales are over at the end of the day. </p><h3 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h3><ul><li><strong>Reolink 4MP Indoor Security Camera E1:</strong><a href="https://www.amazon.com/Wireless-Security-Reolink-Monitor-Two-Way/dp/B07X81M2D2?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong> was $40 now $25 @ Amazon</strong></a><strong></strong></li><li><strong>Reolink First 4K Solar Security Camera: </strong><a href="https://www.amazon.com/REOLINK-Argus-PT-Ultra-Auto-Tracking/dp/B0C2PY2KTJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $150 now $97 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security Indoor Cam C210: </strong><a href="https://www.amazon.com/eufy-Security-Resolution-Tracking-Compatible/dp/B0CQ74RGYT?ref_=ast_sto_dp" target="_blank" rel="nofollow"><strong>was $30 now $25 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security Indoor Cam S350: </strong><a href="https://www.amazon.com/eufy-Security-Cameras-Resolution-Dual-Band/dp/B0CD7F1M9R?ref_=ast_sto_dp" target="_blank" rel="nofollow"><strong>was $140 now $79 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security S330: </strong><a href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX?ref_=ast_sto_dp" target="_blank" rel="nofollow"><strong>was $220 now $129 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Cam OG Indoor/Outdoor:</strong><a href="https://www.amazon.com/Security-Spotlight-Detection-Compatible-Assistant/dp/B0B75T6CTH?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong> was $30 now $14 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Cam Pan v4: </strong><a href="https://www.amazon.com/WYZE-Security-Outdoor-Cameras-Assistant/dp/B0F8VWZF5R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $60 now $49 @ Amazon</strong></a><strong></strong></li></ul><h3 class="article-body__section" id="section-home-security-camera-deals"><span>Home Security Camera Deals</span></h3><div class="product"><a data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Reolink's indoor E1 is intended as a pet/baby camera and has features that are ideal for that purpose: 360 degree view, pet and person detection, night vision and two-way talk. The 4MP infrared night vision can show details like a child breathing at night, and the local storage is available via multiple options including a 512 microSD card slot, Reolink NVR, or a Reolink Home Hub none of which will require a monthly fee." data-dimension48="Reolink's indoor E1 is intended as a pet/baby camera and has features that are ideal for that purpose: 360 degree view, pet and person detection, night vision and two-way talk. The 4MP infrared night vision can show details like a child breathing at night, and the local storage is available via multiple options including a 512 microSD card slot, Reolink NVR, or a Reolink Home Hub none of which will require a monthly fee." data-dimension25="$25" href="https://www.amazon.com/Wireless-Security-Reolink-Monitor-Two-Way/dp/B07X81M2D2?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1420px;"><p class="vanilla-image-block" style="padding-top:91.55%;"><img id="PfmddV3NCD8T7irZAnqqCW" name="71unbRC9kXL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/PfmddV3NCD8T7irZAnqqCW.jpg" mos="" align="middle" fullscreen="" width="1420" height="1300" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Reolink's indoor E1 is intended as a pet/baby camera and has features that are ideal for that purpose: 360 degree view, pet and person detection, night vision and two-way talk. The 4MP infrared night vision can show details like a child breathing at night, and the local storage is available via multiple options including a 512 microSD card slot, Reolink NVR, or a Reolink Home Hub none of which will require a monthly fee. <a class="view-deal button" href="https://www.amazon.com/Wireless-Security-Reolink-Monitor-Two-Way/dp/B07X81M2D2?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Reolink's indoor E1 is intended as a pet/baby camera and has features that are ideal for that purpose: 360 degree view, pet and person detection, night vision and two-way talk. The 4MP infrared night vision can show details like a child breathing at night, and the local storage is available via multiple options including a 512 microSD card slot, Reolink NVR, or a Reolink Home Hub none of which will require a monthly fee." data-dimension48="Reolink's indoor E1 is intended as a pet/baby camera and has features that are ideal for that purpose: 360 degree view, pet and person detection, night vision and two-way talk. The 4MP infrared night vision can show details like a child breathing at night, and the local storage is available via multiple options including a 512 microSD card slot, Reolink NVR, or a Reolink Home Hub none of which will require a monthly fee." data-dimension25="$25">View Deal</a></p></div><div class="product"><a data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Reolink's outdoor 4K security camera runs off of just 20 minutes of daily solar power so it doesn't require batteries or wires, and you don't need to worry about power outages. It also has a 360-degree pan and tilt auto-tracking feature, 8MP color night vision with a motion spotlight, and smart detection for person, vehicle and pet detection and a built-in siren. Like the indoor model above, it can use a microSD card slot to record events locally so you never have to sign up for any monthly subscription fees to access your video footage." data-dimension48="Reolink's outdoor 4K security camera runs off of just 20 minutes of daily solar power so it doesn't require batteries or wires, and you don't need to worry about power outages. It also has a 360-degree pan and tilt auto-tracking feature, 8MP color night vision with a motion spotlight, and smart detection for person, vehicle and pet detection and a built-in siren. Like the indoor model above, it can use a microSD card slot to record events locally so you never have to sign up for any monthly subscription fees to access your video footage." data-dimension25="$97" href="https://www.amazon.com/REOLINK-Argus-PT-Ultra-Auto-Tracking/dp/B0C2PY2KTJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:178.12%;"><img id="xnJJeQ8PFZoSoBusjzzStL" name="614WLFXXNkL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/xnJJeQ8PFZoSoBusjzzStL.jpg" mos="" align="middle" fullscreen="" width="425" height="757" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Reolink's outdoor 4K security camera runs off of just 20 minutes of daily solar power so it doesn't require batteries or wires, and you don't need to worry about power outages. It also has a 360-degree pan and tilt auto-tracking feature, 8MP color night vision with a motion spotlight, and smart detection for person, vehicle and pet detection and a built-in siren. Like the indoor model above, it can use a microSD card slot to record events locally so you never have to sign up for any monthly subscription fees to access your video footage. <a class="view-deal button" href="https://www.amazon.com/REOLINK-Argus-PT-Ultra-Auto-Tracking/dp/B0C2PY2KTJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Reolink's outdoor 4K security camera runs off of just 20 minutes of daily solar power so it doesn't require batteries or wires, and you don't need to worry about power outages. It also has a 360-degree pan and tilt auto-tracking feature, 8MP color night vision with a motion spotlight, and smart detection for person, vehicle and pet detection and a built-in siren. Like the indoor model above, it can use a microSD card slot to record events locally so you never have to sign up for any monthly subscription fees to access your video footage." data-dimension48="Reolink's outdoor 4K security camera runs off of just 20 minutes of daily solar power so it doesn't require batteries or wires, and you don't need to worry about power outages. It also has a 360-degree pan and tilt auto-tracking feature, 8MP color night vision with a motion spotlight, and smart detection for person, vehicle and pet detection and a built-in siren. Like the indoor model above, it can use a microSD card slot to record events locally so you never have to sign up for any monthly subscription fees to access your video footage." data-dimension25="$97">View Deal</a></p></div><div class="product"><a data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="C220" data-dimension48="C220" data-dimension25="$25" href="https://www.amazon.com/eufy-Security-Resolution-Tracking-Compatible/dp/B0CQ74RGYT?ref_=ast_sto_dp" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:128.94%;"><img id="JuypZBecxGNhtAiF6rKHJe" name="51-YPIUaKpL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/JuypZBecxGNhtAiF6rKHJe.jpg" mos="" align="middle" fullscreen="" width="425" height="548" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This Eufy C210 indoor cam is almost identical to the <a href="https://www.tomsguide.com/home/smart-home/eufy-cam-c220-review" data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="C220" data-dimension48="C220" data-dimension25="$25">C220</a> we've previously reviewed. The C210 has a 1080p video resolution, and like the C220 a 360-degree field of view, and uses AI to track any motion it senses. It has a privacy mode, where the camera is faced downwards and turned off, and the microSD card holds up to 126GB of local storage. It has custom activity zones, and will alert you via the app of any movement, and can also work alongside Alexa or Google Assistant.<a class="view-deal button" href="https://www.amazon.com/eufy-Security-Resolution-Tracking-Compatible/dp/B0CQ74RGYT?ref_=ast_sto_dp" target="_blank" rel="nofollow" data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="C220" data-dimension48="C220" data-dimension25="$25">View Deal</a></p></div><div class="product"><a data-dimension112="96214a66-d480-43ee-8c9c-983a4a8de6c7" data-action="Deal Block" data-label="best indoor security camera without a subscription" data-dimension48="best indoor security camera without a subscription" data-dimension25="$79" href="https://www.amazon.com/eufy-Security-Cameras-Resolution-Dual-Band/dp/B0CD7F1M9R?ref_=ast_sto_dp" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:94.59%;"><img id="e95acKzsJFGEtVitNPLNHm" name="41KrprgMcDL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/e95acKzsJFGEtVitNPLNHm.jpg" mos="" align="middle" fullscreen="" width="425" height="402" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This home security camera is actually our choice for <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras#section-best-indoor-camera-without-subscription" data-dimension112="96214a66-d480-43ee-8c9c-983a4a8de6c7" data-action="Deal Block" data-label="best indoor security camera without a subscription" data-dimension48="best indoor security camera without a subscription" data-dimension25="$79">best indoor security camera without a subscription</a>. Why? Because it offers 4K video resolution, 360 degree field of view, AI powered person, package and vehicle detection, infrared night vision and local video storage for less than $100. In our <a href="https://www.tomsguide.com/home/smart-home/eufy-cam-s350-review-the-best-4k-indoor-security-camera-without-a-subscription">Eufy Indoor Security Cam S350 review</a>, we liked the sharp video quality, and how the camera was able to handle situations that had bright lights during nighttime.<a class="view-deal button" href="https://www.amazon.com/eufy-Security-Cameras-Resolution-Dual-Band/dp/B0CD7F1M9R?ref_=ast_sto_dp" target="_blank" rel="nofollow" data-dimension112="96214a66-d480-43ee-8c9c-983a4a8de6c7" data-action="Deal Block" data-label="best indoor security camera without a subscription" data-dimension48="best indoor security camera without a subscription" data-dimension25="$79">View Deal</a></p></div><div class="product"><a data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="top pick" data-dimension48="top pick" data-dimension25="$129" href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX?ref_=ast_sto_dp" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:80.47%;"><img id="c3LK9H7mbg3hWAwQ73GtvF" name="512x0sIKH+L._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/c3LK9H7mbg3hWAwQ73GtvF.jpg" mos="" align="middle" fullscreen="" width="425" height="342" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Not only is the eufyCam 3 a <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras#section-best-no-subscription-camera" data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="top pick" data-dimension48="top pick" data-dimension25="$129">top pick </a>or not requiring a subscription and offering local storage but it also uses solar power making it easy to place in a variety of spots. We also like its facial recognition feature powered by AI. The 4K video resolution is crisp and clear during day and nighttime; the cameras can be trained to recognize familiar faces; and it can work along with Alexa and Google Assistant. While it has 16GB of storage built-in, that can be expanded with an HDD or SSD.<a class="view-deal button" href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX?ref_=ast_sto_dp" target="_blank" rel="nofollow" data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="top pick" data-dimension48="top pick" data-dimension25="$129">View Deal</a></p></div><div class="product"><a data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-dimension25="$14" href="https://www.amazon.com/Security-Spotlight-Detection-Compatible-Assistant/dp/B0B75T6CTH?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:148.71%;"><img id="WQ3jFFNjyVnPxA7uXeaara" name="51EItO-cq9L._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/WQ3jFFNjyVnPxA7uXeaara.jpg" mos="" align="middle" fullscreen="" width="425" height="632" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Wyze's OG indoor camera is as solid as their<a href="https://www.tomsguide.com/home/smart-home/wyze-cam-v4-review-the-new-king-of-budget-security-cameras" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="" data-dimension48="" data-dimension25="$14"> </a>Cam v4 – it's just as small, lightweight and inexpensive. The OG model has 1080p video and color night vision, and an IP65 rating for indoor and outdoor use. It features a microSD slot for local storage as well as cloud recording with subscription, and people, pet and package detection. You get notifications for motion and sound alerts, and there's a built-in spotlight and siren as well.<a class="view-deal button" href="https://www.amazon.com/Security-Spotlight-Detection-Compatible-Assistant/dp/B0B75T6CTH?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="" data-dimension48="" data-dimension25="$14">View Deal</a></p></div><div class="product"><a data-dimension112="c20f8c1b-0dbd-43fa-b4ad-c3c9849f24fb" data-action="Deal Block" data-label="Wyze Cam Pan v4" data-dimension48="Wyze Cam Pan v4" data-dimension25="$49" href="https://www.amazon.com/WYZE-Security-Outdoor-Cameras-Assistant/dp/B0F8VWZF5R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:132.00%;"><img id="ZyheXAXfxF9CwGzADJZz9T" name="61XGrANbv9L._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ZyheXAXfxF9CwGzADJZz9T.jpg" mos="" align="middle" fullscreen="" width="425" height="561" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>When we tested the <a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review" data-dimension112="c20f8c1b-0dbd-43fa-b4ad-c3c9849f24fb" data-action="Deal Block" data-label="Wyze Cam Pan v4" data-dimension48="Wyze Cam Pan v4" data-dimension25="$49">Wyze Cam Pan v4</a> we called it the best budget 4K security camera, because it provides crisp 4K video detail, a built-in spotlight and color night footage. You also get local recording, and AI powered tracking features that can follow the motion of people and pets. It will work in or out of doors, and is compatible with Alexa and Google Assistant. The Cam Pan v4 gets its name from being able to pan and tilt 360 full degrees, and while we saw plenty of precise detail in testing we would have liked to see wider angles included. Still, there's plenty to like in a small package for under $50.<a class="view-deal button" href="https://www.amazon.com/WYZE-Security-Outdoor-Cameras-Assistant/dp/B0F8VWZF5R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="c20f8c1b-0dbd-43fa-b4ad-c3c9849f24fb" data-action="Deal Block" data-label="Wyze Cam Pan v4" data-dimension48="Wyze Cam Pan v4" data-dimension25="$49">View Deal</a></p></div><p><em>For more great discounts be sure to check out our </em><a href="https://www.tomsguide.com/live/news/cyber-monday-deals-live-2025-from-three-dollars"><em>Cyber Monday deals live blog</em></a><em> right now.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 9 Black Friday video doorbell deals worth shopping now - save up to 50% on our favorites from Ring, Arlo, Eufy and more ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/9-black-friday-video-doorbell-deals-worth-shopping-now-save-up-to-50-percent-on-our-favorites-from-ring-arlo-eufy-and-more</link>
                                                                            <description>
                            <![CDATA[ If you haven't already upgraded your home to include a video doorbell, this Black Friday is the perfect time to do so. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">jdAzeQxnxq4MfuUUUrhvim</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/gMPygvoseQuGcV3kJRKfmK-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 26 Nov 2025 09:00:00 +0000</pubDate>                                                                                                                                <updated>Wed, 26 Nov 2025 17:37:41 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/gMPygvoseQuGcV3kJRKfmK-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Black Friday doorbell deals]]></media:description>                                                            <media:text><![CDATA[Black Friday doorbell deals]]></media:text>
                                <media:title type="plain"><![CDATA[Black Friday doorbell deals]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/gMPygvoseQuGcV3kJRKfmK-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If you haven't already invested in a video doorbell, the holiday season is the perfect reason to do so, from preventing porch pirates stealing holiday packages to having an easy way to allow guests inside when you’re still stuck in traffic. Now that <a href="https://www.tomsguide.com/black-friday-deals-and-sales">Black Friday</a> is here, tech deals are popping up left and right – including some great deals on the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">best video doorbells</a>.   </p><p>After reviewing dozens of video doorbells, we know which features and brands make are worth buying and what price points make for a great deal. You actually don’t have to spend a lot to protect your home and your packages with a dependable and functional video doorbell; these are all $140 or less, and some are on sale for only $50. </p><p>Be sure to keep an eye out for even bigger deals as on everything you need to upgrade your home - but a new video doorbell is a great place to start.</p><h3 class="article-body__section" id="section-quick-links"><span>Quick links</span></h3><ul><li><strong>Ring Battery Doorbell: </strong><a href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV/ref=sr_1_1?crid=2GL24VKEOME5X&dib=eyJ2IjoiMSJ9.xMdRQ_q4aK1J34OT3DQjevJoGUnLOaL8EUChCjs9LIEyeUwrFiw0QL74QUPlZkRxOgNtUkiRvOgomwnHr_3qUU_lCDSY5W3b7d_8V1RzsmqVEtIWCTrXhGB4EhfFQZHwMI82sJMruEH_z4wPmZuVJU52N7HGT7atXqwDWz4ad-Fwj90qG0xdBYvmrD5S_hKq6aM_W_oa0oe0DoTq0H9MVnKMw02Kz3V486nnsaGz-en8KwUvCK_Pg89EozYv6RsMgFGYpKQoAphsHpPawrQKIIiW6T__THq2I-Rmdh4UDgI.h5LxgBtzcHoK5IY22A4qLIe4nDjv3IH3QdPMejX6dy8&dib_tag=se&keywords=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo&qid=1764004367&s=amazon-devices&sprefix=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo%2Camazon-devices%2C91&sr=1-1&th=1" target="_blank" rel="nofollow"><strong>was $99 now $49 @ Amazon</strong></a><strong></strong></li><li><strong>Arlo Video Doorbell 2K: </strong><a href="https://www.amazon.com/Arlo-Video-Doorbell-2nd-Generation/dp/B0C683F516/ref=sr_1_1_sspa?crid=GI9Q4A6BBLCI&dib=eyJ2IjoiMSJ9.mFiPm_9-UVUMVP71l1kNaz0wUtlLzq7uw-3cuEsR1XSUXPqW6qgXXg68QLC4YFO43Bphn8x9UybaeXlCu4hNYQG0n9OP6RUXfuegCYNfk1CzD8OI2LgDZSTSiXS7FOqlNlBLCkGDItpzziOza2uMNK69kgC4z3cuNcySVjFLDG71dDZWhb7PAO8K8NWzmCpJH-X3tXSMeH9L1Nsrjneg1GM5Ra-DfMVJoLOlWnqRVHtSR4ic1H2HiASdAzR6f7-vx0GsFEzpTV23DS0LAt3UlIa2jA71KB-1qVR4I6vI9MU.hi5-3O2xigkW8wrlx_DJrwtaUhzBQ_j8X4T0siU6AjU&dib_tag=se&keywords=arlo%2Bvideo%2Bdoorbell%2B2nd%2Bgeneration%2Bwired&qid=1764004473&sprefix=arlo%2Bvideo%2B%2Caps%2C100&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1" target="_blank" rel="nofollow"><strong>was $59 now $49 @ Amazon</strong></a><strong></strong></li><li><strong>Arlo Video Doorbell HD: </strong><a href="https://www.amazon.com/Arlo-Doorbell-Wireless-Integrated-Notifications/dp/B0DVTGJ143?ref_=ast_sto_dp" target="_blank" rel="nofollow"><strong>was $79 now $51 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security Wireless Video Doorbell E340: </strong><a href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0CD7NT4Y9/ref=sr_1_2?crid=14MXYYMBRERHN&dib=eyJ2IjoiMSJ9.ouGy1e4Ytya3TO3gEgwb9fhxJjzIkhBTPjc_lOaIrv9X9FPn9meTj773ZHz5XO6lT-fJ_7IEMagIMlXm6s_2e47_qoz77xnWRovINdhWZhrOKHwUkrsHAlmEil6QbrMqKgZzSBppnm0sbA9WBtD1qTcX0MFbqt2y4bHPpJSB0CI266eHswIpTUGz9kFEVzmQJQmw6f8SV0PXGffTdtGC68m1_8crauqzNQRg4t3FaXTAPu4YZtE53VBX80Mrd3Yu_1tYKvSUHxK_YiQJji8wPz-aqq17StJdfI76TS5xgLI.Hben-azvTvsEkxI37LXI8t2dCv_XUD5ZkPYcn1JFgBQ&dib_tag=se&keywords=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible&qid=1764006158&s=hi&sprefix=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible%2Ctools%2C97&sr=1-2&th=1" target="_blank" rel="nofollow"><strong>was $149 now $89 @ Amazon</strong></a><strong></strong></li><li><strong>ecobee Smart Video Doorbell (Wired): </strong><a href="https://www.amazon.com/ecobee-Smart-Video-Doorbell-Camera/dp/B0C424CVZ8/ref=sr_1_1_sspa?crid=2XTBX4ARC6T3G&dib=eyJ2IjoiMSJ9.xi9AtIOrgFckBPNTvEAUtYlitM3sjS8jUP3YNXgjRH3tIf6I0enbLsBbr8pekc7u2rvVFJu9wOVymRYn6EtsdUkrri5rHSsMBnbhc3tcDIkZQOpdwJpKNIGBx7-B4fZDtNVzy42JwEogqqNVGneyAsnB7eff0MwW3JwGbSnkwzypM_Ii8YqJI5fE5xoGkgEchWe86awVRRWoSJ2fUYXbHpnGarWqwew7poQJ740vGWA9oq55oitj0A7nOcqfVdHszYAZ6PdAXP8Uh1JrXaeUE9h-j25MRZZV9SSwn6Xv_6k.dXXNORSCFC7slD7X1peMHoL9J3cWMPTV2bA1nA-D3Ak&dib_tag=se&keywords=ecobee%2Bsmart%2Bdoorbell%2Bwired&qid=1764006403&sprefix=ecobee%2Bsmart%2Bdoorbell%2Bwired%2Caps%2C115&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1" target="_blank" rel="nofollow"><strong>was $159 now $119 @ Amazon</strong></a><strong> </strong></li><li><strong>Ring Wired Doorbell Pro: </strong><a href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/ref=sr_1_3?crid=4R2P79KLC1KB&dib=eyJ2IjoiMSJ9.4q7rOpJzrCxN5zMiFAtQw0bpsbA_qdgni7MIqTRuHE0FSaSa6iFW2480L8MAX3sn8FAIAK0tZeC5oeULfd76vVfgw9Jq6CXdrn-KQjrCYD0db8CODYqNOHgCWGxyZ_Yf7JsbNHSeQ_ALUTcVHTiebPSUdqGc-PFjf-n2Krajuz6Ddt81mZRgjfssslsFSsEn8GXvLe42pYLXo1gGAQvRxGMexrdjHbDPsESAmqPs2lSKEwgp8QwaaGypqQxxILICw0XODb89cxoMWDsPdaP-5lYJz02kj0vHX2C7zGcgIqU.Hv8FLkQNhgpkgjtqw-n5ojtnnLF2q0Mv2PhM7dfFVZU&dib_tag=se&keywords=ring%2Bdoorbell&qid=1764006574&s=amazon-devices&sprefix=ring%2Bdoor%2Camazon-devices%2C146&sr=1-3&th=1" target="_blank" rel="nofollow"><strong>was $229 now $129 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Video Doorbell E340 with Rechargeable Battery: </strong><a href="https://www.amazon.com/eufy-Security-Doorbell-Uninterrupted-Rechargeable/dp/B0DDTSXJDV?ref_=ast_sto_dp&th=1 " target="_blank" rel="nofollow"><strong>was $199 now $119 @ Amazon</strong></a><strong></strong></li><li><strong>Google Nest Doorbell, Wired (3rd Gen): </strong><a href="https://www.amazon.com/Google-Nest-Doorbell-Wired-3rd/dp/B0FN7FK9G4/ref=sr_1_4?crid=31RSAWQ6SPO67&dib=eyJ2IjoiMSJ9.U3klvRyWCfWfpvM3AaIrybPUdJQvvzoh4GQfxzmGCQ2cbDdvrzrguZ8R9hQ47G7TDXzWoCnEul7viBAU036ZybPKHqvZxb0fC47e7zfs6WPJvkImVCKUKNZsvDGpjhk4JsCy1fpnIXo1V7xWGdjX_ucMKQysP3Ukg5PWCsbGo1cRC3EYPU2yLBzPCfk6EuUSfNERRJPELFWojhcuD-qicJqGJjoXw76_RcpXc7A54gxBSQ3-6SOZQgoPFVx1Dy5NN2Pt2bj14QTyudK3bEz-o7TMQr-wdG71NQ-6d_wd7iA.0NkYTOj69xvGIFRHem6sEedu9eE1X3JbH1clg2IUqxU&dib_tag=se&keywords=google%2Bnest%2Bwired&qid=1764006969&sprefix=google%2Bnest%2Bwired%2Caps%2C128&sr=8-4&th=1" target="_blank" rel="nofollow"><strong>was $179 now $139 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Video Doorbell E340 with Chime:</strong><a href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0F5914CT1/ref=sr_1_3?crid=2W6EW4YUZE6ZK&dib=eyJ2IjoiMSJ9.inqQ2-8jcpPtLJyXSgxVw6JMTdTtjZFregj0kvK1zEfOQp7OFvk15rAJv1FX_UppXib7rFXZUFR2zRNZLryq1IWH1uQq2CjxVrCck5A22lRP-dSyDpgrtJdP6O8QHEYQiiiaEfeQewUhQ4uBLzWBluGEczeOvDewwecMkUqgZR-VCIMDWfGzQ3Irjlss_Wg_xWuOCzU2of7btEWH4e7JGQL3SgELMAuBAq1FH9bh66w.5sAOXogE05mk0bU4jOtrftw1IC_aGmnoUhlNtzBTyQ0&dib_tag=se&keywords=eufy%2Bbattery%2Bwith%2Bchime&qid=1764006988&sprefix=eufy%2Bbattery%2Bwith%2Bchime%2Caps%2C106&sr=8-3&th=1" target="_blank" rel="nofollow"><strong> was $219 now $129 @ Amazon</strong></a><strong></strong></li></ul><h3 class="article-body__section" id="section-best-black-friday-video-doorbell-deals"><span>Best Black Friday video doorbell deals</span></h3><div class="product"><a data-dimension112="5b770ab6-ed51-4b66-bfff-bc24e2d32fb4" data-action="Deal Block" data-label="flagship video doorbell" data-dimension48="flagship video doorbell" data-dimension25="$49" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV/ref=sr_1_1?tag=georiot-us-default-20&crid=2GL24VKEOME5X&dib=eyJ2IjoiMSJ9.xMdRQ_q4aK1J34OT3DQjevJoGUnLOaL8EUChCjs9LIEyeUwrFiw0QL74QUPlZkRxOgNtUkiRvOgomwnHr_3qUU_lCDSY5W3b7d_8V1RzsmqVEtIWCTrXhGB4EhfFQZHwMI82sJMruEH_z4wPmZuVJU52N7HGT7atXqwDWz4ad-Fwj90qG0xdBYvmrD5S_hKq6aM_W_oa0oe0DoTq0H9MVnKMw02Kz3V486nnsaGz-en8KwUvCK_Pg89EozYv6RsMgFGYpKQoAphsHpPawrQKIIiW6T__THq2I-Rmdh4UDgI.h5LxgBtzcHoK5IY22A4qLIe4nDjv3IH3QdPMejX6dy8&dib_tag=se&keywords=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo&qid=1764004367&s=amazon-devices&sprefix=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo%2Camazon-devices%2C91&sr=1-1&th=1&ascsubtag=tomsguide-us-5426113203105602927-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="K3kVqFR37p8spoDHWa9cHU" name="41TNy71EYwL._SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/K3kVqFR37p8spoDHWa9cHU.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Ring’s <a href="https://www.tomsguide.com/reviews/ring-video-doorbell-2nd-generation" data-dimension112="5b770ab6-ed51-4b66-bfff-bc24e2d32fb4" data-action="Deal Block" data-label="flagship video doorbell" data-dimension48="flagship video doorbell" data-dimension25="$49">flagship video doorbell</a> is our favorite sub-$100 option because it's inexpensive, easy to install and has good quality video. This model is battery powered, features two-way talk and motion detection. It has color night vision and is compatible with Alexa.<a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV/ref=sr_1_1?tag=georiot-us-default-20&crid=2GL24VKEOME5X&dib=eyJ2IjoiMSJ9.xMdRQ_q4aK1J34OT3DQjevJoGUnLOaL8EUChCjs9LIEyeUwrFiw0QL74QUPlZkRxOgNtUkiRvOgomwnHr_3qUU_lCDSY5W3b7d_8V1RzsmqVEtIWCTrXhGB4EhfFQZHwMI82sJMruEH_z4wPmZuVJU52N7HGT7atXqwDWz4ad-Fwj90qG0xdBYvmrD5S_hKq6aM_W_oa0oe0DoTq0H9MVnKMw02Kz3V486nnsaGz-en8KwUvCK_Pg89EozYv6RsMgFGYpKQoAphsHpPawrQKIIiW6T__THq2I-Rmdh4UDgI.h5LxgBtzcHoK5IY22A4qLIe4nDjv3IH3QdPMejX6dy8&dib_tag=se&keywords=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo&qid=1764004367&s=amazon-devices&sprefix=ring%2Bbattery%2Bdoorbell%2Bhead%2Bto%2Btoe%2Bvideo%2Camazon-devices%2C91&sr=1-1&th=1&ascsubtag=tomsguide-us-5426113203105602927-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="5b770ab6-ed51-4b66-bfff-bc24e2d32fb4" data-action="Deal Block" data-label="flagship video doorbell" data-dimension48="flagship video doorbell" data-dimension25="$49">View Deal</a></p></div><div class="product"><a data-dimension112="95037e8e-3dc1-4333-8afc-e21e361216e8" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$49" href="https://www.amazon.com/Arlo-Video-Doorbell-2nd-Generation/dp/B0C683F516/ref=sr_1_1_sspa?tag=georiot-us-default-20&crid=GI9Q4A6BBLCI&dib=eyJ2IjoiMSJ9.mFiPm_9-UVUMVP71l1kNaz0wUtlLzq7uw-3cuEsR1XSUXPqW6qgXXg68QLC4YFO43Bphn8x9UybaeXlCu4hNYQG0n9OP6RUXfuegCYNfk1CzD8OI2LgDZSTSiXS7FOqlNlBLCkGDItpzziOza2uMNK69kgC4z3cuNcySVjFLDG71dDZWhb7PAO8K8NWzmCpJH-X3tXSMeH9L1Nsrjneg1GM5Ra-DfMVJoLOlWnqRVHtSR4ic1H2HiASdAzR6f7-vx0GsFEzpTV23DS0LAt3UlIa2jA71KB-1qVR4I6vI9MU.hi5-3O2xigkW8wrlx_DJrwtaUhzBQ_j8X4T0siU6AjU&dib_tag=se&keywords=arlo%2Bvideo%2Bdoorbell%2B2nd%2Bgeneration%2Bwired&qid=1764004473&sprefix=arlo%2Bvideo%2B%2Caps%2C100&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1&ascsubtag=tomsguide-us-4371628342201202295-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1263px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qQCWkWNdKMkwf5wEikroQG" name="arlo" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qQCWkWNdKMkwf5wEikroQG.jpg" mos="" align="middle" fullscreen="" width="1263" height="1263" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>When we tested <a href="https://www.tomsguide.com/reviews/arlo-video-doorbell-2k" data-dimension112="95037e8e-3dc1-4333-8afc-e21e361216e8" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$49">Arlo’s 2K video doorbell</a> we liked that it can be installed with a battery or hardwired, and we approved of the sharp 2K resolution and 12x digital zoom. It also has clear and sharp audio, works well alongside smart assistants. The integration with its own app was great, but without a subscription it lacks some essential features. <a class="view-deal button" href="https://www.amazon.com/Arlo-Video-Doorbell-2nd-Generation/dp/B0C683F516/ref=sr_1_1_sspa?tag=georiot-us-default-20&crid=GI9Q4A6BBLCI&dib=eyJ2IjoiMSJ9.mFiPm_9-UVUMVP71l1kNaz0wUtlLzq7uw-3cuEsR1XSUXPqW6qgXXg68QLC4YFO43Bphn8x9UybaeXlCu4hNYQG0n9OP6RUXfuegCYNfk1CzD8OI2LgDZSTSiXS7FOqlNlBLCkGDItpzziOza2uMNK69kgC4z3cuNcySVjFLDG71dDZWhb7PAO8K8NWzmCpJH-X3tXSMeH9L1Nsrjneg1GM5Ra-DfMVJoLOlWnqRVHtSR4ic1H2HiASdAzR6f7-vx0GsFEzpTV23DS0LAt3UlIa2jA71KB-1qVR4I6vI9MU.hi5-3O2xigkW8wrlx_DJrwtaUhzBQ_j8X4T0siU6AjU&dib_tag=se&keywords=arlo%2Bvideo%2Bdoorbell%2B2nd%2Bgeneration%2Bwired&qid=1764004473&sprefix=arlo%2Bvideo%2B%2Caps%2C100&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1&ascsubtag=tomsguide-us-4371628342201202295-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="95037e8e-3dc1-4333-8afc-e21e361216e8" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$49">View Deal</a></p></div><div class="product"><a data-dimension112="aa15b0b7-7ffd-4187-8ad7-b35ab04d22e7" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$51" href="https://www.amazon.com/Arlo-Doorbell-Wireless-Integrated-Notifications/dp/B0DVTGJ143?tag=georiot-us-default-20&ref_=ast_sto_dp&ascsubtag=tomsguide-us-8492413191459636902-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1263px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="qQCWkWNdKMkwf5wEikroQG" name="arlo" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/qQCWkWNdKMkwf5wEikroQG.jpg" mos="" align="middle" fullscreen="" width="1263" height="1263" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Much like the <a href="https://www.tomsguide.com/reviews/arlo-video-doorbell-2k" data-dimension112="aa15b0b7-7ffd-4187-8ad7-b35ab04d22e7" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$51">Arlo’s 2K video doorbell</a>, the HD option can be operated either via we liked a battery or hardwired, has clear two-way audio, head to toe views, and unlocks more features with a subscription. This model also has a built-in siren, infrared night vision and guests can leave you a message on it. <a class="view-deal button" href="https://www.amazon.com/Arlo-Doorbell-Wireless-Integrated-Notifications/dp/B0DVTGJ143?tag=georiot-us-default-20&ref_=ast_sto_dp&ascsubtag=tomsguide-us-8492413191459636902-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="aa15b0b7-7ffd-4187-8ad7-b35ab04d22e7" data-action="Deal Block" data-label="Arlo’s 2K video doorbell" data-dimension48="Arlo’s 2K video doorbell" data-dimension25="$51">View Deal</a></p></div><div class="product"><a data-dimension112="b07be1ca-9cdf-4218-9acf-7efdbc55b5a9" data-action="Deal Block" data-label="Eufy products" data-dimension48="Eufy products" data-dimension25="$89" href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0CD7NT4Y9/ref=sr_1_2?tag=georiot-us-default-20&crid=14MXYYMBRERHN&dib=eyJ2IjoiMSJ9.ouGy1e4Ytya3TO3gEgwb9fhxJjzIkhBTPjc_lOaIrv9X9FPn9meTj773ZHz5XO6lT-fJ_7IEMagIMlXm6s_2e47_qoz77xnWRovINdhWZhrOKHwUkrsHAlmEil6QbrMqKgZzSBppnm0sbA9WBtD1qTcX0MFbqt2y4bHPpJSB0CI266eHswIpTUGz9kFEVzmQJQmw6f8SV0PXGffTdtGC68m1_8crauqzNQRg4t3FaXTAPu4YZtE53VBX80Mrd3Yu_1tYKvSUHxK_YiQJji8wPz-aqq17StJdfI76TS5xgLI.Hben-azvTvsEkxI37LXI8t2dCv_XUD5ZkPYcn1JFgBQ&dib_tag=se&keywords=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible&qid=1764006158&s=hi&sprefix=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible%2Ctools%2C97&sr=1-2&th=1&ascsubtag=tomsguide-us-1394599359013874280-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1225px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="wGBDrDFKgZyct3YYjLMh5E" name="eufy" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/wGBDrDFKgZyct3YYjLMh5E.jpg" mos="" align="middle" fullscreen="" width="1225" height="1225" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We've liked <a href="https://www.tomsguide.com/reviews/eufy-2k-video-doorbell" data-dimension112="b07be1ca-9cdf-4218-9acf-7efdbc55b5a9" data-action="Deal Block" data-label="Eufy products" data-dimension48="Eufy products" data-dimension25="$89">Eufy products</a> in the past for their ease of installation, good field of view and sharp picture. Because they come with a microSD slot, there's no subscription required, as they can offer local storage. This battery powered model also offers color night vision, person/package/vehicle detection, and a delivery guard that watches your floor area for packages. <a class="view-deal button" href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0CD7NT4Y9/ref=sr_1_2?tag=georiot-us-default-20&crid=14MXYYMBRERHN&dib=eyJ2IjoiMSJ9.ouGy1e4Ytya3TO3gEgwb9fhxJjzIkhBTPjc_lOaIrv9X9FPn9meTj773ZHz5XO6lT-fJ_7IEMagIMlXm6s_2e47_qoz77xnWRovINdhWZhrOKHwUkrsHAlmEil6QbrMqKgZzSBppnm0sbA9WBtD1qTcX0MFbqt2y4bHPpJSB0CI266eHswIpTUGz9kFEVzmQJQmw6f8SV0PXGffTdtGC68m1_8crauqzNQRg4t3FaXTAPu4YZtE53VBX80Mrd3Yu_1tYKvSUHxK_YiQJji8wPz-aqq17StJdfI76TS5xgLI.Hben-azvTvsEkxI37LXI8t2dCv_XUD5ZkPYcn1JFgBQ&dib_tag=se&keywords=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible&qid=1764006158&s=hi&sprefix=eufy%2Bsecurity%2Bdoorbell%2Bdelivery%2Bcompatible%2Ctools%2C97&sr=1-2&th=1&ascsubtag=tomsguide-us-1394599359013874280-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="b07be1ca-9cdf-4218-9acf-7efdbc55b5a9" data-action="Deal Block" data-label="Eufy products" data-dimension48="Eufy products" data-dimension25="$89">View Deal</a></p></div><div class="product"><a data-dimension112="b2896731-2eda-420f-925c-78f057b0f966" data-action="Deal Block" data-label="ecobee Video Doorbell" data-dimension48="ecobee Video Doorbell" data-dimension25="$119" href="https://www.amazon.com/ecobee-Smart-Video-Doorbell-Camera/dp/B0C424CVZ8/ref=sr_1_1_sspa?tag=georiot-us-default-20&crid=2XTBX4ARC6T3G&dib=eyJ2IjoiMSJ9.xi9AtIOrgFckBPNTvEAUtYlitM3sjS8jUP3YNXgjRH3tIf6I0enbLsBbr8pekc7u2rvVFJu9wOVymRYn6EtsdUkrri5rHSsMBnbhc3tcDIkZQOpdwJpKNIGBx7-B4fZDtNVzy42JwEogqqNVGneyAsnB7eff0MwW3JwGbSnkwzypM_Ii8YqJI5fE5xoGkgEchWe86awVRRWoSJ2fUYXbHpnGarWqwew7poQJ740vGWA9oq55oitj0A7nOcqfVdHszYAZ6PdAXP8Uh1JrXaeUE9h-j25MRZZV9SSwn6Xv_6k.dXXNORSCFC7slD7X1peMHoL9J3cWMPTV2bA1nA-D3Ak&dib_tag=se&keywords=ecobee+smart+doorbell+wired&qid=1764006403&sprefix=ecobee+smart+doorbell+wired%2Caps%2C115&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1&ascsubtag=tomsguide-us-2145834204285481084-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:98.73%;"><img id="4fT3W9hZnEDVDSjo5vGqQb" name="715VGI1OpPL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/4fT3W9hZnEDVDSjo5vGqQb.jpg" mos="" align="middle" fullscreen="" width="1500" height="1481" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/ecobee-smart-doorbell-camera" data-dimension112="b2896731-2eda-420f-925c-78f057b0f966" data-action="Deal Block" data-label="ecobee Video Doorbell" data-dimension48="ecobee Video Doorbell" data-dimension25="$119">ecobee Video Doorbell</a> is our favorite option for HomeKit users, because it gives a great view of a porch area, and provides person and package detection. It also works with Alexa and Google Home, and integrates with ecobee's smart thermostat. When we tested it, we particularly liked the digital pan and zoom feature. <a class="view-deal button" href="https://www.amazon.com/ecobee-Smart-Video-Doorbell-Camera/dp/B0C424CVZ8/ref=sr_1_1_sspa?tag=georiot-us-default-20&crid=2XTBX4ARC6T3G&dib=eyJ2IjoiMSJ9.xi9AtIOrgFckBPNTvEAUtYlitM3sjS8jUP3YNXgjRH3tIf6I0enbLsBbr8pekc7u2rvVFJu9wOVymRYn6EtsdUkrri5rHSsMBnbhc3tcDIkZQOpdwJpKNIGBx7-B4fZDtNVzy42JwEogqqNVGneyAsnB7eff0MwW3JwGbSnkwzypM_Ii8YqJI5fE5xoGkgEchWe86awVRRWoSJ2fUYXbHpnGarWqwew7poQJ740vGWA9oq55oitj0A7nOcqfVdHszYAZ6PdAXP8Uh1JrXaeUE9h-j25MRZZV9SSwn6Xv_6k.dXXNORSCFC7slD7X1peMHoL9J3cWMPTV2bA1nA-D3Ak&dib_tag=se&keywords=ecobee+smart+doorbell+wired&qid=1764006403&sprefix=ecobee+smart+doorbell+wired%2Caps%2C115&sr=8-1-spons&sp_csd=d2lkZ2V0TmFtZT1zcF9hdGY&th=1&ascsubtag=tomsguide-us-2145834204285481084-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="b2896731-2eda-420f-925c-78f057b0f966" data-action="Deal Block" data-label="ecobee Video Doorbell" data-dimension48="ecobee Video Doorbell" data-dimension25="$119">View Deal</a></p></div><div class="product"><a data-dimension112="33f892d6-4a67-4142-85a3-092eda3969aa" data-action="Deal Block" data-label="Ring" data-dimension48="Ring" data-dimension25="$129" href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/ref=sr_1_3?tag=georiot-us-default-20&crid=4R2P79KLC1KB&dib=eyJ2IjoiMSJ9.4q7rOpJzrCxN5zMiFAtQw0bpsbA_qdgni7MIqTRuHE0FSaSa6iFW2480L8MAX3sn8FAIAK0tZeC5oeULfd76vVfgw9Jq6CXdrn-KQjrCYD0db8CODYqNOHgCWGxyZ_Yf7JsbNHSeQ_ALUTcVHTiebPSUdqGc-PFjf-n2Krajuz6Ddt81mZRgjfssslsFSsEn8GXvLe42pYLXo1gGAQvRxGMexrdjHbDPsESAmqPs2lSKEwgp8QwaaGypqQxxILICw0XODb89cxoMWDsPdaP-5lYJz02kj0vHX2C7zGcgIqU.Hv8FLkQNhgpkgjtqw-n5ojtnnLF2q0Mv2PhM7dfFVZU&dib_tag=se&keywords=ring%2Bdoorbell&qid=1764006574&s=amazon-devices&sprefix=ring%2Bdoor%2Camazon-devices%2C146&sr=1-3&th=1&ascsubtag=tomsguide-us-4700245926641111850-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="iy59qRsyeRcL9ZjPE96YLT" name="619mM1ncz4L._SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/iy59qRsyeRcL9ZjPE96YLT.jpg" mos="" align="middle" fullscreen="" width="450" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.tomsguide.com/home/smart-home/best-black-friday-ring-video-doorbell-deals-5-early-sales-to-shop-now" data-dimension112="33f892d6-4a67-4142-85a3-092eda3969aa" data-action="Deal Block" data-label="Ring" data-dimension48="Ring" data-dimension25="$129">Ring</a> is a big name in video doorbells, and we've tested almost every product they've made. The Wired Doorbell Pro (2nd gen) is an older model — the newer 3rd-gen version offers a 4K video resolution and improved night vision — but the 2nd-gen version still offers great head-to-toe video. Like all Ring models, this one has package detection but will need a subscription to unlock all the features.<a class="view-deal button" href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/ref=sr_1_3?tag=georiot-us-default-20&crid=4R2P79KLC1KB&dib=eyJ2IjoiMSJ9.4q7rOpJzrCxN5zMiFAtQw0bpsbA_qdgni7MIqTRuHE0FSaSa6iFW2480L8MAX3sn8FAIAK0tZeC5oeULfd76vVfgw9Jq6CXdrn-KQjrCYD0db8CODYqNOHgCWGxyZ_Yf7JsbNHSeQ_ALUTcVHTiebPSUdqGc-PFjf-n2Krajuz6Ddt81mZRgjfssslsFSsEn8GXvLe42pYLXo1gGAQvRxGMexrdjHbDPsESAmqPs2lSKEwgp8QwaaGypqQxxILICw0XODb89cxoMWDsPdaP-5lYJz02kj0vHX2C7zGcgIqU.Hv8FLkQNhgpkgjtqw-n5ojtnnLF2q0Mv2PhM7dfFVZU&dib_tag=se&keywords=ring%2Bdoorbell&qid=1764006574&s=amazon-devices&sprefix=ring%2Bdoor%2Camazon-devices%2C146&sr=1-3&th=1&ascsubtag=tomsguide-us-4700245926641111850-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="33f892d6-4a67-4142-85a3-092eda3969aa" data-action="Deal Block" data-label="Ring" data-dimension48="Ring" data-dimension25="$129">View Deal</a></p></div><div class="product"><a data-dimension112="e3bcab24-6594-4951-bff5-c2788852062b" data-action="Deal Block" data-label="Eufy's dual model doorbell" data-dimension48="Eufy's dual model doorbell" data-dimension25="$119" href="https://www.amazon.com/eufy-Security-Doorbell-Uninterrupted-Rechargeable/dp/B0DDTSXJDV?tag=georiot-us-default-20&ref_=ast_sto_dp&th=1%2B&ascsubtag=tomsguide-us-1237867021784609856-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:569px;"><p class="vanilla-image-block" style="padding-top:110.02%;"><img id="UAzvBhdxC3T9duhBMoeaVG" name="41EwOF5L3oL._AC_SX569_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/UAzvBhdxC3T9duhBMoeaVG.jpg" mos="" align="middle" fullscreen="" width="569" height="626" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.tomsguide.com/reviews/eufy-video-doorbell-dual" data-dimension112="e3bcab24-6594-4951-bff5-c2788852062b" data-action="Deal Block" data-label="Eufy's dual model doorbell" data-dimension48="Eufy's dual model doorbell" data-dimension25="$119">Eufy's dual model doorbell</a> is our favorite non-subscription model – it has a 2K front camera with a 1080p package camera, local storage, and both battery or wired installation options. We found that the people and package detection both worked well when we tested it, and we like that it can continue to record even when the power goes out. <a class="view-deal button" href="https://www.amazon.com/eufy-Security-Doorbell-Uninterrupted-Rechargeable/dp/B0DDTSXJDV?tag=georiot-us-default-20&ref_=ast_sto_dp&th=1%2B&ascsubtag=tomsguide-us-1237867021784609856-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="e3bcab24-6594-4951-bff5-c2788852062b" data-action="Deal Block" data-label="Eufy's dual model doorbell" data-dimension48="Eufy's dual model doorbell" data-dimension25="$119">View Deal</a></p></div><div class="product"><a data-dimension112="96e10c8e-5ce2-4d3b-9f0e-2d6712ec955c" data-action="Deal Block" data-label="It's not often you see a brand-new product go on sale, but Nest's newest video doorbell — which has 2K resolution and works with Gemini AI — is currently 40% off. This is a hardwired-only model, though." data-dimension48="It's not often you see a brand-new product go on sale, but Nest's newest video doorbell — which has 2K resolution and works with Gemini AI — is currently 40% off. This is a hardwired-only model, though." data-dimension25="$139" href="https://www.amazon.com/Google-Nest-Doorbell-Wired-3rd/dp/B0FN7FK9G4/ref=sr_1_4?tag=georiot-us-default-20&crid=31RSAWQ6SPO67&dib=eyJ2IjoiMSJ9.U3klvRyWCfWfpvM3AaIrybPUdJQvvzoh4GQfxzmGCQ2cbDdvrzrguZ8R9hQ47G7TDXzWoCnEul7viBAU036ZybPKHqvZxb0fC47e7zfs6WPJvkImVCKUKNZsvDGpjhk4JsCy1fpnIXo1V7xWGdjX_ucMKQysP3Ukg5PWCsbGo1cRC3EYPU2yLBzPCfk6EuUSfNERRJPELFWojhcuD-qicJqGJjoXw76_RcpXc7A54gxBSQ3-6SOZQgoPFVx1Dy5NN2Pt2bj14QTyudK3bEz-o7TMQr-wdG71NQ-6d_wd7iA.0NkYTOj69xvGIFRHem6sEedu9eE1X3JbH1clg2IUqxU&dib_tag=se&keywords=google%2Bnest%2Bwired&qid=1764006969&sprefix=google%2Bnest%2Bwired%2Caps%2C128&sr=8-4&th=1&ascsubtag=tomsguide-us-6035313607743416799-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="J7V9Fc8gF4NmfmYUHiUHmJ" name="61VkLANoEzL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/J7V9Fc8gF4NmfmYUHiUHmJ.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>It's not often you see a brand-new product go on sale, but Nest's newest video doorbell — which has 2K resolution and works with Gemini AI — is currently 40% off. This is a hardwired-only model, though.<a class="view-deal button" href="https://www.amazon.com/Google-Nest-Doorbell-Wired-3rd/dp/B0FN7FK9G4/ref=sr_1_4?tag=georiot-us-default-20&crid=31RSAWQ6SPO67&dib=eyJ2IjoiMSJ9.U3klvRyWCfWfpvM3AaIrybPUdJQvvzoh4GQfxzmGCQ2cbDdvrzrguZ8R9hQ47G7TDXzWoCnEul7viBAU036ZybPKHqvZxb0fC47e7zfs6WPJvkImVCKUKNZsvDGpjhk4JsCy1fpnIXo1V7xWGdjX_ucMKQysP3Ukg5PWCsbGo1cRC3EYPU2yLBzPCfk6EuUSfNERRJPELFWojhcuD-qicJqGJjoXw76_RcpXc7A54gxBSQ3-6SOZQgoPFVx1Dy5NN2Pt2bj14QTyudK3bEz-o7TMQr-wdG71NQ-6d_wd7iA.0NkYTOj69xvGIFRHem6sEedu9eE1X3JbH1clg2IUqxU&dib_tag=se&keywords=google%2Bnest%2Bwired&qid=1764006969&sprefix=google%2Bnest%2Bwired%2Caps%2C128&sr=8-4&th=1&ascsubtag=tomsguide-us-6035313607743416799-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="96e10c8e-5ce2-4d3b-9f0e-2d6712ec955c" data-action="Deal Block" data-label="It's not often you see a brand-new product go on sale, but Nest's newest video doorbell — which has 2K resolution and works with Gemini AI — is currently 40% off. This is a hardwired-only model, though." data-dimension48="It's not often you see a brand-new product go on sale, but Nest's newest video doorbell — which has 2K resolution and works with Gemini AI — is currently 40% off. This is a hardwired-only model, though." data-dimension25="$139">View Deal</a></p></div><div class="product"><a data-dimension112="361a3aca-2ea8-406c-863a-cdc4df499817" data-action="Deal Block" data-label="This Eufy model still has the dual cameras, local storage and solid features of the others on this list, like color night vision, delivery guard, and two-way communication, but bundles them along with a chime. The minibase chime can alert you to people at your door throughout your home, and can be paired with a HomeBase as well as an Alexa or a Google Assistant." data-dimension48="This Eufy model still has the dual cameras, local storage and solid features of the others on this list, like color night vision, delivery guard, and two-way communication, but bundles them along with a chime. The minibase chime can alert you to people at your door throughout your home, and can be paired with a HomeBase as well as an Alexa or a Google Assistant." data-dimension25="$129" href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0F5914CT1/ref=sr_1_3?tag=georiot-us-default-20&crid=2W6EW4YUZE6ZK&dib=eyJ2IjoiMSJ9.inqQ2-8jcpPtLJyXSgxVw6JMTdTtjZFregj0kvK1zEfOQp7OFvk15rAJv1FX_UppXib7rFXZUFR2zRNZLryq1IWH1uQq2CjxVrCck5A22lRP-dSyDpgrtJdP6O8QHEYQiiiaEfeQewUhQ4uBLzWBluGEczeOvDewwecMkUqgZR-VCIMDWfGzQ3Irjlss_Wg_xWuOCzU2of7btEWH4e7JGQL3SgELMAuBAq1FH9bh66w.5sAOXogE05mk0bU4jOtrftw1IC_aGmnoUhlNtzBTyQ0&dib_tag=se&keywords=eufy%2Bbattery%2Bwith%2Bchime&qid=1764006988&sprefix=eufy%2Bbattery%2Bwith%2Bchime%2Caps%2C106&sr=8-3&th=1&ascsubtag=tomsguide-us-6544399843863071194-20&geniuslink=true" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:569px;"><p class="vanilla-image-block" style="padding-top:120.56%;"><img id="FUop2uuKCSEacGkqf29sCZ" name="51wHMwbT9yL._AC_SX569_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FUop2uuKCSEacGkqf29sCZ.jpg" mos="" align="middle" fullscreen="" width="569" height="686" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This Eufy model still has the dual cameras, local storage and solid features of the others on this list, like color night vision, delivery guard, and two-way communication, but bundles them along with a chime. The minibase chime can alert you to people at your door throughout your home, and can be paired with a HomeBase as well as an Alexa or a Google Assistant. <a class="view-deal button" href="https://www.amazon.com/eufy-Security-Doorbell-Delivery-Compatible/dp/B0F5914CT1/ref=sr_1_3?tag=georiot-us-default-20&crid=2W6EW4YUZE6ZK&dib=eyJ2IjoiMSJ9.inqQ2-8jcpPtLJyXSgxVw6JMTdTtjZFregj0kvK1zEfOQp7OFvk15rAJv1FX_UppXib7rFXZUFR2zRNZLryq1IWH1uQq2CjxVrCck5A22lRP-dSyDpgrtJdP6O8QHEYQiiiaEfeQewUhQ4uBLzWBluGEczeOvDewwecMkUqgZR-VCIMDWfGzQ3Irjlss_Wg_xWuOCzU2of7btEWH4e7JGQL3SgELMAuBAq1FH9bh66w.5sAOXogE05mk0bU4jOtrftw1IC_aGmnoUhlNtzBTyQ0&dib_tag=se&keywords=eufy%2Bbattery%2Bwith%2Bchime&qid=1764006988&sprefix=eufy%2Bbattery%2Bwith%2Bchime%2Caps%2C106&sr=8-3&th=1&ascsubtag=tomsguide-us-6544399843863071194-20&geniuslink=true" target="_blank" rel="nofollow" data-dimension112="361a3aca-2ea8-406c-863a-cdc4df499817" data-action="Deal Block" data-label="This Eufy model still has the dual cameras, local storage and solid features of the others on this list, like color night vision, delivery guard, and two-way communication, but bundles them along with a chime. The minibase chime can alert you to people at your door throughout your home, and can be paired with a HomeBase as well as an Alexa or a Google Assistant." data-dimension48="This Eufy model still has the dual cameras, local storage and solid features of the others on this list, like color night vision, delivery guard, and two-way communication, but bundles them along with a chime. The minibase chime can alert you to people at your door throughout your home, and can be paired with a HomeBase as well as an Alexa or a Google Assistant." data-dimension25="$129">View Deal</a></p></div><h3 class="article-body__section" id="section-what-to-look-for-in-a-video-doorbell-deal"><span>What to look for in a video doorbell deal</span></h3><p>As with any home technology purchase, you’ll want to sort out which features are important to you – and which ones are requirements to your home – before you hit that buy button. Here’s what  you need to know as we ramp up to those Black Friday deals. </p><h2 id="battery-vs-wired">Battery vs wired</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="HdjdN7SczJgSKS58zEVX9m" name="Eufy Install.jpg" alt="Installing and mounting Eufy E330" src="https://cdn.mos.cms.futurecdn.net/HdjdN7SczJgSKS58zEVX9m.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>If you’re already well versed in the world of video doorbells, and have installed a few in an easy-to-access location, then a wired video doorbell isn’t an issue for you. However, if you need to put your video doorbell someplace where there isn’t any power, you’ll want to look into battery-operated models. Just keep in mind, those batteries will need to be changed or recharged at some point. </p><h2 id="field-of-view-2">Field of view</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1280px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fLwhFiaFxT333tVCCi3zCV" name="maxresdefault" alt="A screenshot from a Ring camera showing its field of view" src="https://cdn.mos.cms.futurecdn.net/fLwhFiaFxT333tVCCi3zCV.jpg" mos="" align="middle" fullscreen="" width="1280" height="720" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It’s important to consider what area you’re looking to capture with your video doorbell’s camera. Newer models have a more vertical or squarer field of view, meaning you won’t see as much side-to-side, though you will see things closer to the foot of your door–which is ideal for viewing package deliveries.</p><h2 id="package-detection">Package detection</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="fgVauVjJcsGKFo8bskdKzS" name="Amazon packages.jpg" alt="Amazon packages on doorstep" src="https://cdn.mos.cms.futurecdn.net/fgVauVjJcsGKFo8bskdKzS.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>While more and more models feature package detection, some of them have it as a subscription feature, so if that’s something that’s important to you, make sure it’s specifically mentioned as an included feature, like with the Eufy and ecobee models. </p><p><em>For more discounts, check out our </em><a href="https://www.tomsguide.com/live/news/amazon-black-friday-2025-lego-yeti-dyson"><em>Amazon Black Friday deals live blog</em></a><em>.</em></p><h3 class="article-body__section" id="section-shop-today-s-best-black-friday-deals"><span>Shop today's best Black Friday deals</span></h3><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/b?node=210998206011" target="_blank" rel="nofollow"><strong>50% off Ring, Ninja, AirPods and more</strong></a><strong></strong></li><li><strong>Walmart Plus: </strong><a href="https://www.walmart.com/plus" target="_blank" rel="nofollow"><strong>50% off @ Walmart</strong></a></li><li><strong>REI: </strong><a href="https://www.rei.com/f/scd-deals" target="_blank" rel="nofollow"><strong>half-off Arc'teryx, Patagonia, more</strong></a><strong></strong></li><li><strong>Dell: </strong><a href="https://www.dell.com/en-us/shop/deals?sortBy=price-ascending" target="_blank" rel="nofollow"><strong>monitors from $69, laptops from $299</strong></a><strong></strong></li><li><strong>Nectar: </strong><a href="https://www.nectarsleep.com/" target="_blank" rel="nofollow"><strong>50% off mattresses + bundles</strong></a></li><li><strong>Best Buy: </strong><a href="https://www.bestbuy.com/site/all-electronics-on-sale/all-computers-tablets-on-sale/pcmcat1632941704767.c?id=pcmcat1632941704767" target="_blank" rel="nofollow"><strong>laptops from $149</strong></a><strong></strong></li><li><strong>Lenovo: </strong><a href="https://www.lenovo.com/us/en/d/deals/laptops/?IPromoID=LEN380027&sortBy=priceUp" target="_blank" rel="nofollow"><strong>doorbuster deals from $319</strong></a><strong></strong></li><li><strong>Wayfair: </strong><a href="https://www.wayfair.com/daily-sales" target="_blank" rel="nofollow"><strong>up to 80% off home decor</strong></a><strong></strong></li><li><strong>Lululemon: </strong><a href="https://shop.lululemon.com/c/we-made-too-much/n18mhd?Ns=price%7C0" target="_blank" rel="nofollow"><strong>top picks from $9</strong></a><strong></strong></li><li><strong>Newegg: </strong><a href="https://www.newegg.com/Black-November-Early-Access/EventSaleStore/ID-1132" target="_blank" rel="nofollow"><strong>Doorbuster deals from $6</strong></a></li><li><strong>Walmart: </strong><a href="https://www.walmart.com/cp/gifts/3131907" target="_blank" rel="nofollow"><strong>holiday gifts from $15</strong></a></li><li><strong>Birkenstock: </strong><a href="https://www.nordstrom.com/browse/sale?sort=PercentOff&filterByBrand=birkenstock" target="_blank" rel="nofollow"><strong>deals from $20 @ Nordstrom</strong></a><strong></strong></li><li><strong>Saatva: </strong><a href="https://www.saatva.com/mattresses/saatva-classic?utm_source=futurepublishing&utm_medium=affiliate&coupon=awyqqgzvxqicebab" target="_blank" rel="nofollow"><strong>luxury mattresses from $1,099</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I used this home security robot that went viral on TikTok to watch my home from 4,000 miles away — and it's ridiculously cheap for Black Friday ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/i-used-this-home-security-robot-that-went-viral-on-tiktok-to-watch-my-home-from-4-000-miles-away-and-its-ridiculously-cheap-for-black-friday</link>
                                                                            <description>
                            <![CDATA[ This tiny robot can monitor your home by moving around or remaining stationary, and it's currently 30% off for Black Friday! ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">U79JQYqZYS9Dfie6PLzhGJ</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/CDHKs96Gx67kjztqsrdH8U-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 24 Nov 2025 13:28:46 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ nikita.achanta@futurenet.com (Nikita Achanta) ]]></author>                    <dc:creator><![CDATA[ Nikita Achanta ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/oXuvixDz99SbZp9z8Uoor3.png ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Nikita is a Senior Writer on the Reviews team at Tom&#039;s Guide, and she&#039;s always on the lookout for the latest tech. She is a lifelong gaming and photography enthusiast, especially interested in wildlife and landscape photography. Having worked as a Sub Editor and Writer for Canon EMEA, she’s a bit of a grammar nerd (and a supporter of the Oxford comma), and has also interviewed photographers from all over the world and working in different genres. A holder of two master’s degrees, the most recent one being in Magazine Journalism from Cardiff University, Nikita’s work has appeared in several publications such as Motor Sport Magazine, NME, Marriott Bonvoy, The Independent, and Metro. Her favorite tech includes the PS5, the DJI Air 3S, and her Google Pixel 7 Pro. She&#039;s also a licensed drone pilot and instant cameras expert so you&#039;ll find her testing these almost every week.&lt;/p&gt;&lt;p&gt;In her downtime, Nikita can usually be found sinking hours into RPGs on her PS5, flying a drone, out on a walk with a camera in hand, at a concert, watching F1, or planning her next tattoo. You can follow her photography account on Instagram&lt;a href=&quot;https://www.instagram.com/photos.bynikita/&quot; target=&quot;_blank&quot; rel=&quot;nofollow&quot;&gt; here&lt;/a&gt;.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/CDHKs96Gx67kjztqsrdH8U-1280-80.jpg">
                                                            <media:credit><![CDATA[Enabot / Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Enabot Ebo Air]]></media:description>                                                            <media:text><![CDATA[Enabot Ebo Air]]></media:text>
                                <media:title type="plain"><![CDATA[Enabot Ebo Air]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/CDHKs96Gx67kjztqsrdH8U-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>I'm an anxious traveller, especially when my travels involve flying and sitting in a plane for nearly 10 hours. Though I live in the U.K., I make a trip back home to India once or twice a year, and when I'm away for weeks on end, a nagging worry about the safety of my apartment is always at the back of my head. But having one of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> can help ease that anxiety.</p><p>While I was away for three weeks this month, I opted for a cute, tiny home security robot that let me monitor my apartment even when I was 4,000 miles away. I'm talking about the Enabot Ebo Air, a robot companion that <a href="https://www.tiktok.com/@jojo.butterflylove/video/7491159888610135342" target="_blank" rel="nofollow">recently went viral on TikTok</a> — and for good reason. And now that we're making our way towards this year's Black Friday sales, the Ebo Air is cheaper than ever, <a href="https://www.amazon.com/Enabot-EBO-Air-Detection-Self-Charging/dp/B09PD9J9Z6/" target="_blank" rel="nofollow">currently available for just $139</a> at Amazon!</p><div class="product"><a data-dimension112="6181ad13-c728-4256-81b5-5e5fa596e62d" data-action="Deal Block" data-label="The Enabot Ebo Air is a tiny, lovable home security robot that can patrol your home via a user-friendly companion app as long as it's connected to Wi-Fi. It can detect motion and notify you of it, and it features a built-in microphone so you can speak to, say, your pets waiting eagerly for you to return home. It's an inexpensive home security solution and right now, it's one of the cheapest ways to monitor your home while you're on vacation." data-dimension48="The Enabot Ebo Air is a tiny, lovable home security robot that can patrol your home via a user-friendly companion app as long as it's connected to Wi-Fi. It can detect motion and notify you of it, and it features a built-in microphone so you can speak to, say, your pets waiting eagerly for you to return home. It's an inexpensive home security solution and right now, it's one of the cheapest ways to monitor your home while you're on vacation." data-dimension25="$139" href="https://www.amazon.com/Enabot-EBO-Air-Detection-Self-Charging/dp/B09PD9J9Z6/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:98.00%;"><img id="HzunTFpKTqHBHsyAaAAmeE" name="Ebo-Air-deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/HzunTFpKTqHBHsyAaAAmeE.jpg" mos="" align="middle" fullscreen="" width="1500" height="1470" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Enabot Ebo Air is a tiny, lovable home security robot that can patrol your home via a user-friendly companion app as long as it's connected to Wi-Fi. It can detect motion and notify you of it, and it features a built-in microphone so you can speak to, say, your pets waiting eagerly for you to return home. It's an inexpensive home security solution and right now, it's one of <em>the </em>cheapest ways to monitor your home while you're on vacation.<a class="view-deal button" href="https://www.amazon.com/Enabot-EBO-Air-Detection-Self-Charging/dp/B09PD9J9Z6/" target="_blank" rel="nofollow" data-dimension112="6181ad13-c728-4256-81b5-5e5fa596e62d" data-action="Deal Block" data-label="The Enabot Ebo Air is a tiny, lovable home security robot that can patrol your home via a user-friendly companion app as long as it's connected to Wi-Fi. It can detect motion and notify you of it, and it features a built-in microphone so you can speak to, say, your pets waiting eagerly for you to return home. It's an inexpensive home security solution and right now, it's one of the cheapest ways to monitor your home while you're on vacation." data-dimension48="The Enabot Ebo Air is a tiny, lovable home security robot that can patrol your home via a user-friendly companion app as long as it's connected to Wi-Fi. It can detect motion and notify you of it, and it features a built-in microphone so you can speak to, say, your pets waiting eagerly for you to return home. It's an inexpensive home security solution and right now, it's one of the cheapest ways to monitor your home while you're on vacation." data-dimension25="$139">View Deal</a></p></div><p>There's a lot to love about the Ebo Air. Firstly, it's extremely easy to set up. You don't need a paid subscription to access its features. All you need to do is plug the charging dock into the mains, place the robot on the dock, and download the free Rola app on iOS or Android. Pairing the Ebo Air to the app takes just under five minutes. You'll need to insert the included microSD card into the robot so that it can save videos and photos, as there's no cloud storage.</p><p>Once that's all done, you can use the app to access the Ebo Air's camera and monitor your apartment, regardless of where in the world you are — as long as the Ebo Air is connected to Wi-Fi, and your smartphone is connected to either Wi-Fi or mobile data. What's even better is that the 1080P HD camera features fantastic low-light performance too, so you can view the robot's surroundings even when the lights in your apartment are turned off.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3003px;"><p class="vanilla-image-block" style="padding-top:56.24%;"><img id="NL4caEXdonFa6TK9EjcGND" name="Ebo-Air-BF-edit" alt="Enabot Ebo Air" src="https://cdn.mos.cms.futurecdn.net/NL4caEXdonFa6TK9EjcGND.jpg" mos="" align="middle" fullscreen="" width="3003" height="1689" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Nikita Achanta / Tom's Guide)</span></figcaption></figure><p>And that's not all. The Ebo Air is fitted with wheels so you can use the app to move, at varying speeds, around your apartment. Having this feature meant that I could move the robot around my apartment and take a look at my plants to see if they were doing alright. The Ebo Air can then return to the charging dock with the simple press of a button.</p><p>There are a few home security modes available. For instance, you can program the Ebo Air to go around your apartment or house at a set time and record everything, or you can enable fixed-position monitoring, during which the Ebo Air will stay in the charging dock. I opted for the latter with human recognition enabled, so instead of recording consistently, the Ebo Air records <em>only </em>when movement is detected, and it sends a notification to your phone.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1510px;"><p class="vanilla-image-block" style="padding-top:56.29%;"><img id="s9zUskEbeQZGLzozjxoxFC" name="Ebo-Air-BF-3" alt="Enabot Ebo Air" src="https://cdn.mos.cms.futurecdn.net/s9zUskEbeQZGLzozjxoxFC.jpg" mos="" align="middle" fullscreen="1" width="1510" height="850" attribution="" endorsement="" class="expandable"><a href='https://cdn.mos.cms.futurecdn.net/s9zUskEbeQZGLzozjxoxFC.jpg' target='_blank' class='expand-button icon-expand-image icon' ></a></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Enabot)</span></figcaption></figure><p>Luckily, no movement was detected while I was away, but I know it works very well as I tested it out both my partner and I being home and entering and exiting the room where the Ebo Air was stationed. Movement notifications were instantaneous, and it gave me peace of mind knowing that even though I was 4,000 miles away, I knew what was going on at my apartment.</p><p>I also have to give credit to the Ebo Air's build quality. It's built robustly and it's extremely sturdy. It survived a tumble down my kitchen counter when I accidentally steered it off. To my surprise, nothing happened to it! So you can rest assured that you're getting bang for your buck.</p><p>If you're looking for a home security camera and robot and don't want to spend too much money on one, you're in luck. The <a href="https://www.amazon.com/Enabot-EBO-Air-Detection-Self-Charging/dp/B09PD9J9Z6/" target="_blank" rel="nofollow">Enabot Ebo Air is currently 30% off at Amazon for Black Friday</a>, and who knows how long this deal will last? I'd grab it right now if I were you! For more killer deals, don't forget to tune into our <a href="https://www.tomsguide.com/live/news/black-friday-deals-ultimate-guide-my-top-picks-2025">Black Friday deals live blog</a>.</p><h2 class="article-body__section" id="section-shop-today-s-best-black-friday-deals"><span>Shop today's best Black Friday deals</span></h2><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/b?node=210998206011" target="_blank" rel="nofollow"><strong>50% off Ring, Ninja, Under Armour and more</strong></a><strong></strong></li><li><strong>REI: </strong><a href="https://www.rei.com/f/scd-deals" target="_blank" rel="nofollow"><strong>half-off Arc'teryx, Patagonia and more</strong></a><strong></strong></li><li><strong>Walmart: </strong><a href="https://www.walmart.com/cp/gifts/3131907" target="_blank" rel="nofollow"><strong>holiday gifts from $15</strong></a><strong></strong></li><li><strong>Dell: </strong><a href="https://www.dell.com/en-us/shop/deals?sortBy=price-ascending" target="_blank" rel="nofollow"><strong>monitors from $69, laptops from $249</strong></a><strong></strong></li><li><strong>Nectar: </strong><a href="https://www.nectarsleep.com/" target="_blank" rel="nofollow"><strong>50% off mattresses + 66% off bundles</strong></a></li><li><strong>Best Buy: </strong><a href="https://www.bestbuy.com/site/all-electronics-on-sale/all-computers-tablets-on-sale/pcmcat1632941704767.c?id=pcmcat1632941704767" target="_blank" rel="nofollow"><strong>laptops from $149</strong></a><strong></strong></li><li><strong>Lenovo: </strong><a href="https://www.lenovo.com/us/en/d/deals/laptops/?IPromoID=LEN380027&sortBy=priceUp" target="_blank" rel="nofollow"><strong>doorbuster laptop deals from $319</strong></a><strong></strong></li><li><strong>Wayfair: </strong><a href="https://www.wayfair.com/daily-sales" target="_blank" rel="nofollow"><strong>up to 80% off home decor</strong></a><strong></strong></li><li><strong>Nike: </strong><a href="https://www.nike.com/w/sale-3yaep?sortBy=priceAsc" target="_blank" rel="nofollow"><strong>apparel/sneakers from $7</strong></a><strong></strong></li><li><strong>Lululemon: </strong><a href="https://shop.lululemon.com/c/we-made-too-much/n18mhd?Ns=price%7C0" target="_blank" rel="nofollow"><strong>top picks from $9</strong></a><strong></strong></li><li><strong>Birkenstock: </strong><a href="https://www.nordstrom.com/browse/sale?sort=PercentOff&filterByBrand=birkenstock" target="_blank" rel="nofollow"><strong>deals from $20 @ Nordstrom</strong></a><strong></strong></li><li><strong>Saatva: </strong><a href="https://www.saatva.com/mattresses/saatva-classic?utm_source=futurepublishing&utm_medium=affiliate&coupon=awyqqgzvxqicebab" target="_blank" rel="nofollow"><strong>luxury mattresses from $1,099</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I found 7 Black Friday outdoor security camera deals under $125 — save big on Ring, Eufy, Arlo, Wyze and more ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/i-found-7-early-black-friday-outdoor-security-camera-deals-under-usd125-save-big-on-ring-eufy-arlo-wyze-and-more</link>
                                                                            <description>
                            <![CDATA[ Some of our favorite outdoor home security cameras are on sale for less than $125 this Black Friday. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">ArvASoYpBLCrPpHJ8EPz3P</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/cjXgvPJ8QQ2QKmsqWCecAY-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Mon, 24 Nov 2025 10:01:00 +0000</pubDate>                                                                                                                                <updated>Fri, 28 Nov 2025 13:39:22 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/cjXgvPJ8QQ2QKmsqWCecAY-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[A Blink Outdoor camera mounted to an exterior railing with a Tom&#039;s Guide Black Friday deals badge]]></media:description>                                                            <media:text><![CDATA[A Blink Outdoor camera mounted to an exterior railing with a Tom&#039;s Guide Black Friday deals badge]]></media:text>
                                <media:title type="plain"><![CDATA[A Blink Outdoor camera mounted to an exterior railing with a Tom&#039;s Guide Black Friday deals badge]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/cjXgvPJ8QQ2QKmsqWCecAY-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Installing security cameras inside your house is a great way to keep an eye on your kids, pets and everything else going on inside your home. However, for complete coverage of your entire property, you’re going to need a few of the <a href="https://www.tomsguide.com/best-picks/best-outdoor-security-cameras">best outdoor security cameras</a> too and thanks to Black Friday deals, you can save big on our favorite models from Ring, Google Nest, Eufy, Wyze and more.</p><p>With the holidays coming up, there’s never been a better time to pick up a few outdoor security cameras to keep an eye on places like your driveway, garage, backyard and the rest of those high-traffic areas around your home. These deals let you do just that for less and right now, you can pick up the <a href="https://target.georiot.com/Proxy.ashx?tsid=45724&GR_URL=https%3A%2F%2Famazon.com%2FRing-Battery-Weather-Resistant-Outdoor-Two-way%2Fdp%2FB0CD3285ZJ%3Fref_%3Dast_sto_dp%26th%3D1%26tag%3Dhawk-future-20%26ascsubtag%3Dtomsguide-us-4005786798283864712-20" target="_blank" rel="nofollow"><strong>Ring Outdoor Cam in a two-pack for just $90</strong></a>. Don’t want another monthly subscription to monitor your home? The solar-powered <a href="https://target.georiot.com/Proxy.ashx?tsid=45724&GR_URL=https%3A%2F%2Famazon.com%2Feufy-Security-Continuous-Resolution-Compatible%2Fdp%2FB0BZ55JZ4S%3Fref_%3Dast_sto_dp%26th%3D1%26tag%3Dhawk-future-20%26ascsubtag%3Dtomsguide-us-6379506058313384600-20" target="_blank" rel="nofollow"><strong>Eufy SoloCam S220 is half off</strong></a> and has 8GB of built-in storage which lets you save clips directly to the camera.</p><p>There are plenty of other outdoor security camera deals I personally recommend based on our extensive real-world testing and reviews down below. And if you don’t see something you like right now, keep checking back as I’ll be updating this guide through Black Friday and beyond.</p><h3 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h3><ul><li><strong>Ring Outdoor Cam, 2 Pack: </strong><a href="https://www.amazon.com/Ring-Battery-Weather-Resistant-Outdoor-Two-way/dp/B0CD3285ZJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $150 now $89 @ Amazon</strong></a><strong></strong></li><li><strong>Nest Cam Outdoor, Wired (2nd Gen): </strong><a href="https://www.amazon.com/Google-Nest-Cam-Outdoor-Wired/dp/B0FN7F59KK?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $150 now $119 @ Amazon</strong></a><strong></strong></li><li><strong>Arlo Essential Pan Tilt 2K, 2 Pack: </strong><a href="https://www.amazon.com/Arlo-Essential-Security-Camera-Plug/dp/B0FLLJ534R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $120 now $59 @ Amazon</strong></a><strong></strong></li><li><strong>Blink Outdoor 2K+, 2 Pack: </strong><a href="https://www.amazon.com/Blink-Outdoor-2KPlus-2cam-Black/dp/B0F95MMMJF?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $160 now $79 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Wireless Outdoor Camera: </strong><a href="https://www.amazon.com/WYZE-Integrated-Spotlight-Removable-Rechargeable/dp/B0C4D813FP?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $90 now $69 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security SoloCam S220: </strong><a href="https://www.amazon.com/eufy-Security-Continuous-Resolution-Compatible/dp/B0BZ55JZ4S?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $100 now $49 @ Amazon</strong></a><strong></strong></li><li><strong>Reolink 4K Outdoor Security Camera: </strong><a href="https://www.amazon.com/REOLINK-Detection-Weatherproof-Lumus-Pro/dp/B0DCZGNQXB?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $85 now $67 @ Amazon</strong></a></li></ul><h3 class="article-body__section" id="section-black-friday-outdoor-security-camera-deals"><span>Black Friday Outdoor Security Camera Deals</span></h3><div class="product"><a data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring's" data-dimension48="Ring's" data-dimension25="$89" href="https://www.amazon.com/Ring-Battery-Weather-Resistant-Outdoor-Two-way/dp/B0CD3285ZJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:450px;"><p class="vanilla-image-block" style="padding-top:86.00%;"><img id="CUveJpyArvaAQKjy4aX4Jo" name="413N9vn7q0L._SX450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/CUveJpyArvaAQKjy4aX4Jo.jpg" mos="" align="middle" fullscreen="" width="450" height="387" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.tomsguide.com/reviews/ring-stick-up-cam-pro" data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring's" data-dimension48="Ring's" data-dimension25="$89">Ring's </a>well known compact, sleek design is easy to position anywhere and offers 1080p HD video. It also provides features like a two-way intercom system, and night vision and has a battery pack for easy set up. Many of its helpful features – such as privacy zones or person detection – require a Ring subscription. However, with this deal, you're getting a two-pack at a steep discount.<a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Weather-Resistant-Outdoor-Two-way/dp/B0CD3285ZJ?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring's" data-dimension48="Ring's" data-dimension25="$89">View Deal</a></p></div><div class="product"><a data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$119" href="https://www.amazon.com/Google-Nest-Cam-Outdoor-Wired/dp/B0FN7F59KK?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:623px;"><p class="vanilla-image-block" style="padding-top:72.23%;"><img id="gjmvNhxVmVyr6UL6UGRPxP" name="31750hI5MLL._AC_SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gjmvNhxVmVyr6UL6UGRPxP.jpg" mos="" align="middle" fullscreen="" width="623" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/nest-cam-battery" data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$119">Nest Cam</a> is our best overall outdoor camera; we like that it's incredibly easy to install, that it comes with helpful features like two way audio, built-in intelligent alerts, local storage and three hours of free event history. It's compatible with smart assistants, is weather resistant and provides 1080p HDR video, night vision and a 130 degree field of view. It can distinguish between a person, animal and vehicle, and provide up to an hour of recorded events even if the power is out.<a class="view-deal button" href="https://www.amazon.com/Google-Nest-Cam-Outdoor-Wired/dp/B0FN7F59KK?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$119">View Deal</a></p></div><div class="product"><a data-dimension112="e349ed85-02e2-476c-9ef1-040cdd005f98" data-action="Deal Block" data-label="We've liked Arlo products in the past for their exceptional video quality, and options. This model has a 360 degree field of view, smart detection for people, packages and pets, and audio detection for important sounds like dogs barking or glass breaking. A subscription plan offers additional features like video history and 24/7 emergency response." data-dimension48="We've liked Arlo products in the past for their exceptional video quality, and options. This model has a 360 degree field of view, smart detection for people, packages and pets, and audio detection for important sounds like dogs barking or glass breaking. A subscription plan offers additional features like video history and 24/7 emergency response." data-dimension25="$59" href="https://www.amazon.com/Arlo-Essential-Security-Camera-Plug/dp/B0FLLJ534R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:94.59%;"><img id="gzhBZwuoow9xntQSxoAWV8" name="61nRwSJusnL._AC_SX425_PIbundle-2,TopRight,0,0_SH20_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gzhBZwuoow9xntQSxoAWV8.jpg" mos="" align="middle" fullscreen="" width="425" height="402" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>We've liked Arlo products in the past for their exceptional video quality, and options. This model has a 360 degree field of view, smart detection for people, packages and pets, and audio detection for important sounds like dogs barking or glass breaking. A subscription plan offers additional features like video history and 24/7 emergency response.<a class="view-deal button" href="https://www.amazon.com/Arlo-Essential-Security-Camera-Plug/dp/B0FLLJ534R?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="e349ed85-02e2-476c-9ef1-040cdd005f98" data-action="Deal Block" data-label="We've liked Arlo products in the past for their exceptional video quality, and options. This model has a 360 degree field of view, smart detection for people, packages and pets, and audio detection for important sounds like dogs barking or glass breaking. A subscription plan offers additional features like video history and 24/7 emergency response." data-dimension48="We've liked Arlo products in the past for their exceptional video quality, and options. This model has a 360 degree field of view, smart detection for people, packages and pets, and audio detection for important sounds like dogs barking or glass breaking. A subscription plan offers additional features like video history and 24/7 emergency response." data-dimension25="$59">View Deal</a></p></div><div class="product"><a data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor" data-dimension48="Blink Outdoor" data-dimension25="$79" href="https://www.amazon.com/Blink-Outdoor-2KPlus-2cam-Black/dp/B0F95MMMJF?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="d3chJyX9Q5YMxAoj6WjihN" name="413JQThf2YL._SL1000_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/d3chJyX9Q5YMxAoj6WjihN.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/blink-outdoor-4" data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor" data-dimension48="Blink Outdoor" data-dimension25="$79">Blink Outdoor</a> has made our list as the best outdoor budget home security camera because an entry level price gets you 1080p video resolution, 130 degree field of view, 25 feet worth of night vision, local storage, weather resistance, 700 lumen floodlights and it works on two AA batteries that should last you for up to two years. We like how easy it was to set up, and how all the features still worked as expected from the person detection and dual motion zones to the compatibility with smart assistants like Alexa. <a class="view-deal button" href="https://www.amazon.com/Blink-Outdoor-2KPlus-2cam-Black/dp/B0F95MMMJF?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor" data-dimension48="Blink Outdoor" data-dimension25="$79">View Deal</a></p></div><div class="product"><a data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze" data-dimension48="Wyze" data-dimension25="$69" href="https://www.amazon.com/WYZE-Integrated-Spotlight-Removable-Rechargeable/dp/B0C4D813FP?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:95.76%;"><img id="NxhZtV4S47D8JuGyMLvy8K" name="51uQ3qHUykL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/NxhZtV4S47D8JuGyMLvy8K.jpg" mos="" align="middle" fullscreen="" width="425" height="407" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.tomsguide.com/home/smart-home/wyze-cam-v4-review-the-new-king-of-budget-security-cameras" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze" data-dimension48="Wyze" data-dimension25="$69">Wyze</a> has made our list  in the past because it offers a lot of punch when it comes to quality and features: 2.5K HDR video with color night vision, two-way audio, integrated spotlight and siren, battery powered, and it's IP65 weatherproof as well. Local storage means no subscription is required but one does unlock additional features like secure cloud recording and people, package, pet and vehicle detection. <a class="view-deal button" href="https://www.amazon.com/WYZE-Integrated-Spotlight-Removable-Rechargeable/dp/B0C4D813FP?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze" data-dimension48="Wyze" data-dimension25="$69">View Deal</a></p></div><div class="product"><a data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy" data-dimension48="Eufy" data-dimension25="$49" href="https://www.amazon.com/eufy-Security-Continuous-Resolution-Compatible/dp/B0BZ55JZ4S?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:76.00%;"><img id="gBGMRDUQs7sdN5ae532VUh" name="61QQjlKfHQL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gBGMRDUQs7sdN5ae532VUh.jpg" mos="" align="middle" fullscreen="" width="425" height="323" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.tomsguide.com/home/smart-home/eufy-cam-s350-review-the-best-4k-indoor-security-camera-without-a-subscription" data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy" data-dimension48="Eufy" data-dimension25="$49">Eufy</a> is known for not requiring a subscription, but there's plenty of other features to appreciate here: a built-in solar panel needs only 3 hours of sunlight to operate, infrared LEDs for night vision, 2K resolution, wireless installation, AI alerts and HomeBase 3 compatibility. It comes with built-in storage as well, but no spotlight.<a class="view-deal button" href="https://www.amazon.com/eufy-Security-Continuous-Resolution-Compatible/dp/B0BZ55JZ4S?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy" data-dimension48="Eufy" data-dimension25="$49">View Deal</a></p></div><div class="product"><a data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="This Reolink outdoor camera has 2K color night vision, built-in spotlights, and smart AI detection to identify people, vehicles and animals. It includes a microSD card slot so you don't need a subscription to record a video feed, and the time lapse feature condenses events. It also has motion alerts and digital zoom and an IP65 rating." data-dimension48="This Reolink outdoor camera has 2K color night vision, built-in spotlights, and smart AI detection to identify people, vehicles and animals. It includes a microSD card slot so you don't need a subscription to record a video feed, and the time lapse feature condenses events. It also has motion alerts and digital zoom and an IP65 rating." data-dimension25="$67" href="https://www.amazon.com/Spotlight-Reolink-Lumus-Detection-Waterproof/dp/B08628J862?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:425px;"><p class="vanilla-image-block" style="padding-top:91.76%;"><img id="ab8LdtoJGCjXqCxZMFCF8m" name="51eqMHze4nL._AC_SX425_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/ab8LdtoJGCjXqCxZMFCF8m.jpg" mos="" align="middle" fullscreen="" width="425" height="390" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This Reolink outdoor camera has 2K color night vision, built-in spotlights, and smart AI detection to identify people, vehicles and animals. It includes a microSD card slot so you don't need a subscription to record a video feed, and the time lapse feature condenses events. It also has motion alerts and digital zoom and an IP65 rating. <a class="view-deal button" href="https://www.amazon.com/Spotlight-Reolink-Lumus-Detection-Waterproof/dp/B08628J862?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow" data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="This Reolink outdoor camera has 2K color night vision, built-in spotlights, and smart AI detection to identify people, vehicles and animals. It includes a microSD card slot so you don't need a subscription to record a video feed, and the time lapse feature condenses events. It also has motion alerts and digital zoom and an IP65 rating." data-dimension48="This Reolink outdoor camera has 2K color night vision, built-in spotlights, and smart AI detection to identify people, vehicles and animals. It includes a microSD card slot so you don't need a subscription to record a video feed, and the time lapse feature condenses events. It also has motion alerts and digital zoom and an IP65 rating." data-dimension25="$67">View Deal</a></p></div><h3 class="article-body__section" id="section-shop-today-s-best-black-friday-deals"><span>Shop today's best Black Friday deals</span></h3><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/b?node=210998206011" target="_blank" rel="nofollow"><strong>50% off Ring, Ninja, AirPods and more</strong></a><strong></strong></li><li><strong>Walmart Plus: </strong><a href="https://www.walmart.com/plus" target="_blank" rel="nofollow"><strong>50% off @ Walmart</strong></a></li><li><strong>REI: </strong><a href="https://www.rei.com/f/scd-deals" target="_blank" rel="nofollow"><strong>half-off Arc'teryx, Patagonia, more</strong></a><strong></strong></li><li><strong>Dell: </strong><a href="https://www.dell.com/en-us/shop/deals?sortBy=price-ascending" target="_blank" rel="nofollow"><strong>monitors from $69, laptops from $299</strong></a><strong></strong></li><li><strong>Nectar: </strong><a href="https://www.nectarsleep.com/" target="_blank" rel="nofollow"><strong>50% off mattresses + bundles</strong></a></li><li><strong>Best Buy: </strong><a href="https://www.bestbuy.com/site/all-electronics-on-sale/all-computers-tablets-on-sale/pcmcat1632941704767.c?id=pcmcat1632941704767" target="_blank" rel="nofollow"><strong>laptops from $149</strong></a><strong></strong></li><li><strong>Lenovo: </strong><a href="https://www.lenovo.com/us/en/d/deals/laptops/?IPromoID=LEN380027&sortBy=priceUp" target="_blank" rel="nofollow"><strong>doorbuster deals from $319</strong></a><strong></strong></li><li><strong>Wayfair: </strong><a href="https://www.wayfair.com/daily-sales" target="_blank" rel="nofollow"><strong>up to 80% off home decor</strong></a><strong></strong></li><li><strong>Lululemon: </strong><a href="https://shop.lululemon.com/c/we-made-too-much/n18mhd?Ns=price%7C0" target="_blank" rel="nofollow"><strong>top picks from $9</strong></a><strong></strong></li><li><strong>Newegg: </strong><a href="https://www.newegg.com/Black-November-Early-Access/EventSaleStore/ID-1132" target="_blank" rel="nofollow"><strong>Doorbuster deals from $6</strong></a></li><li><strong>Walmart: </strong><a href="https://www.walmart.com/cp/gifts/3131907" target="_blank" rel="nofollow"><strong>holiday gifts from $15</strong></a></li><li><strong>Birkenstock: </strong><a href="https://www.nordstrom.com/browse/sale?sort=PercentOff&filterByBrand=birkenstock" target="_blank" rel="nofollow"><strong>deals from $20 @ Nordstrom</strong></a><strong></strong></li><li><strong>Saatva: </strong><a href="https://www.saatva.com/mattresses/saatva-classic?utm_source=futurepublishing&utm_medium=affiliate&coupon=awyqqgzvxqicebab" target="_blank" rel="nofollow"><strong>luxury mattresses from $1,099</strong></a><strong></strong></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 5 things to think about when buying and installing an outdoor security camera ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/5-things-to-think-about-when-buying-and-installing-an-outdoor-security-camera</link>
                                                                            <description>
                            <![CDATA[ There are a few important considerations for buying and installing an outdoor home security camera. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">7sNMvPQ8MzNBDfLXPWAHR8</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 21 Nov 2025 20:14:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg">
                                                            <media:credit><![CDATA[Reolink]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Reolink home security systems.]]></media:description>                                                            <media:text><![CDATA[Reolink home security systems.]]></media:text>
                                <media:title type="plain"><![CDATA[Reolink home security systems.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/2gwxvffXv35LCr9SwcFUWg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>When you start shopping for an outdoor security camera you may be thinking that price should be your most important consideration – but honestly, that's not on our list here. You might be thinking brand of camera, or specs, reviews or features. But those aren't on this list either. And it's true that you should consider those things as well, they can and should matter to you depending on your needs and requirements. </p><p>However, of all the things you should take into consideration when you shop for one of the <a href="https://www.tomsguide.com/best-picks/best-outdoor-security-cameras">best outdoor security cameras</a><a href="https://www.tomsguide.com/best-picks/best-home-security-camerashttps://www.tomsguide.com/best-picks/best-outdoor-security-cameras"> </a>for the exterior of your property, there are five things that are top of the list when it comes to importance. We discuss them all below, and explain why, but when it comes to brand, price and features, that'll be up to your personal needs and preferences which can really vary from household to household and from person to person. </p><div class="product"><a data-dimension112="5a7fd590-ceee-4642-b1a7-d2a15f18d571" data-action="Deal Block" data-label="Reolink Elite Floodlight WiFi Security Camera" data-dimension48="Reolink Elite Floodlight WiFi Security Camera" href="https://www.amazon.com/REOLINK-Elite-Floodlight-WiFi-Adjustable/dp/B0DWSJVXJH?maas=maas_adg_7B3C0BB0F7F044AB7D93E9B2357FF89F_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="tN5ndMiUhMJfLiQJBJaqBK" name="Product Integration-Elite Floodlight WiFi-2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tN5ndMiUhMJfLiQJBJaqBK.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.amazon.com/REOLINK-Elite-Floodlight-WiFi-Adjustable/dp/B0DWSJVXJH?maas=maas_adg_7B3C0BB0F7F044AB7D93E9B2357FF89F_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored" data-dimension112="5a7fd590-ceee-4642-b1a7-d2a15f18d571" data-action="Deal Block" data-label="Reolink Elite Floodlight WiFi Security Camera" data-dimension48="Reolink Elite Floodlight WiFi Security Camera" data-dimension25=""><strong>Reolink Elite Floodlight WiFi Security Camera</strong></a></p><p>With 180° ultra-wide coverage and 3000-lumen LED floodlights, this security camera gives you the 4K panoramic view you need to capture every detail. Need to find relevant footage without endless scrubbing? The local AI Video Search powered by Reolink AI ReoNeura<sup>™️ </sup>will help you find the person or vehicle you’re looking for, no subscription required. You can get it for up to 30% off during Black Friday / Cyber Monday sales from November 20 to December 1.<a class="view-deal button" href="https://www.amazon.com/REOLINK-Elite-Floodlight-WiFi-Adjustable/dp/B0DWSJVXJH?maas=maas_adg_7B3C0BB0F7F044AB7D93E9B2357FF89F_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored" data-dimension112="5a7fd590-ceee-4642-b1a7-d2a15f18d571" data-action="Deal Block" data-label="Reolink Elite Floodlight WiFi Security Camera" data-dimension48="Reolink Elite Floodlight WiFi Security Camera" data-dimension25="">View Deal</a></p></div><h2 id="1-the-outdoor-elements-it-will-be-exposed-to">1. The outdoor elements it will be exposed to</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="5Z638d3bPqZLapowzLEP9C" name="AI security cameras-4" alt="A Eufy home security camera outside on a deck in front of green bushes." src="https://cdn.mos.cms.futurecdn.net/5Z638d3bPqZLapowzLEP9C.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Just because something says "outdoors" on the label, doesn't necessarily mean it will survive the extremities of your climate. Make sure that the outdoor security camera you buy is ready for your climate by checking the IP rating: it should be IP65 or higher. IP65 indicates that the camera is protected against dust and slightly water exposure like rain. </p><p>Higher IP ratings, like IP66 will be good for more water exposure. IP66 will work for increased water resistance and a rating of IP67 means the camera can even be submerged for short periods of time. Ideally, the camera should still be positioned somewhere that it has some protection from constant water exposure like under an overhang or eave because this will extend the lifespan of the hardware by preventing water buildup. </p><p>You should also check the listed operating temperature range for the camera, especially if you live somewhere where the temperatures climb into the higher, or lower, ranges. </p><h2 id="2-your-video-quality-and-night-vision-requirements">2. Your video quality and night vision requirements</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="id7BYxkzdVUsJPWg6i3Dzj" name="TG_Nest-Cam-with-Floodlight-wired_8.jpg" alt="Nest Cam with Floodlight (wired) with floodlights on" src="https://cdn.mos.cms.futurecdn.net/id7BYxkzdVUsJPWg6i3Dzj.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Google)</span></figcaption></figure><p>If the video quality from your outdoor security camera is too blurry to pick up details like a face or license plate, then it's not as useful to you as one that does. You're looking for a minimum of 1080p Full HD resolution – and that should be relatively easy as many outdoor security cameras these days will offer that or even higher, at 2K or 4K resolution. </p><p>You'll also have options for night vision: infrared (IR) or color night vision. The difference here is that infrared provides clear, black and white footage down to totally dark situations, and is considered reliable, while color night vision uses a built-in spotlight or sensor that can provide more detail to a feed by showing colors at night. This means a sensor or spotlight will also have to stay operational for your night vision feed to be visible. Something else to keep in mind is if your camera will be facing any large windows or reflective surfaces which may cause glare or ruin your image. </p><h2 id="3-power-and-connectivity-sources">3. Power and connectivity sources</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1921px;"><p class="vanilla-image-block" style="padding-top:56.22%;"><img id="cdw6gbCXPvWrSzNHJpV2e" name="Wyze Bulb Cam Lifestyle 7" alt="A Wyze Bulb Cam being held by a hand screwed into a black iron outdoor light fixture" src="https://cdn.mos.cms.futurecdn.net/cdw6gbCXPvWrSzNHJpV2e.jpg" mos="" align="middle" fullscreen="" width="1921" height="1080" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wyze)</span></figcaption></figure><p>Here, we're looking at wired vs. wireless cameras. The options to consider are how is the camera going to receive power and how will it be transmitting data. Both answers are going to determine how you can set up your outdoor security camera and how reliable it will be. Check options for power sources, and check Wi-Fi signal strength before you choose a camera model or begin an installation.</p><p>A wired outdoor security camera will have continuous power, provided by a cable, and some can use a single cable for both power and internet (Power over Ethernet). Wireless options use batteries, and often will require a Wi-Fi connection. That will make them easier to install, as there are no cables, but does mean they'll need to be periodically recharged so they'll need to be placed somewhere they can be accessed. Also, battery powered models often only start recording when they sense motion in order to conserve power. </p><h2 id="4-how-it-stores-footage">4. How it stores footage</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="VivxyeZQRYjs2vrfhGWECF" name="Blink Outdoor 4.jpg" alt="Blink Outdoor 4" src="https://cdn.mos.cms.futurecdn.net/VivxyeZQRYjs2vrfhGWECF.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>You'll need a way to access and store the footage you capture from the camera; some outdoor security cameras will come with local storage, usually via an onboard microSD card slot, sometimes a base station. This comes as a one time cost, but if you lose the microSD card or the base station is stolen or damaged, you also lose your footage. </p><p>Most people opt for secure cloud storage, which is hosted by the company that provides the outdoor security camera. This means that footage is immediately uploaded and available online, which keeps it secure, but does require a monthly or annual subscription fee. Things to keep in mind when deciding between the two is how many days of video history you'll want. Subscriptions often keep between 30-90 at a time, but if you're comfortable managing your own hard drive, you can hold as much as you want. </p><h2 id="5-potential-installation-locations">5. Potential installation locations</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="TjWoMa6TtuF79YbjAo84Zh" name="TG_Arlo-Pro-4_LIST.jpg" alt="Arlo Pro 4 camera mounted to wall" src="https://cdn.mos.cms.futurecdn.net/TjWoMa6TtuF79YbjAo84Zh.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>We've written about this before, but when it comes to places where you can put an outdoor security camera there are <a href="https://www.tomsguide.com/home/smart-home/the-3-best-places-to-put-a-home-security-camera-and-the-3-worst">good places (and just plain bad places)</a>. Essentially, you're looking to minimize any blind spots and maximize the angles of the video capture. </p><p>Make sure to mount the camera high enough so it’s out of easy reach (and cannot be stolen) but low enough so it can still capture a clear image of a person’s face. Focus on key entry points like the front door and the garage, and make sure the camera is positioned so its looking across the area of interest rather than straight down at the ground. A slight downward angle is ideal for capturing faces and motion over a wide area. Avoid pointing the lens at angles that will get direct sunlight, as this will cause flare and overexposure.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/home-security/tp-link-tapo-c660-kit-review">TP-Link Tapo C660 Kit review: Crisp video and everlasting power</a></li><li><a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review">Wyze Cam Pan v4 review: The best budget 4K security camera</a></li><li><a href="https://www.tomsguide.com/home/home-security/aqara-camera-hub-g5-pro-review">Aqara Camera Hub G5 Pro Review: This security camera doubles as a smart home hub - and does both well</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 5 common mistakes when buying a security camera ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/5-common-mistakes-when-buying-a-security-camera</link>
                                                                            <description>
                            <![CDATA[ These are the top five mistakes you'll want to avoid when shopping for a home security camera. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">JyY8ATCeU66TrdbFSjmizE</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ZWP4hJ9j9E4YVy6upYv7Xg-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Fri, 21 Nov 2025 15:38:38 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ZWP4hJ9j9E4YVy6upYv7Xg-1280-80.jpg">
                                                            <media:credit><![CDATA[Reolink]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Reolink home security systems.]]></media:description>                                                            <media:text><![CDATA[Reolink home security systems.]]></media:text>
                                <media:title type="plain"><![CDATA[Reolink home security systems.]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ZWP4hJ9j9E4YVy6upYv7Xg-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>If there's one smart home device everyone seems eager to add to their house hold it's a home security camera –  and that makes sense. There are a lot of benefits to having one (or more) of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras </a>watching over the inside or outside of your property. It can give families a great peace of mind to know they're protected, it can lower your insurance rates and it can be fun seeing what kind of wildlife are visiting your backyard when you're not around. </p><p>However, it can also seem intimidating if you've never had a home security system, had a lot of experience with smart cameras, or are nervous about adding new technology to your home. There are a lot of options and choices, and no one wants to wind up with something that doesn't work well for their home. Below are five pitfalls to avoid when purchasing a security camera for your home – simple steps to keep in mind when shopping, setting up and installing a quality home security camera. </p><div class="product"><a data-dimension112="eec5b8f4-cd2e-4e7d-92e1-6ac345aa069c" data-action="Deal Block" data-label="Reolink Argus PT Ultra Security Camera" data-dimension48="Reolink Argus PT Ultra Security Camera" href="https://www.amazon.com/REOLINK-Security-Wireless-Compatible-Assistant/dp/B0C2PY2KTJ?maas=maas_adg_EBD86F9C0343E86FC1510A6A27EC1945_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="9ZfqYVqBNUPQsN5kuDiRN5" name="Product Integration-Argus PT Ultra + Solar Panel-2" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/9ZfqYVqBNUPQsN5kuDiRN5.png" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><a href="https://www.amazon.com/REOLINK-Security-Wireless-Compatible-Assistant/dp/B0C2PY2KTJ?maas=maas_adg_EBD86F9C0343E86FC1510A6A27EC1945_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored" data-dimension112="eec5b8f4-cd2e-4e7d-92e1-6ac345aa069c" data-action="Deal Block" data-label="Reolink Argus PT Ultra Security Camera" data-dimension48="Reolink Argus PT Ultra Security Camera" data-dimension25=""><strong>Reolink Argus PT Ultra Security Camera</strong></a></p><p>This easy-to-install, solar-powered camera offers 360° protection, automatically tracking people, cars or pets. With a built-in motion spotlight and ultra-HD footage, you can see everything in vivid detail, day or night. Plus, all this is powered with about 10 minutes of sunlight. This Black Friday and Cyber Monday, you can snag this high-powered security camera for 35% off from November 20 to December 1. Don't hesitate!<a class="view-deal button" href="https://www.amazon.com/REOLINK-Security-Wireless-Compatible-Assistant/dp/B0C2PY2KTJ?maas=maas_adg_EBD86F9C0343E86FC1510A6A27EC1945_afap_abs&ref_=aa_maas&tag=maas" target="_blank" rel="nofollow sponsored" data-dimension112="eec5b8f4-cd2e-4e7d-92e1-6ac345aa069c" data-action="Deal Block" data-label="Reolink Argus PT Ultra Security Camera" data-dimension48="Reolink Argus PT Ultra Security Camera" data-dimension25="">View Deal</a></p></div><h2 id="1-forgetting-about-data-security-and-passwords">1. Forgetting about data security and passwords</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1896px;"><p class="vanilla-image-block" style="padding-top:58.70%;"><img id="6hCm8zzMXmiY4cpmZNKjD" name="Blink_Mini_Pan_Tilt_Kitchen.jpg" alt="Blink Mini Pan Tilt Mount" src="https://cdn.mos.cms.futurecdn.net/6hCm8zzMXmiY4cpmZNKjD.jpg" mos="" align="middle" fullscreen="" width="1896" height="1113" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Blink)</span></figcaption></figure><p>Never forget, your home security camera is still an internet connected device which means it still requires the proper attention to set up and security. Otherwise, it's jut another easy gateway for cybercriminals and hackers to gain access to your network or your camera feed. </p><p>Avoid this by changing the default passwords on your home security cameras immediately upon set up to strong, unique passphrases and use two-factor or multi-factor authentication on the companion app on your smartphone. Also, check to see how often the firmware updates are released by the manufacturer, these are important as they'll often patch critical security flaws. </p><h2 id="2-miscalculating-power-needs-and-or-wi-fi-strength">2. Miscalculating power needs and/or Wi-Fi strength</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:6720px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="M8LSSufYeaxwY4tFVn9bUP" name="16 x 9 lifestyle_cam_suc-battery_8309-fordham_MS_6055" alt="A Ring stick up cam siting on a wood table next to white vases" src="https://cdn.mos.cms.futurecdn.net/M8LSSufYeaxwY4tFVn9bUP.jpg" mos="" align="middle" fullscreen="" width="6720" height="3780" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Ring)</span></figcaption></figure><p>How reliable, and useful, your home security camera is will all depend on its power source and connectivity strength so where you install it is going to matter in a pretty serious way. If you're opting for a wireless model that uses battery power, it might be easier to install but those batteries will be affected by colder temperatures and frequent activity (like a busy driveway or side street). That means they'll need to be recharged more often. </p><p>On the other hand, if you're going with a wired model, you'll need to check your power options and your Wi-Fi signal strength before you start drilling and mounting to make sure that it's worth selecting that spot for your installation. Otherwise, you'll get a choppy feed that may stutter or drop out entirely which does you little good.</p><h2 id="3-buying-a-camera-without-considering-the-environment">3. Buying a camera without considering the environment</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="JbvX7vUh4xoU8Lcdeps7Zm" name="TG_Nest-Cam-indoor-wired_3.jpg" alt="Nest Cam (indoor, wired) on bookshelf" src="https://cdn.mos.cms.futurecdn.net/JbvX7vUh4xoU8Lcdeps7Zm.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Last year, we had snow at my house for four months straight so any technology that goes outside has to be able to withstand sub-zero temperatures for days on end. If you live in climates that get very cold, or alternatively, very hot, you need to make sure that the home security camera you're purchasing can handle those swings – and indoor cameras will not be rated for that. Check IP ratings for the device and look for a minimum of IP65 for outdoor security cameras.</p><p>Similarly, consider the night vision quality for both interior and exterior cameras: If you expect detail in the dark, you're going to want to see either IR or color night vision as one of the features. For field of view, at least 130 degrees is considered acceptable for general coverage, and most indoor cameras are considered too narrow of an angle to cover outdoor spaces. </p><h2 id="4-not-checking-for-subscription-fees">4. Not checking for subscription fees</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="espMzmeeZHb7CYC2mVRQz6" name="TG_Wyze-Cam-OG_LIST.jpg" alt="Wyze Cam OG attached to wall" src="https://cdn.mos.cms.futurecdn.net/espMzmeeZHb7CYC2mVRQz6.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Wyze)</span></figcaption></figure><p>While some cameras have an excellent brand reputation, specs, features and reviews – and a low price –  they may also come with add-on costs that may not be apparently until you read about the features. Many companies will offer hardware at a range of prices, with some indoor home security cameras going for less than $50, however a lot of the features are only available if you purchase a monthly or annual subscription plan as well. </p><p>That means a lot of the benefits of the device that you may want, like cloud storage or person and package detection, may only be unlocked if you sign up for a monthly fee. Before you buy a security camera, make sure you understand which features are included and which are only unlocked with a subscription as well as how the camera stores the feed: Is it onboard the device with a microSD card? Or only through the cloud? </p><h2 id="5-ignoring-ecosystems-and-compatibility">5. Ignoring ecosystems and compatibility</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="egJrcwx5R49JQHaAbqz8KD" name="Security Cameras.jpg" alt="Eufy Tapo and Wyze security cameras lined up on a table" src="https://cdn.mos.cms.futurecdn.net/egJrcwx5R49JQHaAbqz8KD.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>If this is your first home security camera, and you don't own any other smart home devices or you don't care if your home security camera pairs with your other devices, then it's probably not important to you what you buy. However, many people would like to simplify what they buy into one ecosystem or brand so their devices can all "talk" and they can use them together. </p><p>If that's the case for you, then you should make sure that the home security cameras you buy are compatible with – or the same brand as – your other smart home products so they will integrate into whatever your existing hardware is. That way, your new cameras can work alongside your smart doorbell or smart assistants. Many home security cameras will clearly state if they work with Amazon Alexa, Google Home or Apple Homekit so buyers will know how to best scale together their systems.  </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/home/smart-home/win-get-usd280-off-our-favorite-no-subscription-security-camera">Win! Get $280 off our favorite no-subscription security camera</a></li><li><a href="https://www.tomsguide.com/home/smart-home/best-black-friday-ring-video-doorbell-deals-5-early-sales-to-shop-now">Best Black Friday Ring video doorbell deals — 5 early sales to shop now</a></li><li><a href="https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review">Wyze Cam Pan v4 review: The best budget 4K security camera</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Got 'home security camera' on your Black Friday wishlist? I'd drop everything and jump on this bonkers Blink Mini 2 deal — it’s now just AU$17 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/got-home-security-camera-on-your-black-friday-wishlist-id-drop-everything-and-jump-on-this-bonkers-blink-mini-2-deal-its-now-just-au-17</link>
                                                                            <description>
                            <![CDATA[ Blink's affordable security cameras have hit an incredible all-time low for Black Friday, starting from just AU$17 for a Blink Mini 2. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">2iGNUCjqzuigZ87gZgA9qC</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/ghqEvYTgbaBB2FL3VrUYe6-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 19 Nov 2025 01:17:53 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Sales Events]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ lucy.scotting@futurenet.com (Lucy Scotting) ]]></author>                    <dc:creator><![CDATA[ Lucy Scotting ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/UC9ncAYxkmJ5ipHEyX44ri.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Lucy Scotting is a digital content writer for Tom’s Guide in Australia, covering NBN and internet-related news. Lucy started her career writing for HR and staffing industry publications, with articles covering emerging tech, business and finance.&lt;/p&gt;&lt;p&gt;In her spare time, Lucy can be found watching sci-fi movies, working on her dystopian fiction novel (in progress since 2017) or hanging out with her dog, Fletcher, and her three cats. If she’s not found doing any of the above, she’s likely on her next adventure to a new city, country, or continent. &lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/ghqEvYTgbaBB2FL3VrUYe6-1280-80.jpg">
                                                            <media:credit><![CDATA[Amazon]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Blink deals]]></media:description>                                                            <media:text><![CDATA[Blink deals]]></media:text>
                                <media:title type="plain"><![CDATA[Blink deals]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/ghqEvYTgbaBB2FL3VrUYe6-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Black Friday sales are the perfect time to shop for anything on the top of your wishlist — and often even items at the bottom. If you've been considering adding some smarts to your home security, or even just worrying about <em>that</em> package delivery while on your much-deserved holiday, you're not alone. </p><p>According to new research commissioned by Amazon, 57% of Aussies worry about things back home when on holiday, such as parcel deliveries, pets, or car security, and 63% say they’d relax more if they could check on their home virtually. Thankfully, Amazon’s currently offering some very affordable ways to join the security-cam bandwagon.</p><p>During <a href="https://www.tomsguide.com/live/news/best-early-amazon-black-friday-2025-deals-australia">Amazon's Black Friday sale</a>, the retailer's own budget home security brand Blink has been on the receiving end of some mighty impressive discounts, with indoor cameras starting at just AU$17. Grabbing a bargain on your home security system will pay off in peace of mind, especially if you’ve got a post-Christmas escape planned.</p><p>We've rounded up our favourite picks below, ranging from indoor cameras and video doorbells. If these don't quite tickle your fancy, there's a full list of deals on <a href="https://www.amazon.com.au/stores/page/7B12D26C-37A4-49C6-A6BB-419F4CD85C96" target="_blank">Blink's Amazon storefront</a> that are sure to cover all your home security needs. Do keep in mind that Blink's cameras come with a 30-day free trial to its subscription plan, which includes features like cloud footage backup and person detection. After the trial period, Blink's plans start from<a href="https://www.amazon.com.au/Blink-Plus-Plan-monthly-auto-renewal/dp/B0D3V7W9KK" target="_blank"> AU$4.95p/m for a basic subscription</a>. </p><p>You'll need to act fast to nab these discounts, though — Blink's deals finish on Cyber Monday — December 1, 2025. </p><h3 class="article-body__section" id="section-best-blink-home-security-deals"><span>Best Blink Home Security deals</span></h3><div class="product"><a data-dimension112="dbfab65f-5e99-4e6c-89cf-6a533846c40f" data-action="Deal Block" data-label="Mini 2K camera" data-dimension48="Mini 2K camera" data-dimension25="$17" href="https://www.amazon.com.au/dp/B0D484S271" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="DU9Eig3tBs6JZTSyq75GAF" name="blink_mini_2.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/DU9Eig3tBs6JZTSyq75GAF.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Despite receiving an upgrade with the <a href="https://www.tomsguide.com/home/smart-home/my-amazon-device-predictions-came-true-meet-the-new-wave-of-echo-ring-and-blink-devices" data-dimension112="dbfab65f-5e99-4e6c-89cf-6a533846c40f" data-action="Deal Block" data-label="Mini 2K camera" data-dimension48="Mini 2K camera" data-dimension25="$17">Mini 2K camera</a> in recent months, Blink's impressive <a href="https://www.tomsguide.com/blink-mini-2-review">first-generation Mini 2</a> has just gotten even more affordable thanks to Amazon's Black Friday sale. Now just AU$17 for a single unit, the Blink Mini 2 offers high-resolution live-view footage, a built-in LED spotlight and two-way audio. The camera also detects motion, so you can put your mind at ease when away from home. During the 30-day free Blink subscription, you can arm, disarm or simply check on your house from anywhere using the Blink app or via the Alexa Blink smart home skill on any Echo device.</p><p>You can also grab a <a href="https://www.amazon.com.au/Introducing-Blink-Mini-Plug-built/dp/B0D484Q7MG/ref=ast_sto_dp_puis">two-pack for just AU$31</a>, now discounted by 61% — that’s just AU$15.50 each. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0D484S271" target="_blank" rel="nofollow" data-dimension112="dbfab65f-5e99-4e6c-89cf-6a533846c40f" data-action="Deal Block" data-label="Mini 2K camera" data-dimension48="Mini 2K camera" data-dimension25="$17">View Deal</a></p></div><div class="product"><a data-dimension112="0cc373cc-7c0c-45cf-9a40-92155e838deb" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$39" href="https://www.amazon.com.au/dp/B0D483WX7X" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:133.33%;"><img id="y7KXxcMKvbBfvKJuwwReuE" name="Blink outdoor 4.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/y7KXxcMKvbBfvKJuwwReuE.jpg" mos="" align="middle" fullscreen="" width="1500" height="2000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Now 61% off, <a href="https://www.tomsguide.com/reviews/blink-outdoor-4" data-dimension112="0cc373cc-7c0c-45cf-9a40-92155e838deb" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$39">Blink's Outdoor 4</a> is weatherproof and can therefore be used outside — it records 1080p HD real-time footage, has infrared night vision, two-way audio and a wider field of view, so you can see all the nooks and crannies outside your home. The camera also features dual-zone detection and comes with a Blink Sync Module 2, which allows you to store your footage locally.</p><p>You can also grab a multi-pack of the Outdoor 4s, with a <a href="https://www.amazon.com.au/Introducing-Blink-Outdoor-Wireless-detection/dp/B0D4831Q5Z/ref=ast_sto_dp_puis?th=1" target="_blank">two-pack now just AU$71</a>. <a class="view-deal button" href="https://www.amazon.com.au/dp/B0D483WX7X" target="_blank" rel="nofollow" data-dimension112="0cc373cc-7c0c-45cf-9a40-92155e838deb" data-action="Deal Block" data-label="Blink's Outdoor 4" data-dimension48="Blink's Outdoor 4" data-dimension25="$39">View Deal</a></p></div><div class="product"><a data-dimension112="65c6cca7-d9bd-4bd8-8ddf-7038efbd0a96" data-action="Deal Block" data-label="Video Doorbell System" data-dimension48="Video Doorbell System" data-dimension25="$49" href="https://www.amazon.com.au/Blink-Video-Doorbell/dp/B0DJDSZJX6" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1612px;"><p class="vanilla-image-block" style="padding-top:86.60%;"><img id="tcqqYFb3J3AWqsS4RccVfQ" name="Blink Video Doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/tcqqYFb3J3AWqsS4RccVfQ.png" mos="" align="middle" fullscreen="" width="1612" height="1396" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>One of Blink's latest additions is this <a href="https://www.tomsguide.com/reviews/blink-video-doorbell" data-dimension112="65c6cca7-d9bd-4bd8-8ddf-7038efbd0a96" data-action="Deal Block" data-label="Video Doorbell System" data-dimension48="Video Doorbell System" data-dimension25="$49">Video Doorbell System</a>, which includes a Sync Module Core for secure footage saving. Much like the Outdoor 4 above, Blink's doorbell has a two-year battery life, meaning you won't have to worry about hardwiring if you're renting. It also has a 150° head-to-toe view, can automatically send you parcel and person alerts, and help keep your worries at bay with continuous live view. <a class="view-deal button" href="https://www.amazon.com.au/Blink-Video-Doorbell/dp/B0DJDSZJX6" target="_blank" rel="nofollow" data-dimension112="65c6cca7-d9bd-4bd8-8ddf-7038efbd0a96" data-action="Deal Block" data-label="Video Doorbell System" data-dimension48="Video Doorbell System" data-dimension25="$49">View Deal</a></p></div><div class="product"><a data-dimension112="61512c3a-b768-411a-9a5f-3a4a4cbbb65f" data-action="Deal Block" data-label="But what if you wanted the whole trifecta? If you’re keen on the whole kit and caboodle, Blink has discounted the lot and bundled them up for easy purchasing. With a Mini 2, Outdoor 4, Blink Doorbell and Sync Module Core, it’s an extensive and inexpensive way to cover your entire home — and thanks to long-lasting batteries across the board, it’ll be simple to set up and should the next two years until you have to change the batteries!. And to top it off, you'll also receive a 30-day free trial of Blink's subscription plan to try it out. What a win." data-dimension48="But what if you wanted the whole trifecta? If you’re keen on the whole kit and caboodle, Blink has discounted the lot and bundled them up for easy purchasing. With a Mini 2, Outdoor 4, Blink Doorbell and Sync Module Core, it’s an extensive and inexpensive way to cover your entire home — and thanks to long-lasting batteries across the board, it’ll be simple to set up and should the next two years until you have to change the batteries!. And to top it off, you'll also receive a 30-day free trial of Blink's subscription plan to try it out. What a win." data-dimension25="$95" href="https://www.amazon.com.au/Blink-Security-Doorbell-Wireless-detection/dp/B0FZPBNM3Y" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:522px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="3jsof8z9fum6jmBj7y88sY" name="Blink Whole Home" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/3jsof8z9fum6jmBj7y88sY.jpg" mos="" align="middle" fullscreen="" width="522" height="522" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>But what if you wanted the whole trifecta? If you’re keen on the whole kit and caboodle, Blink has discounted the lot and bundled them up for easy purchasing. With a Mini 2, Outdoor 4, Blink Doorbell and Sync Module Core, it’s an extensive and inexpensive way to cover your entire home — and thanks to long-lasting batteries across the board, it’ll be simple to set up and should the next two years until you have to change the batteries!. And to top it off, you'll also receive a 30-day free trial of Blink's subscription plan to try it out. What a win. <a class="view-deal button" href="https://www.amazon.com.au/Blink-Security-Doorbell-Wireless-detection/dp/B0FZPBNM3Y" target="_blank" rel="nofollow" data-dimension112="61512c3a-b768-411a-9a5f-3a4a4cbbb65f" data-action="Deal Block" data-label="But what if you wanted the whole trifecta? If you’re keen on the whole kit and caboodle, Blink has discounted the lot and bundled them up for easy purchasing. With a Mini 2, Outdoor 4, Blink Doorbell and Sync Module Core, it’s an extensive and inexpensive way to cover your entire home — and thanks to long-lasting batteries across the board, it’ll be simple to set up and should the next two years until you have to change the batteries!. And to top it off, you'll also receive a 30-day free trial of Blink's subscription plan to try it out. What a win." data-dimension48="But what if you wanted the whole trifecta? If you’re keen on the whole kit and caboodle, Blink has discounted the lot and bundled them up for easy purchasing. With a Mini 2, Outdoor 4, Blink Doorbell and Sync Module Core, it’s an extensive and inexpensive way to cover your entire home — and thanks to long-lasting batteries across the board, it’ll be simple to set up and should the next two years until you have to change the batteries!. And to top it off, you'll also receive a 30-day free trial of Blink's subscription plan to try it out. What a win." data-dimension25="$95">View Deal</a></p></div>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Best Black Friday Ring video doorbell deals starting at $49 ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/smart-home/best-black-friday-ring-video-doorbell-deals-5-early-sales-to-shop-now</link>
                                                                            <description>
                            <![CDATA[ Get the best Ring Video Doorbell deals to help modernize your home security for less. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">q3PqWxcZns9ex7fAiENvuU</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/u6NbboyeXpqcSBFwNyTCcB-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 18 Nov 2025 11:30:00 +0000</pubDate>                                                                                                                                <updated>Tue, 25 Nov 2025 18:16:18 +0000</updated>
                                                                                                                                            <category><![CDATA[Smart Home]]></category>
                                                    <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ mike.prospero@futurenet.com (Mike Prospero) ]]></author>                    <dc:creator><![CDATA[ Mike Prospero ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/6ZM8mX4UwccqDJTh9gLPqV.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Michael A. Prospero is the U.S. Editor-in-Chief for Tom’s Guide. He oversees all evergreen content and oversees the Homes, Smart Home, and Fitness/Wearables categories for the site. In his spare time, he also tests out the latest drones, electric scooters, and smart home gadgets, such as video doorbells. Before his tenure at Tom&#039;s Guide, he was the Reviews Editor for Laptop Magazine, a reporter at Fast Company, the Times of Trenton, and, many eons back, an intern at George magazine. He received his undergraduate degree from Boston College, where he worked on the campus newspaper The Heights, and then attended the Columbia University school of Journalism. When he’s not testing out the latest running watch, electric scooter, or skiing or training for a marathon, he’s probably using the latest sous vide machine, smoker, or pizza oven, to the delight — or chagrin — of his family.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/u6NbboyeXpqcSBFwNyTCcB-1280-80.jpg">
                                                            <media:credit><![CDATA[Future]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring video doorbell]]></media:description>                                                            <media:text><![CDATA[Ring video doorbell]]></media:text>
                                <media:title type="plain"><![CDATA[Ring video doorbell]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/u6NbboyeXpqcSBFwNyTCcB-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Now that we're in the thick of <a href="https://www.tomsguide.com/black-friday-deals-and-sales">Black Friday</a>, Amazon is offering deals on Ring video doorbells and security cameras, so you can pick up some extra security for your home for less.</p><p>We've tested nearly every Ring doorbell and camera the company has made, so we have a strong sense as to what makes for the <a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">best Ring doorbells</a> — and which Ring doorbell deals are truly the best. </p><p>Ring recently launched two new doorbells, the Ring Wired Doorbell Pro (3rd gen) and the Ring Wired Doorbell Plus, which have 4K and 2K cameras respectively and a new design. It's unlikely that you'll see them on sale, though they will be bundled with other items. However, all of Ring's previous generation devices are getting a deep discount this holiday season. Here are the best Black Friday Ring Video Doorbell deals we've found so far.</p><h3 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h3><ul><li><strong>Ring Battery Doorbell: </strong><a href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV" target="_blank" rel="nofollow"><strong>was $99 now $49 @ Amazon</strong></a><strong></strong></li><li><strong>Ring Battery Doorbell Plus: </strong><a href="https://www.amazon.com/All-new-Ring-Battery-Doorbell-detection/dp/B09WZBPX7K/" target="_blank" rel="nofollow"><strong>was $149 now $79 @ Amazon</strong></a><strong></strong></li><li><strong>Ring Battery Doorbell with Ring Pan-Tilt Indoor Cam (White): </strong><a href="https://www.amazon.com/Ring-Battery-Doorbell-Pan-Tilt-Indoor/dp/B0D934L4TW/" target="_blank" rel="nofollow"><strong>was $139 now $79 @ Amazon</strong></a></li><li><strong>Ring Battery Doorbell Pro: </strong><a href="https://www.amazon.com/Ring-Battery-Doorbell-Pro-Video-Camera/dp/B0B2BY4ZG7" target="_blank" rel="nofollow"><strong>was $199 now $129 @ Amazon</strong></a><strong></strong></li><li><strong>Ring Wired Doorbell Pro (2nd gen): </strong><a href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/" target="_blank" rel="nofollow"><strong>was $229 now $129 @ Amazon</strong></a></li><li><strong>Ring Wired Doorbell Pro (3rd gen) with Chime: </strong><a href="https://www.amazon.com/Ring-Wired-Doorbell-Newest-Model/dp/B0FM2H4GDY" target="_blank" rel="nofollow"><strong>was $284 now $269 @ Amazon</strong></a></li><li><strong>Ring Ring Wired Doorbell Plus (2nd gen) with Floodlight Cam Plus: </strong><a href="https://www.amazon.com/Ring-Doorbell-Newest-Nickel-Floodlight/dp/B0FL5N45P6" target="_blank" rel="nofollow"><strong>was $359 now $279 @ Amazon</strong></a></li></ul><h3 class="article-body__section" id="section-ring-video-doorbell-deals"><span>Ring Video Doorbell deals</span></h3><div class="product"><a data-dimension112="5624851f-d878-4479-b10c-a36f7bf0ef67" data-action="Deal Block" data-label="Ring's least expensive battery-powered video doorbell is now 50% off. It has head-to-toe video, connects to Wi-Fi using 5GHz as well as the 2.4GHz band, and runs on either battery power or household current. Unlike the Battery Doorbell Plus and Battery Doorbell Pro, you can't remove the battery from this model, so it's a bit harder to recharge." data-dimension48="Ring's least expensive battery-powered video doorbell is now 50% off. It has head-to-toe video, connects to Wi-Fi using 5GHz as well as the 2.4GHz band, and runs on either battery power or household current. Unlike the Battery Doorbell Plus and Battery Doorbell Pro, you can't remove the battery from this model, so it's a bit harder to recharge." data-dimension25="$49" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="uV9gF5TU9QyVMithrrKe88" name="Ring Video Doorbell 3.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/uV9gF5TU9QyVMithrrKe88.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Ring's least expensive battery-powered video doorbell is now 50% off. It has head-to-toe video, connects to Wi-Fi using 5GHz as well as the 2.4GHz band, and runs on either battery power or household current. Unlike the Battery Doorbell Plus and Battery Doorbell Pro, you can't remove the battery from this model, so it's a bit harder to recharge.<a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Doorbell-Head-to-Toe-Video-Satin-Nickel/dp/B0BZWRSRWV" target="_blank" rel="nofollow" data-dimension112="5624851f-d878-4479-b10c-a36f7bf0ef67" data-action="Deal Block" data-label="Ring's least expensive battery-powered video doorbell is now 50% off. It has head-to-toe video, connects to Wi-Fi using 5GHz as well as the 2.4GHz band, and runs on either battery power or household current. Unlike the Battery Doorbell Plus and Battery Doorbell Pro, you can't remove the battery from this model, so it's a bit harder to recharge." data-dimension48="Ring's least expensive battery-powered video doorbell is now 50% off. It has head-to-toe video, connects to Wi-Fi using 5GHz as well as the 2.4GHz band, and runs on either battery power or household current. Unlike the Battery Doorbell Plus and Battery Doorbell Pro, you can't remove the battery from this model, so it's a bit harder to recharge." data-dimension25="$49">View Deal</a></p></div><div class="product"><a data-dimension112="096ed032-a602-4f05-88cd-3178266aa9e9" data-action="Deal Block" data-label="Ring Battery Doorbell Plus review" data-dimension48="Ring Battery Doorbell Plus review" data-dimension25="$79" href="https://www.amazon.com/All-new-Ring-Battery-Doorbell-detection/dp/B09WZBPX7K/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="uV9gF5TU9QyVMithrrKe88" name="Ring Video Doorbell 3.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/uV9gF5TU9QyVMithrrKe88.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This is the Ring video doorbell I recommend to most people. It offers head-to-toe video, has a removable battery, and is reasonably priced — especially now, when you can get it for $70 off. In our <a href="https://www.tomsguide.com/reviews/ring-battery-doorbell-plus" data-dimension112="096ed032-a602-4f05-88cd-3178266aa9e9" data-action="Deal Block" data-label="Ring Battery Doorbell Plus review" data-dimension48="Ring Battery Doorbell Plus review" data-dimension25="$79">Ring Battery Doorbell Plus review</a>, we named it the best model for most people.<a class="view-deal button" href="https://www.amazon.com/All-new-Ring-Battery-Doorbell-detection/dp/B09WZBPX7K/" target="_blank" rel="nofollow" data-dimension112="096ed032-a602-4f05-88cd-3178266aa9e9" data-action="Deal Block" data-label="Ring Battery Doorbell Plus review" data-dimension48="Ring Battery Doorbell Plus review" data-dimension25="$79">View Deal</a></p></div><div class="product"><a data-dimension112="40e6a474-97c9-46af-877f-f0262a9cea20" data-action="Deal Block" data-label="Ring Battery Doorbell Pro" data-dimension48="Ring Battery Doorbell Pro" data-dimension25="$129" href="https://www.amazon.com/Ring-Battery-Doorbell-Pro-Video-Camera/dp/B0B2BY4ZG7" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1200px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="rAh4uR7AsAsALCCLTXnLNJ" name="Ring Battery Doorbell deal" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/rAh4uR7AsAsALCCLTXnLNJ.jpg" mos="" align="middle" fullscreen="" width="1200" height="1200" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/home/smart-home/ring-battery-doorbell-pro-review-the-video-doorbell-ive-been-waiting-for" data-dimension112="40e6a474-97c9-46af-877f-f0262a9cea20" data-action="Deal Block" data-label="Ring Battery Doorbell Pro" data-dimension48="Ring Battery Doorbell Pro" data-dimension25="$129">Ring Battery Doorbell Pro</a> is the upgrade on the Plus model, and includes two features: Bird's Eye View and radar, which helps you better see where someone is on your property. <a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Doorbell-Pro-Video-Camera/dp/B0B2BY4ZG7" target="_blank" rel="nofollow" data-dimension112="40e6a474-97c9-46af-877f-f0262a9cea20" data-action="Deal Block" data-label="Ring Battery Doorbell Pro" data-dimension48="Ring Battery Doorbell Pro" data-dimension25="$129">View Deal</a></p></div><div class="product"><a data-dimension112="49427b51-7608-4084-b81c-950b822fffb9" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (2nd gen" data-dimension48="Ring Wired Doorbell Pro (2nd gen" data-dimension25="$129" href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1125px;"><p class="vanilla-image-block" style="padding-top:133.33%;"><img id="fkQVEkLY5LSJmiJpfZSwXi" name="Ring video doorbell pro.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/fkQVEkLY5LSJmiJpfZSwXi.jpg" mos="" align="middle" fullscreen="" width="1125" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>While the Wired Doorbell Pro has to be wired to get power, it has a slim design, excellent video quality, and great motion detection, plus head-to-toe video. It doesn't have as high a resolution as the 3rd-gen model, but it still works well, which is why we rated it so highly in our <a href="https://www.tomsguide.com/reviews/ring-video-doorbell-pro-2" data-dimension112="49427b51-7608-4084-b81c-950b822fffb9" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (2nd gen" data-dimension48="Ring Wired Doorbell Pro (2nd gen" data-dimension25="$129">Ring Wired Doorbell Pro (2nd gen</a>) review.<a class="view-deal button" href="https://www.amazon.com/Ring-Video-Doorbell-Pro-2/dp/B086Q54K53/" target="_blank" rel="nofollow" data-dimension112="49427b51-7608-4084-b81c-950b822fffb9" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (2nd gen" data-dimension48="Ring Wired Doorbell Pro (2nd gen" data-dimension25="$129">View Deal</a></p></div><div class="product"><a data-dimension112="cd7c19da-f2bb-41e3-9b27-1fa702e5f89b" data-action="Deal Block" data-label="Ring Pan/Tilt Indoor Camera" data-dimension48="Ring Pan/Tilt Indoor Camera" data-dimension25="$79" href="https://www.amazon.com/Ring-Battery-Doorbell-Pan-Tilt-Indoor/dp/B0D934L4TW/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="v3macdZstrnQYMdndc6U5K" name="Ring battery doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/v3macdZstrnQYMdndc6U5K.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This deal bundles the lowest-priced Ring Battery Doorbell with the <a href="https://www.tomsguide.com/home/smart-home/ring-pan-tilt-indoor-cam-review-compact-360-degree-security-coverage" data-dimension112="cd7c19da-f2bb-41e3-9b27-1fa702e5f89b" data-action="Deal Block" data-label="Ring Pan/Tilt Indoor Camera" data-dimension48="Ring Pan/Tilt Indoor Camera" data-dimension25="$79">Ring Pan/Tilt Indoor Camera</a>, which can pan 360º and tilt 169º. Unfortunately, it cannot auto-track people or pets.<a class="view-deal button" href="https://www.amazon.com/Ring-Battery-Doorbell-Pan-Tilt-Indoor/dp/B0D934L4TW/" target="_blank" rel="nofollow" data-dimension112="cd7c19da-f2bb-41e3-9b27-1fa702e5f89b" data-action="Deal Block" data-label="Ring Pan/Tilt Indoor Camera" data-dimension48="Ring Pan/Tilt Indoor Camera" data-dimension25="$79">View Deal</a></p></div><div class="product"><a data-dimension112="b395573a-750f-4d0e-92e4-48141237af4c" data-action="Deal Block" data-label="Now's your chance to show all your visitors who you root for. This limited-time deal gets you the Ring Battery Doorbell Plus with your favorite NFL team's logo on the faceplate. And if you're a Browns fan, good news: the faceplate is removable." data-dimension48="Now's your chance to show all your visitors who you root for. This limited-time deal gets you the Ring Battery Doorbell Plus with your favorite NFL team's logo on the faceplate. And if you're a Browns fan, good news: the faceplate is removable." data-dimension25="$89" href="https://www.amazon.com/Ring-Doorbell-Official-Faceplate-Philadelphia/dp/B0FCGDHDY3?" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:808px;"><p class="vanilla-image-block" style="padding-top:99.88%;"><img id="5SG3QCEn3oKb5pgGoQ28z4" name="Ring video doorbell" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/5SG3QCEn3oKb5pgGoQ28z4.png" mos="" align="middle" fullscreen="" width="808" height="807" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Now's your chance to show all your visitors who you root for. This limited-time deal gets you the Ring Battery Doorbell Plus with your favorite NFL team's logo on the faceplate. And if you're a Browns fan, good news: the faceplate is removable.<a class="view-deal button" href="https://www.amazon.com/Ring-Doorbell-Official-Faceplate-Philadelphia/dp/B0FCGDHDY3?" target="_blank" rel="nofollow" data-dimension112="b395573a-750f-4d0e-92e4-48141237af4c" data-action="Deal Block" data-label="Now's your chance to show all your visitors who you root for. This limited-time deal gets you the Ring Battery Doorbell Plus with your favorite NFL team's logo on the faceplate. And if you're a Browns fan, good news: the faceplate is removable." data-dimension48="Now's your chance to show all your visitors who you root for. This limited-time deal gets you the Ring Battery Doorbell Plus with your favorite NFL team's logo on the faceplate. And if you're a Browns fan, good news: the faceplate is removable." data-dimension25="$89">View Deal</a></p></div><div class="product"><a data-dimension112="631b74e8-244a-4efc-8d63-ba9ad3754807" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (3rd gen)" data-dimension48="Ring Wired Doorbell Pro (3rd gen)" data-dimension25="$269" href="https://www.amazon.com/Ring-Wired-Doorbell-Newest-Model/dp/B0FM2H4GDY" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:408px;"><p class="vanilla-image-block" style="padding-top:105.39%;"><img id="wExfvd8WjxhDojgYWrejfR" name="Ring video doorbell pro.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/wExfvd8WjxhDojgYWrejfR.png" mos="" align="middle" fullscreen="" width="408" height="430" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This deal doesn't take any money off Ring's premium doorbell, but you do get a modest discount on the wireless chime. In our <a href="https://www.tomsguide.com/home/smart-home/ring-wired-doorbell-pro-3rd-gen-review" data-dimension112="631b74e8-244a-4efc-8d63-ba9ad3754807" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (3rd gen)" data-dimension48="Ring Wired Doorbell Pro (3rd gen)" data-dimension25="$269">Ring Wired Doorbell Pro (3rd gen)</a> review, we found its 4K camera delivered the best footage we've yet seen from a Ring video doorbell. And, its newer processor means it can identify familiar faces and even deliver custom greetings, thanks to Alexa+.<a class="view-deal button" href="https://www.amazon.com/Ring-Wired-Doorbell-Newest-Model/dp/B0FM2H4GDY" target="_blank" rel="nofollow" data-dimension112="631b74e8-244a-4efc-8d63-ba9ad3754807" data-action="Deal Block" data-label="Ring Wired Doorbell Pro (3rd gen)" data-dimension48="Ring Wired Doorbell Pro (3rd gen)" data-dimension25="$269">View Deal</a></p></div><div class="product"><a data-dimension112="b426b63b-66a2-4ede-a51c-d4ac5da1f44b" data-action="Deal Block" data-label="This deal bundles the 2nd-Gen Ring Wired Doorbell Plus, — which has a slimmer design, 2K camera, familiar faces, and Alexa+ — with the Ring Floodlight Cam Plus, which has a 1080p camera as well as dual LED floodlights." data-dimension48="This deal bundles the 2nd-Gen Ring Wired Doorbell Plus, — which has a slimmer design, 2K camera, familiar faces, and Alexa+ — with the Ring Floodlight Cam Plus, which has a 1080p camera as well as dual LED floodlights." data-dimension25="$279" href="https://www.amazon.com/Ring-Doorbell-Newest-Nickel-Floodlight/dp/B0FL5N45P6" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:426px;"><p class="vanilla-image-block" style="padding-top:93.43%;"><img id="YMwTqvUXLHg3ZMUW3vorbC" name="Ring Wired Doorbell Plus" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/YMwTqvUXLHg3ZMUW3vorbC.png" mos="" align="middle" fullscreen="" width="426" height="398" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This deal bundles the 2nd-Gen Ring Wired Doorbell Plus, — which has a slimmer design, 2K camera, familiar faces, and Alexa+ — with the Ring Floodlight Cam Plus, which has a 1080p camera as well as dual LED floodlights. <a class="view-deal button" href="https://www.amazon.com/Ring-Doorbell-Newest-Nickel-Floodlight/dp/B0FL5N45P6" target="_blank" rel="nofollow" data-dimension112="b426b63b-66a2-4ede-a51c-d4ac5da1f44b" data-action="Deal Block" data-label="This deal bundles the 2nd-Gen Ring Wired Doorbell Plus, — which has a slimmer design, 2K camera, familiar faces, and Alexa+ — with the Ring Floodlight Cam Plus, which has a 1080p camera as well as dual LED floodlights." data-dimension48="This deal bundles the 2nd-Gen Ring Wired Doorbell Plus, — which has a slimmer design, 2K camera, familiar faces, and Alexa+ — with the Ring Floodlight Cam Plus, which has a 1080p camera as well as dual LED floodlights." data-dimension25="$279">View Deal</a></p></div><div class="product"><a data-dimension112="438808fa-cae6-46ba-8dd8-e632466fd991" data-action="Deal Block" data-label="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension48="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension25="$" href="https://www.amazon.com/dp/B07ZQZFTHD" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="FFy8C4CQTJgi4gZ8FWgUpd" name="ring peephole echo show 5.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/FFy8C4CQTJgi4gZ8FWgUpd.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p><strong>Ring Peephole Cam w/ Echo Show 5: </strong><a href="https://www.amazon.com/dp/B07ZQZFTHD" target="_blank" rel="nofollow" data-dimension112="438808fa-cae6-46ba-8dd8-e632466fd991" data-action="Deal Block" data-label="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension48="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension25="$"><strong>was $219 now $144 @ Amazon</strong></a><br>This super-easy-to-install version of the Video Doorbell just pops onto either side of your front door. It runs on batteries but otherwise has all the features of the second-generation Ring. And, this deal comes with the Echo Show 5 for $75 off.<a class="view-deal button" href="https://www.amazon.com/dp/B07ZQZFTHD" target="_blank" rel="nofollow" data-dimension112="438808fa-cae6-46ba-8dd8-e632466fd991" data-action="Deal Block" data-label="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension48="Ring Peephole Cam w/ Echo Show 5: was $219 now $144 @ Amazon" data-dimension25="$">View Deal</a></p></div><h2 id="ring-video-doorbell-deals-what-to-look-for">Ring Video Doorbell deals: What to look for</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:3840px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="QyZCyWQ9BPnYCHPb89TyUW" name="ring doorbell 2nd gen-2" alt="Ring Video Doorbell 2nd generation" src="https://cdn.mos.cms.futurecdn.net/QyZCyWQ9BPnYCHPb89TyUW.jpg" mos="" align="middle" fullscreen="" width="3840" height="2160" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Future)</span></figcaption></figure><p>As I mentioned in the intro, most of the Ring doorbell deals so far have been for its previous generation of devices, which aren't bad, but don't have as high a resolution as the models it introduced this year. </p><p>While Amazon has labeled a lot of Ring's products as "newest model," the ones that are truly new will have the word "Retinal" in their titles. </p><p>The good news is that all of the last-gen models (as well as the newest ones) all support person and package detection, so you'll know when someone leaves something at your door. However, you will need to sign up for a Ring subscription, which starts at $4.99/month.</p><p>As we get closer to Black Friday itself, Amazon is most likely going to bundle Ring video doorbells with other devices, such as an indoor or outdoor security camera, or an Alexa-enabled smart display, like the Amazon Echo Show 5. It's a good way to get both items on sale, and you can use the Echo Show 5 (as well as any other Amazon smart display) to view live video from the Ring doorbell, and talk with the person at your door. </p><ul><li><a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">Best video doorbells</a>:  Who takes the top spot?</li><li><a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">Best Ring Video Doorbells</a></li></ul><ul><li><strong>Amazon: </strong><a href="https://www.amazon.com/b?node=210998206011" target="_blank" rel="nofollow"><strong>50% off Ring, Ninja, AirPods and more</strong></a><strong></strong></li><li><strong>Walmart Plus: </strong><a href="https://www.walmart.com/plus" target="_blank" rel="nofollow"><strong>50% off @ Walmart</strong></a></li><li><strong>REI: </strong><a href="https://www.rei.com/f/scd-deals" target="_blank" rel="nofollow"><strong>half-off Arc'teryx, Patagonia, more</strong></a><strong></strong></li><li><strong>Dell: </strong><a href="https://www.dell.com/en-us/shop/deals?sortBy=price-ascending" target="_blank" rel="nofollow"><strong>monitors from $69, laptops from $299</strong></a><strong></strong></li><li><strong>Nectar: </strong><a href="https://www.nectarsleep.com/" target="_blank" rel="nofollow"><strong>50% off mattresses + bundles</strong></a></li><li><strong>Best Buy: </strong><a href="https://www.bestbuy.com/site/all-electronics-on-sale/all-computers-tablets-on-sale/pcmcat1632941704767.c?id=pcmcat1632941704767" target="_blank" rel="nofollow"><strong>laptops from $149</strong></a><strong></strong></li><li><strong>Lenovo: </strong><a href="https://www.lenovo.com/us/en/d/deals/laptops/?IPromoID=LEN380027&sortBy=priceUp" target="_blank" rel="nofollow"><strong>doorbuster deals from $319</strong></a><strong></strong></li><li><strong>Wayfair: </strong><a href="https://www.wayfair.com/daily-sales" target="_blank" rel="nofollow"><strong>up to 80% off home decor</strong></a><strong></strong></li><li><strong>Lululemon: </strong><a href="https://shop.lululemon.com/c/we-made-too-much/n18mhd?Ns=price%7C0" target="_blank" rel="nofollow"><strong>top picks from $9</strong></a><strong></strong></li><li><strong>Newegg: </strong><a href="https://www.newegg.com/Black-November-Early-Access/EventSaleStore/ID-1132" target="_blank" rel="nofollow"><strong>Doorbuster deals from $6</strong></a></li><li><strong>Walmart: </strong><a href="https://www.walmart.com/cp/gifts/3131907" target="_blank" rel="nofollow"><strong>holiday gifts from $15</strong></a></li><li><strong>Birkenstock: </strong><a href="https://www.nordstrom.com/browse/sale?sort=PercentOff&filterByBrand=birkenstock" target="_blank" rel="nofollow"><strong>deals from $20 @ Nordstrom</strong></a><strong></strong></li><li><strong>Saatva: </strong><a href="https://www.saatva.com/mattresses/saatva-classic?utm_source=futurepublishing&utm_medium=affiliate&coupon=awyqqgzvxqicebab" target="_blank" rel="nofollow"><strong>luxury mattresses from $1,099</strong></a><strong></strong></li></ul><h3 class="article-body__section" id="section-shop-today-s-best-black-friday-deals"><span>Shop today's best Black Friday deals</span></h3><p><em>For more discounts, check out our </em><a href="https://www.tomsguide.com/live/news/amazon-black-friday-2025-lego-yeti-dyson"><em>Amazon Black Friday deals live blog</em></a><em>.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ 3 things you can do to be make your home more secure than the Louvre ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/computing/online-security/3-things-you-can-do-to-be-make-your-home-more-secure-than-the-louvre</link>
                                                                            <description>
                            <![CDATA[ It's surprisingly easy to make your home more secure than a famous museum with these three tips. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">yNYvc3fNEk3vGNEN8C2YG3</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/j8VkRyXGoZMvpMQXvYrSBR-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Sat, 08 Nov 2025 09:30:00 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Online Security]]></category>
                                                    <category><![CDATA[Computing]]></category>
                                                    <category><![CDATA[Internet]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/j8VkRyXGoZMvpMQXvYrSBR-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[An image of the Louvre with a password on a keyboard superimposed over the right hand side]]></media:description>                                                            <media:text><![CDATA[An image of the Louvre with a password on a keyboard superimposed over the right hand side]]></media:text>
                                <media:title type="plain"><![CDATA[An image of the Louvre with a password on a keyboard superimposed over the right hand side]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/j8VkRyXGoZMvpMQXvYrSBR-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>It's been almost a month since the brazen robbery at the Louvre where $101 million worth of jewelry was stolen in broad daylight. And while four suspects have since been arrested, the focus has now fallen on the weakness of the museum's security systems which had apparently gone unaddressed for long periods of time. </p><p>Multiple publications including <a href="https://cybernews.com/news/louvre-password-heist/">Cybernews</a> and <a href="https://www.tomshardware.com/tech-industry/cyber-security/louvre-heist-reveals-glaring-security-weaknesses-previous-reports-say-museum-used-louvre-as-password-for-its-video-surveillance-still-has-workstations-with-windows-2000">Tom's Hardware</a> cite the French publication <a href="https://www.liberation.fr/checknews/louvre-en-mot-de-passe-logiciels-obsoletes-mises-a-jour-impossibles-dix-ans-de-failles-dans-la-securite-informatique-du-premier-musee-au-monde-20251101_RD5YGV6WMVAXLL6U3SRGVFBIBY/" target="_blank"><em>Libération</em></a> as a source, via machine translation, regarding the details of a 2017 security audit from the ANSSI (French National Agency for the Security of Information Systems). The audit stated that the threat of an attack with "potentially dramatic consequences could no longer be ignored." </p><p>Additionally, a museum curator was quoted as saying “What I can testify to is that the Louvre’s management was fully aware of the … not of the weakness, but of the need to have a fresh look at the security system of the entire museum.”</p><p>The longstanding weaknesses of the system include using an outdated version of operating systems on the museums computers, not having enough video surveillance coverage of the massive museum itself, and perhaps most often noted by news stories, having "LOUVRE" as the password to the video surveillance system. </p><p>The last example is perhaps least surprising given how bad most passwords are – which is exactly why many companies are moving away from them altogether. </p><p>According to <a href="https://www.bgr.com/2018683/top-worst-passwords-2025-123456/" target="_blank" rel="nofollow">CompariTech</a> which released a report on Thursday, "123456" is the worst password of the year (for at least the <a href="https://www.tomsguide.com/computing/online-security/123456-is-the-worlds-most-popular-password-again">second year in a row</a>).  More than 7.61 million accounts leaked on a data breach forum this year had “123456” as their password. </p><p>This year's list of most uses/worst passwords are all, well, terrible. In addition to "123456" the top ten include "admin," "password," and "1234." Passwords are already on their way out, as many companies from <a href="https://www.tomsguide.com/computing/password-managers/chrome-could-soon-let-you-automatically-upgrade-from-passwords-to-passkeys-heres-how">Google</a> to <a href="https://www.tomsguide.com/computing/online-security/no-passwords-required-microsoft-makes-passwordless-the-default-for-new-users">Microsoft</a> move to the more secure passkey technology, and this report proves that the adoption of a more secure method is essential as users will simply default to the easiest or laziest option instead of taking time to properly secure their accounts. </p><p>Here are three ways you can make your home more secure than the now infamous Louvre, starting with your password. </p><h2 id="1-don-t-use-your-name-as-your-password">1. Don't use your name as your password</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="9YcEDwCBaBDgzVRnEk8sd7" name="shutterstock_2194384491-16x9" alt="An example of someone coming up with a strong password on a notebook" src="https://cdn.mos.cms.futurecdn.net/9YcEDwCBaBDgzVRnEk8sd7.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>In 2014 the password to the museum’s video surveillance systems’s was the name of the museum itself –  <a href="https://www.tomshardware.com/tech-industry/cyber-security/louvre-heist-reveals-glaring-security-weaknesses-previous-reports-say-museum-used-louvre-as-password-for-its-video-surveillance-still-has-workstations-with-windows-2000">LOUVRE</a> – the same audit showed that another system built by defense and cybersecurity company Thales, used THALES to access credentials. It's unclear whether or not these were default passwords that were left in place, or if they were purposefully chosen as the secure passwords for the organization. </p><p>However, either way, I think that in the year of our internet 2025 we should all be able to do better than our own names, our spouse's names, kids names or pets names as passwords. I can literally come up with three better passwords right now off the top of my head: PurpleMonkeyDishwasher. ArianaGrandestarsinWicked. Fridayisthelastdayintheweek. </p><p>All of those are phrases, contain more than twelve characters and aren't easily associated with anything that could be brute force guessed about my life. That makes them much harder to crack. </p><p>CTO at Dashlane, Frederic Rivain, was quoted by <a href="https://cybernews.com/news/louvre-password-heist/">Cybernews</a> suggesting that companies make better passwords by using one of the best password managers, by enabling multi-factor authentication or by switching to passkeys. And I recommend that advice for private individuals as well.  </p><h2 id="2-update-your-operating-system">2. Update your operating system</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="nM2QA9SAJTB9Hq3ATzrtdC" name="windows-11-stock-image.jpg" alt="Windows 11 logo on a laptop screen" src="https://cdn.mos.cms.futurecdn.net/nM2QA9SAJTB9Hq3ATzrtdC.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>Whether you manually update your computer's operating system regularly, or automate it, making sure that you're running the most up-to-date patches and updates against all the most recent malware, spyware, infostealers and ransomware. </p><p>According to reports, the Louvre's automated network was using computers equipped with Windows 2000. Support for Windows 2000 ended in 2010 which means that the museum's computers were not receiving any updates, patches or protections against any current malware. They systems were vulnerable to all manner of viruses or threats; according to the  <a href="https://www.liberation.fr/checknews/louvre-en-mot-de-passe-logiciels-obsoletes-mises-a-jour-impossibles-dix-ans-de-failles-dans-la-securite-informatique-du-premier-musee-au-monde-20251101_RD5YGV6WMVAXLL6U3SRGVFBIBY/" target="_blank"><em>Libération,</em></a> the museum was still running the outdating operating systems as late as 2021.</p><h2 id="3-invest-in-well-placed-cameras">3. invest in well placed cameras</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="zdT6cYkiwiYhjGxMEd2j8e" name="AI security cameras-1-LEDE" alt="Four home security cameras on an outdoor bench with green bushes in the background" src="https://cdn.mos.cms.futurecdn.net/zdT6cYkiwiYhjGxMEd2j8e.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Louvre is epically huge, at over 652,000 square feet, and according to a 2024 report 61% of it had no CCTV coverage. Covering that area is a daunting task, however, since it's unlikely that you have to deal with 37 hectares, it'll be a lot easier to get decent coverage with smart home security cameras if you start with the right areas. </p><p>First, cover your front entrance, then make sure that the most frequently used entrances have coverage. Sometimes that might be a back door, garage door or side door. </p><p>Next, make sure a camera is watching your garage and/or driveway – garages are common break in points both because they often contain expensive goodies like bicycles or tools and because they're harder to watch and hear as they’re often separate or removed from a home.</p><p>Last, put a camera up watching the backyard, deck or patio so you have a wide field of view over back entrances, as well as fences, gates, sheds, children playing or even wildlife passing through. </p><p>Make sure you’re avoiding low mounts on fences, which could get stolen, anything that faces a neighbors property and cameras pointed at a window (which will only reflect back).</p><h2 id="how-to-make-better-passwords">How to make better passwords</h2><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="wbnnjnFdxfHUZGiSFXky2S" name="computer smartphone security.jpg" alt="A woman's hands holding a smartphone with a lock symbol on it, in front of a laptop that also has a lock symbol on it." src="https://cdn.mos.cms.futurecdn.net/wbnnjnFdxfHUZGiSFXky2S.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Shutterstock)</span></figcaption></figure><p>If you must use a password, and insist upon not using one of the <a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">best password managers </a>or a passkey, here are some tips to make sure you can create your own unique, strong passwords. </p><p>Make your password a phrase, and use at least twelve characters. The longer the password, the longer it will take to crack; <a href="https://www.bgr.com/2018683/top-worst-passwords-2025-123456/" target="_blank" rel="nofollow">CompariTech</a> showed that nearly 66% of stolen passwords had less than twelve characters. Use a combination of upper and lowercase letters, numbers and characters. </p><p>Change your passwords frequently, especially for high profile accounts like banking, email or social media. If you're concerned about a password that may have been involved in a leak or breach, you can check it in the <a href="https://cybernews.com/password-leak-check/" target="_blank" rel="nofollow">Cybernews Password Leak Check</a>. Also, if you'd like to see how secure a password is, you can check it out beforehand in the <a href="https://nordpass.com/secure-password/" target="_blank" rel="nofollow">Nordpass How Secure is My Password site</a>. </p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide</span></h3><ul><li><a href="https://www.tomsguide.com/us/best-password-managers,review-3785.html">The best password managers in 2025</a></li><li><a href="https://www.tomsguide.com/computing/online-security/i-ditched-my-passwords-for-passkeys-on-these-3-popular-services-and-it-took-me-less-than-10-minutes">I ditched my passwords for passkeys on these 3 popular services — and it took me less than 10 minutes</a></li><li><a href="https://www.tomsguide.com/home/smart-home/the-3-best-places-to-put-a-home-security-camera-and-the-3-worst">The 3 best places to put a home security camera — and the 3 worst</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ I've found the best October Prime Day deals on home security cameras — save up to 50% on Ring, Eufy, Wyze and more ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/ive-found-the-best-october-prime-day-deals-on-home-security-cameras-save-up-to-50-percent-on-ring-eufy-wyze-and-more</link>
                                                                            <description>
                            <![CDATA[ Amazon's October Prime Day has some steep discounts on our favorite home security cameras from all the top brands. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">dVXyuWGThEtrMGPFg2ucaM</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/pRewz7eHQFqK4VskDiRZUS-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 08 Oct 2025 09:30:00 +0000</pubDate>                                                                                                                                <updated>Wed, 08 Oct 2025 18:23:05 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ amber.bouman@futurenet.com (Amber Bouman) ]]></author>                    <dc:creator><![CDATA[ Amber Bouman ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/KmvVweDrSFNc52AnqCJzR.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Amber Bouman is the senior editor for security at Tom&#039;s Guide where she covers everything from home security cameras and identity theft to password breaches, password managers and antivirus software.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Previous to joining the Tom&#039;s Guide team, Amber spent two years covering parenting technology at Reviewed. She also spent five years as a parenting editor and community manager at Engadget, and has worked at TechHive, Wirecutter, Maximum PC and PC World covering smartphones, parenting tech, B2B, PC builds, tech accessories, apps and more.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;br&gt;&lt;/p&gt;
&lt;p&gt;A California native, Amber currently lives in rural New England and has been testing apps and products for over fifteen years. She has worked as a consumer advocate, helping find resolutions for common customer problems. As a former comment moderator and community editor, she became invested in the topics of internet security and safety, identity theft, online disinformation and the safety of women and marginalized communities online.&amp;nbsp;&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/pRewz7eHQFqK4VskDiRZUS-1280-80.jpg">
                                                            <media:credit><![CDATA[Wyze/Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wyze Cam v4 mounted to outdoor beam]]></media:description>                                                            <media:text><![CDATA[Wyze Cam v4 mounted to outdoor beam]]></media:text>
                                <media:title type="plain"><![CDATA[Wyze Cam v4 mounted to outdoor beam]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/pRewz7eHQFqK4VskDiRZUS-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>These days, one of the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras">best home security cameras</a> is an essential part of any home and there are plenty of steep discounts to be had on our favorite models right now in Amazon's <a href="https://www.tomsguide.com/sales-events/october-prime-big-deal-days-2025">October Prime Day</a> sale. </p><p>From securing your home from intruders to keeping an eye on pets or kids, investing in a few indoor and outdoor security cameras is absolutely worth it. The good news is there are so many excellent models available that it's easy to pick one for almost any need or task – whether you need a budget outdoor camera to watch your garage or want a top of the line offline option for the entire interior of your home.</p><p>Amazon's Prime Big Deal Days has plenty of worthwhile deals on some of our favorites from top brands like Google Nest, Ring, Blink, Eufy and Wyze. While some premium models are half off, more budget-friendly options have also been heavily discounted, making them an even better buy. </p><p>Either way, now is the best time to take advantage of these deals on both indoor and outdoor home security cameras which I personally recommend based on our extensive real-world testing and reviews but you'll have to hurry as October Prime Day is more than halfway over.</p><h3 class="article-body__section" id="section-quick-links"><span>Quick Links</span></h3><ul><li><strong>Ring Floodlight Cam Wired Pro: </strong><a href="https://www.amazon.com/dp/B0CG6VFFVL?th=1" target="_blank" rel="nofollow"><strong>was $230 now $160 @ Amazon</strong></a><strong></strong></li><li><strong>Google Nest Cam Outdoor or Indoor, Battery (2 Pack): </strong><a href="https://www.amazon.com/dp/B09FCF5SNR" target="_blank" rel="nofollow"><strong>was $330 now $260 @ Amazon </strong></a><strong> </strong></li><li><strong>Google Nest Cam with Floodlight: </strong><a href="https://www.amazon.com/Google-G3AL9-GPLE9-Nest-Floodlight/dp/B09J9ZWZ9Q?th=1" target="_blank" rel="nofollow"><strong>was $280 now $209 @ Amazon</strong></a><strong></strong></li><li><strong>Wyze Cam v4: </strong><a href="https://www.amazon.com/dp/B0CJ9YX7DG/" target="_blank" rel="nofollow"><strong>was $36 now $26 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security Indoor Cam S350: </strong><a href="https://www.amazon.com/dp/B0CD7F1M9R/" target="_blank" rel="nofollow"><strong>was $140 now $80 @ Amazon </strong></a><strong></strong></li><li><strong>Blink Outdoor 4: </strong><a href="https://www.amazon.com/Blink-Outdoor-4th-Gen-Add/dp/B0B1N7LJD3?ref_=ast_sto_dp&th=1" target="_blank" rel="nofollow"><strong>was $70 now $35 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy Security Cam 3: </strong><a href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX/" target="_blank" rel="nofollow"><strong>was $220 now $130 @ Amazon</strong></a><strong></strong></li><li><strong>Arlo Ultra 2, two camera system: </strong><a href="https://www.amazon.com/dp/B08HRML25F/" target="_blank" rel="nofollow"><strong>was $600 now $346 @ Amazon</strong></a><strong></strong></li><li><strong>Eufy 4G LTE Cam S330: </strong><a href="https://www.amazon.com/dp/B0CZ6KW4NP/" target="_blank" rel="nofollow"><strong>was $250 now $160 @ Amazon</strong></a><strong></strong></li></ul><h3 class="article-body__section" id="section-home-security-camera-deals"><span>Home Security Camera Deals</span></h3><div class="product"><a data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring Floodlight Cam" data-dimension48="Ring Floodlight Cam" data-dimension25="$160" href="https://www.amazon.com/dp/B0CG6VFFVL?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1500px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="T6sepPxHrDHb8GzKATZSYC" name="1751635906.jpg" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/T6sepPxHrDHb8GzKATZSYC.jpg" mos="" align="middle" fullscreen="" width="1500" height="1500" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/us/ring-floodlight-cam,review-5093.html" data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring Floodlight Cam" data-dimension48="Ring Floodlight Cam" data-dimension25="$160">Ring Floodlight Cam</a> gives you a bird’s eye view, 2K video quality with color night vision, 3D motion detection, and 2000 LED floodlights. It also has two-way talk capabilities, a 110 decibel siren and can provide real-time alerts through the Ring app. A subscription to Ring Home adds additional features like people and package alerts and 24/7 recording. Although it's wired, we found it easy to install during testing and also appreciated the great image quality. <a class="view-deal button" href="https://www.amazon.com/dp/B0CG6VFFVL?th=1" target="_blank" rel="nofollow" data-dimension112="9e18d769-8aea-41e1-9f6a-d770a034e233" data-action="Deal Block" data-label="Ring Floodlight Cam" data-dimension48="Ring Floodlight Cam" data-dimension25="$160">View Deal</a></p></div><div class="product"><a data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$260" href="https://www.amazon.com/dp/B09FCMSJZG?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:623px;"><p class="vanilla-image-block" style="padding-top:72.23%;"><img id="gjmvNhxVmVyr6UL6UGRPxP" name="31750hI5MLL._AC_SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/gjmvNhxVmVyr6UL6UGRPxP.jpg" mos="" align="middle" fullscreen="" width="623" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Our best overall indoor camera, the <a href="https://www.tomsguide.com/reviews/nest-cam-battery" data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$260">Nest Cam</a>, was incredibly easy to install using the magnetic mount when we tested it and the device comes with many helpful features like two way audio, built-in intelligent alerts (via the Google Home app), local storage and three hours of free event history. It's compatible with smart assistants (Google Assistant and Amazon Alexa) so it works with smart displays and smart TVs, is weather resistant so it will also work in some outdoor situations and provides great 1080p HDR video and night vision as well as a 130 degree field of view. It can also distinguish between a person, animal and vehicle, and provide up to an hour of recorded events even if the power is out.<a class="view-deal button" href="https://www.amazon.com/dp/B09FCMSJZG?th=1" target="_blank" rel="nofollow" data-dimension112="44d2d6ca-0582-4f45-bbda-45d5510b978d" data-action="Deal Block" data-label="Nest Cam" data-dimension48="Nest Cam" data-dimension25="$260">View Deal</a></p></div><div class="product"><a data-dimension112="1fbc3243-bc8a-4cd2-81c8-d97dee123285" data-action="Deal Block" data-label="Many of the same features we’re fond of on the standard battery powered outdoor Nest Cam are also on the Floodlight version. However, this bundle also includes additional features. It can detect motion and it automatically lights up when there’s important activity. If you have a Nest Aware subscription it can detect familiar faces so you know who’s coming and going. Not only can you listen and talk with the two way mic and speaker, but the Google Home/Nest Aware paired feature lets you call through to local emergency services. You can use Google Assistant to turn on the floodlight as well. It's a bit pricier, but this Prime Day discount brings it down by almost a hundred dollars." data-dimension48="Many of the same features we’re fond of on the standard battery powered outdoor Nest Cam are also on the Floodlight version. However, this bundle also includes additional features. It can detect motion and it automatically lights up when there’s important activity. If you have a Nest Aware subscription it can detect familiar faces so you know who’s coming and going. Not only can you listen and talk with the two way mic and speaker, but the Google Home/Nest Aware paired feature lets you call through to local emergency services. You can use Google Assistant to turn on the floodlight as well. It's a bit pricier, but this Prime Day discount brings it down by almost a hundred dollars." data-dimension25="$209" href="https://www.amazon.com/Google-G3AL9-GPLE9-Nest-Floodlight/dp/B09J9ZWZ9Q?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:840px;"><p class="vanilla-image-block" style="padding-top:67.74%;"><img id="VwWAgdFcXQFLuLfYZxH6ng" name="31R2Cj5T-2L._AC_SL1080_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/VwWAgdFcXQFLuLfYZxH6ng.jpg" mos="" align="middle" fullscreen="" width="840" height="569" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>Many of the same features we’re fond of on the standard battery powered outdoor Nest Cam are also on the Floodlight version. However, this bundle also includes additional features. It can detect motion and it automatically lights up when there’s important activity. If you have a Nest Aware subscription it can detect familiar faces so you know who’s coming and going. Not only can you listen and talk with the two way mic and speaker, but the Google Home/Nest Aware paired feature lets you call through to local emergency services. You can use Google Assistant to turn on the floodlight as well. It's a bit pricier, but this Prime Day discount brings it down by almost a hundred dollars. <a class="view-deal button" href="https://www.amazon.com/Google-G3AL9-GPLE9-Nest-Floodlight/dp/B09J9ZWZ9Q?th=1" target="_blank" rel="nofollow" data-dimension112="1fbc3243-bc8a-4cd2-81c8-d97dee123285" data-action="Deal Block" data-label="Many of the same features we’re fond of on the standard battery powered outdoor Nest Cam are also on the Floodlight version. However, this bundle also includes additional features. It can detect motion and it automatically lights up when there’s important activity. If you have a Nest Aware subscription it can detect familiar faces so you know who’s coming and going. Not only can you listen and talk with the two way mic and speaker, but the Google Home/Nest Aware paired feature lets you call through to local emergency services. You can use Google Assistant to turn on the floodlight as well. It's a bit pricier, but this Prime Day discount brings it down by almost a hundred dollars." data-dimension48="Many of the same features we’re fond of on the standard battery powered outdoor Nest Cam are also on the Floodlight version. However, this bundle also includes additional features. It can detect motion and it automatically lights up when there’s important activity. If you have a Nest Aware subscription it can detect familiar faces so you know who’s coming and going. Not only can you listen and talk with the two way mic and speaker, but the Google Home/Nest Aware paired feature lets you call through to local emergency services. You can use Google Assistant to turn on the floodlight as well. It's a bit pricier, but this Prime Day discount brings it down by almost a hundred dollars." data-dimension25="$209">View Deal</a></p></div><div class="product"><a data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze Cam v4" data-dimension48="Wyze Cam v4" data-dimension25="$26" href="https://www.amazon.com/dp/B0CJ9YX7DG/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1177px;"><p class="vanilla-image-block" style="padding-top:125.83%;"><img id="5WjBRPnuDjz3YUuuvUC5zQ" name="51K54VizzIL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/5WjBRPnuDjz3YUuuvUC5zQ.jpg" mos="" align="middle" fullscreen="" width="1177" height="1481" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/home/smart-home/wyze-cam-v4-review-the-new-king-of-budget-security-cameras" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze Cam v4" data-dimension48="Wyze Cam v4" data-dimension25="$26">Wyze Cam v4</a> is our best indoor value pick because it's small, lightweight, and inexpensive but still offers a lot of punch when it comes to quality and features: 2.5K QHD video with color night vision, two-way audio, local recording courtesy of an microSD card slot, a 116 degree field of view, a motion activated spotlight and it's IP65 weatherproof as well. A Cam Plus or Cam Unlimited subscription unlocks additional features like secure cloud recording and people, package, pet and vehicle detection. <a class="view-deal button" href="https://www.amazon.com/dp/B0CJ9YX7DG/?th=1" target="_blank" rel="nofollow" data-dimension112="c0c2f5b2-f96b-468c-892c-7e2bf7dee07c" data-action="Deal Block" data-label="Wyze Cam v4" data-dimension48="Wyze Cam v4" data-dimension25="$26">View Deal</a></p></div><div class="product"><a data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy S350" data-dimension48="Eufy S350" data-dimension25="$80" href="https://www.amazon.com/dp/B0CD7F1M9R/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:840px;"><p class="vanilla-image-block" style="padding-top:94.64%;"><img id="MoLctZkC3gZ9asqgCDDmpA" name="41KrprgMcDL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/MoLctZkC3gZ9asqgCDDmpA.jpg" mos="" align="middle" fullscreen="" width="840" height="795" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/home/smart-home/eufy-cam-s350-review-the-best-4k-indoor-security-camera-without-a-subscription" data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy S350" data-dimension48="Eufy S350" data-dimension25="$80">Eufy S350</a> is our pick for best indoor camera without a subscription, but its best feature is obviously the dual cameras, which help to provide a telephoto view as well as an 8x hybrid zoom. The S350 also features some of Eufy's other flagship features like a 360 degree field of view and AI tracking which follows motion like people or pets as they move around a room. Other features include 4K UHD, 2 high-powered LED lights, a privacy mode, local storage, two-way audio and 24/7 recording. It's compatible with HomeBase 3, and works with both Amazon Alexa and Google Assistant. <a class="view-deal button" href="https://www.amazon.com/dp/B0CD7F1M9R/" target="_blank" rel="nofollow" data-dimension112="d6330174-de33-4142-8e59-d2b9f1c46fae" data-action="Deal Block" data-label="Eufy S350" data-dimension48="Eufy S350" data-dimension25="$80">View Deal</a></p></div><div class="product"><a data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor 4" data-dimension48="Blink Outdoor 4" data-dimension25="$35" href="https://www.amazon.com/Blink-Outdoor-4th-Gen-Add/dp/B0B1N7LJD3" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1000px;"><p class="vanilla-image-block" style="padding-top:100.00%;"><img id="d3chJyX9Q5YMxAoj6WjihN" name="413JQThf2YL._SL1000_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/d3chJyX9Q5YMxAoj6WjihN.jpg" mos="" align="middle" fullscreen="" width="1000" height="1000" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The <a href="https://www.tomsguide.com/reviews/blink-outdoor-4" data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor 4" data-dimension48="Blink Outdoor 4" data-dimension25="$35">Blink Outdoor 4</a> is on our list as the best outdoor budget home security camera and it's easy to see why. An entry level price gets you 1080p video resolution, 130 degree field of view, 25 feet worth of night vision, local storage, weather resistance, 700 lumen floodlights and it works on two AA batteries that should last you for up to two years. During testing we particularly liked how easy it was to set up the Outdoor 4, and how it was a nice step up from previous iterations without adding anything that distracted from what the brand has built. All the features still worked as expected from the person detection and dual motion zones to the compatibility with smart assistants like Alexa. <a class="view-deal button" href="https://www.amazon.com/Blink-Outdoor-4th-Gen-Add/dp/B0B1N7LJD3" target="_blank" rel="nofollow" data-dimension112="114e088b-a679-4aed-afa7-a16380b431f7" data-action="Deal Block" data-label="Blink Outdoor 4" data-dimension48="Blink Outdoor 4" data-dimension25="$35">View Deal</a></p></div><div class="product"><a data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="Eufy Cam 3" data-dimension48="Eufy Cam 3" data-dimension25="$130" href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:466px;"><p class="vanilla-image-block" style="padding-top:80.47%;"><img id="XpNUDfh8NMAGr9VGtDctNL" name="512x0sIKH+L._AC_SX466_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/XpNUDfh8NMAGr9VGtDctNL.jpg" mos="" align="middle" fullscreen="" width="466" height="375" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>This <a href="https://www.tomsguide.com/reviews/eufy-edge-security-system-review" data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="Eufy Cam 3" data-dimension48="Eufy Cam 3" data-dimension25="$130">Eufy Cam 3</a> is on our list because it's a great camera that can work inside or out and doesn't require a subscription but one of its most standout features is the "Forever Power" that uses an integrated solar panel to run indefinitely as long as it has roughly two hours of sunlight daily. It also has 4K UHD video quality, two-way audio, and is IP67 rated which means it's waterproof and dust resistant. It has 16GB built-in storage and expandable local storage (which means no monthly fees) and can use its face recognition AI to distinguish between family and strangers. And you can voice activate it via Google Assistant and Amazon Alexa. <a class="view-deal button" href="https://www.amazon.com/eufy-Security-Recognition-Expandable-Spotlight/dp/B0B79LHWSX/" target="_blank" rel="nofollow" data-dimension112="fb6a6eb9-657d-4c22-a9a4-fa0a9623a788" data-action="Deal Block" data-label="Eufy Cam 3" data-dimension48="Eufy Cam 3" data-dimension25="$130">View Deal</a></p></div><div class="product"><a data-dimension112="e349ed85-02e2-476c-9ef1-040cdd005f98" data-action="Deal Block" data-label="The Arlo Ultra 2 is our pick as best 4K video camera for its 4K HDR video; it also features an ultra wide 180 degree field of view and 12x zoom. It has a removable, rechargeable battery, two-way audio, color night vision, a built-in spotlight and remote siren activation. The Arlo Secure app sends notifications with live video streaming and motion activation, and the Arlo Secure Plan subscription lets you share and store video for up to 60 days and can alert for people, packages, vehicles and even fire." data-dimension48="The Arlo Ultra 2 is our pick as best 4K video camera for its 4K HDR video; it also features an ultra wide 180 degree field of view and 12x zoom. It has a removable, rechargeable battery, two-way audio, color night vision, a built-in spotlight and remote siren activation. The Arlo Secure app sends notifications with live video streaming and motion activation, and the Arlo Secure Plan subscription lets you share and store video for up to 60 days and can alert for people, packages, vehicles and even fire." data-dimension25="$346" href="https://www.amazon.com/dp/B08HRML25F/?th=1" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:542px;"><p class="vanilla-image-block" style="padding-top:83.03%;"><img id="zansrumPXxFFuXiYgnTHzf" name="61MW2-Sg9mL._AC_SY450_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/zansrumPXxFFuXiYgnTHzf.jpg" mos="" align="middle" fullscreen="" width="542" height="450" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The Arlo Ultra 2 is our pick as best 4K video camera for its 4K HDR video; it also features an ultra wide 180 degree field of view and 12x zoom. It has a removable, rechargeable battery, two-way audio, color night vision, a built-in spotlight and remote siren activation. The Arlo Secure app sends notifications with live video streaming and motion activation, and the Arlo Secure Plan subscription lets you share and store video for up to 60 days and can alert for people, packages, vehicles and even fire. <a class="view-deal button" href="https://www.amazon.com/dp/B08HRML25F/?th=1" target="_blank" rel="nofollow" data-dimension112="e349ed85-02e2-476c-9ef1-040cdd005f98" data-action="Deal Block" data-label="The Arlo Ultra 2 is our pick as best 4K video camera for its 4K HDR video; it also features an ultra wide 180 degree field of view and 12x zoom. It has a removable, rechargeable battery, two-way audio, color night vision, a built-in spotlight and remote siren activation. The Arlo Secure app sends notifications with live video streaming and motion activation, and the Arlo Secure Plan subscription lets you share and store video for up to 60 days and can alert for people, packages, vehicles and even fire." data-dimension48="The Arlo Ultra 2 is our pick as best 4K video camera for its 4K HDR video; it also features an ultra wide 180 degree field of view and 12x zoom. It has a removable, rechargeable battery, two-way audio, color night vision, a built-in spotlight and remote siren activation. The Arlo Secure app sends notifications with live video streaming and motion activation, and the Arlo Secure Plan subscription lets you share and store video for up to 60 days and can alert for people, packages, vehicles and even fire." data-dimension25="$346">View Deal</a></p></div><div class="product"><a data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="Eufy Security S330" data-dimension48="Eufy Security S330" data-dimension25="$160" href="https://www.amazon.com/dp/B0CZ6KW4NP/" target="_blank" rel="nofollow"><figure class="van-image-figure "  ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1003px;"><p class="vanilla-image-block" style="padding-top:105.58%;"><img id="st7JwUrMxeo5zZk5AisTG9" name="61iudX87eZL._AC_SL1500_" caption="" alt="" src="https://cdn.mos.cms.futurecdn.net/st7JwUrMxeo5zZk5AisTG9.jpg" mos="" align="middle" fullscreen="" width="1003" height="1059" attribution="" endorsement="" credit="" class=""></p></div></div></figure></a><p>The outdoor-focused <a href="https://www.tomsguide.com/home/smart-home/eufy-4g-lte-cam-s330-review" data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="Eufy Security S330" data-dimension48="Eufy Security S330" data-dimension25="$160">Eufy Security S330</a> has a 4K cellular solar panel and comes with a SIM card so you're not dependent on Wi-Fi or power (but you are dependent on a LTE signal). While it does take a little more time to put up and install, it's an ideal choice for very rural locations, or places that can't access the grid. The camera in this package has 360 degree viewing with pan and tilt, AI motion tracking and local storage courtesy of a 32GB SD card. It's weather resistant and has a 100 lumen spotlight as well. <a class="view-deal button" href="https://www.amazon.com/dp/B0CZ6KW4NP/" target="_blank" rel="nofollow" data-dimension112="d22edc4c-b5c4-46b7-bdc4-bbb39df14c99" data-action="Deal Block" data-label="Eufy Security S330" data-dimension48="Eufy Security S330" data-dimension25="$160">View Deal</a></p></div><p><em>For more great discounts be sure to check out our </em><a href="https://www.tomsguide.com/live/news/best-prime-big-deal-days-october-2025#mrfhud=true" target="_blank"><em>Amazon Prime Day deals live blog</em></a><em> right now.</em></p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Ring's new Search Party feature can help you find your lost dog — here's how it works ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/rings-new-search-party-feature-can-help-you-find-your-lost-dog-heres-how-it-works</link>
                                                                            <description>
                            <![CDATA[ Discover how Ring's AI-powered Search Party feature helps people find their lost dogs. ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">b45XkFZsHiXic5hvk2JkCb</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Wed, 01 Oct 2025 15:45:14 +0000</pubDate>                                                                                                                                                                                                                                <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                <author><![CDATA[ kaycee.hill@futurenet.com (Kaycee Hill) ]]></author>                    <dc:creator><![CDATA[ Kaycee Hill ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/XR7uugHJo9GDpoV7ZN22Ae.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ null ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Ring doorbell search party feature]]></media:description>                                                            <media:text><![CDATA[Ring doorbell search party feature]]></media:text>
                                <media:title type="plain"><![CDATA[Ring doorbell search party feature]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/BebVqWXRw3T4ATB3fr9Z9f-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <p>Among other new features announced at <a href="https://www.tomsguide.com/news/live/amazon-devices-and-services-2025-event-live">Amazon's event</a>, Ring announced Search Party, an AI-powered community feature that turns outdoor Ring cameras into a neighborhood network for finding lost dogs. </p><p>The feature launches as <a href="https://ring.com/support/articles/pkhj7/using-pet-tags-pet-profiles-and-neighborhood-search?srsltid=AfmBOooTj1bk42F5i7gPmNGaFNJg5olGDwi9v_C4RCAaoK8jRJW3yTIK">pet owners posted over 1 million lost or found pet reports in the Ring app</a> during the last year alone. Search Party uses artificial intelligence to scan outdoor camera footage for dogs matching descriptions of missing pets reported in the app. When a potential match is detected, nearby camera owners receive notifications with images and relevant footage that might help reunite the dog with its family. Rolling out in November to users in the U.S., Ring plans to expand this feature to cats and other animals at a later date. </p>                    <div class= "tiktok-wrapper" style="min-height: 750px;"><blockquote class="tiktok-embed" cite="https://www.tiktok.com/@tomsguide/video/7555889974667709751" data-video-id="7555889974667709751" style="max-width: 605px; min-width: 325px;">                        <section>                            <a target="_blank" title="@tomsguide" href="https://www.tiktok.com/@tomsguide">@tomsguide</a>                            <p></p><a target="_blank" title="♬ original sound - Tom’s Guide" href="https://www.tiktok.com/music/original-sound-7555890149083613965">♬ original sound - Tom’s Guide</a></section>                    </blockquote></div>                <h2 id="how-search-party-works">How Search Party works </h2><p>When your dog goes missing, you report it in the Ring app with a description and photo of your missing pet. This alert triggers Search Party for outdoor Ring cameras in the surrounding area.</p><p>AI analyzes footage from participating outdoor cameras to identify dogs that potentially match the lost pet's description. The system looks for visual matches based on the information provided in the missing dog report.</p><p>Camera owners receive notifications when a possible match is detected. The alert includes a picture of the reported lost dog alongside relevant footage from your camera showing the potential match.</p><p>You control whether to participate in each Search Party. When you receive an alert about a possible match, you can choose to ignore it or share the footage with the neighbor who reported the lost dog.</p><p>The feature reflects Ring's broader vision of using AI to create connected communities where neighbors actively help each other. Search Party represents one application of this community-focused approach to smart home technology.</p><h2 id="compatible-ring-devices-2">Compatible Ring devices</h2><p>Search Party works with the following Ring cameras and doorbells:</p><p><strong>Doorbells:</strong> All Ring doorbell models are compatible with Search Party and can participate in lost dog alerts.</p><p><strong>Floodlight Cams:</strong> All models work with the feature to help locate missing pets in your area.</p><p><strong>Spotlight Cams:</strong> All models support Search Party functionality for finding lost dogs.</p><p><strong>Stick Up Cam:</strong> All models are eligible only if explicitly set to "Outdoor" Install Type in Device Settings.</p><p><strong>Outdoor Cam:</strong> All models are eligible only if explicitly set to "Outdoor" Install Type in Device Settings.</p><p>We're curious to see how well this feature works, and if it will help set <a href="https://www.tomsguide.com/face-off/ring-video-doorbell-3-vs-doorbell-pro">Ring video doorbells</a> apart from the <a href="https://www.tomsguide.com/us/best-video-doorbells,review-4468.html">best video doorbells</a>. Now that AI is being integrated into just about every company's product, it's features like this that could differentiate one device from another.</p><h3 class="article-body__section" id="section-more-from-tom-s-guide"><span>More from Tom's Guide </span></h3><ul><li><a href="https://www.tomsguide.com/home/home-security/7-tips-for-getting-the-most-out-of-your-ring-doorbell">7 Ring video doorbell tips everyone needs to know</a></li><li><a href="https://www.tomsguide.com/home/smart-home/put-your-ring-doorbell-on-a-schedule-how-to-control-motion-detection-times">How to put Ring Doorbell motion detection on a schedule</a></li><li><a href="https://www.tomsguide.com/home/smart-home/make-your-ring-doorbell-smarter-how-to-set-up-quick-replies">Make your Ring Doorbell smarter — how to set up quick replies</a></li></ul>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
                                <item>
                                                            <title><![CDATA[ Wyze Cam Pan v4 review: The best budget 4K security camera ]]></title>
                                                                                                                                                                                                <link>https://www.tomsguide.com/home/home-security/wyze-cam-pan-v4-review</link>
                                                                            <description>
                            <![CDATA[ The Wyze Cam Pan v4 offers 4K recording and smart features in a well-priced camera. Does it cut any corners to hit the low price point? ]]>
                                                                                                            </description>
                                                                                                                                <guid isPermaLink="false">vT3TY4wYaL9ACCYFYDrcvX</guid>
                                                                                                <enclosure url="https://cdn.mos.cms.futurecdn.net/XmN6cYj4xpktQjkoKDddMX-1280-80.jpg" type="image/jpeg" length="0"></enclosure>
                                                                        <pubDate>Tue, 30 Sep 2025 18:33:16 +0000</pubDate>                                                                                                                                <updated>Thu, 26 Mar 2026 10:30:50 +0000</updated>
                                                                                                                                            <category><![CDATA[Home Security]]></category>
                                                    <category><![CDATA[Home]]></category>
                                                                                                                    <dc:creator><![CDATA[ Christian de Looper ]]></dc:creator>                                                                                    <dc:source><![CDATA[ https://cdn.mos.cms.futurecdn.net/cyHuThvGLCKTfcMnWJiY4Y.jpg ]]></dc:source>
                                                                <dc:description><![CDATA[ &lt;p&gt;Christian de Looper is a freelance writer who has covered every facet of consumer tech, including mobile, audio, home theater, computing, gaming, and even car tech. At Tom’s Guide, Christian covers TV and home theater tech, and has reviewed dozens of TVs, soundbars, and A/V receivers, including those from the likes of Samsung, Hisense, TCL, and Vizio. Christian has also covered numerous industry events, from CES to F8, and is an expert at writing reviews, buying guides, and news. Outside of Tom’s Guide, Christian’s byline can be seen at TechRadar, Forbes, Digital Trends, Business Insider, and more. Follow Christian on Twitter to keep up with all his tech coverage.&lt;/p&gt; ]]></dc:description>
                                                                                                                                <cf:isSponsored>false</cf:isSponsored>
                <cf:hasAffiliateLinks>false</cf:hasAffiliateLinks>
                <cf:isPaid>false</cf:isPaid>
                                                                                                                                <media:content type="image/jpeg" url="https://cdn.mos.cms.futurecdn.net/XmN6cYj4xpktQjkoKDddMX-1280-80.jpg">
                                                            <media:credit><![CDATA[Tom&#039;s Guide]]></media:credit>
                                                                                                                                                                                                                                    <media:description><![CDATA[Wyze Cam Pan v4 on a desk]]></media:description>                                                            <media:text><![CDATA[Wyze Cam Pan v4 on a desk]]></media:text>
                                <media:title type="plain"><![CDATA[Wyze Cam Pan v4 on a desk]]></media:title>
                                                    </media:content>
                                                    <media:thumbnail url="https://cdn.mos.cms.futurecdn.net/XmN6cYj4xpktQjkoKDddMX-1280-80.jpg" />
                                                                                                                                                                    <content:encoded >
                            <![CDATA[
                            <article>
                                <div  class="fancy-box"><div class="fancy_box-title">Wyze Cam Pan v4: Specs</div><div class="fancy_box_body"><p class="fancy-box__body-text"><strong>Video: </strong>3,840 x 2,160<br><strong>Field of view: </strong>105.4 degrees<br><strong>Night vision: </strong>Infrared, color with spotlight<br><strong>Wireless: </strong>Wi-Fi 6<br><strong>Weather resistance: </strong>IP65<br><strong>Power: </strong>Wired, USB-C, 110-240V (AC) input, 5V/2A output</p></div></div><p>Wyze has long offered relatively affordable smart home devices that are reasonably high quality. The Wyze Cam in particular has been popular among smart home enthusiasts and those getting started with smart security who may not want to spend much more than necessary. The latest in the series is the Wyze Cam Pan v4, which is built to go beyond the basics with a 4K resolution and a series of smart features while still retaining the affordable price tag.</p><p>The new camera is a pretty significant upgrade over the v3 model. Notably, it steps up the resolution, all the way up from 1080p to 4K, while upgrading the night vision tech, adding AI-powered tracking features, and more. </p><p>The upgrade comes at a time when we’re starting to see more low-cost, high-quality security cameras — like the new Arlo Essential Pan Tilt Indoor Camera 2K, which has many of the same features. Does Wyze do enough to take the top spot among the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras"><u>best home security cameras</u></a>?</p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-price-and-availability"><span>Wyze Cam Pan v4 review: Price and availability</span></h3><p>The Wyze Cam Pan v4 went on sale in the second half of 2025, and is available from the Wyze website and online retailers like Amazon. It costs $59.98 for a single camera. You can also buy it in two or three packs, which gives you a little discount over purchasing them individually.</p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-design-and-installation"><span>Wyze Cam Pan v4 review: Design and installation</span></h3><p>The overall design of the Wyze Cam Pan v4 is similar to the third-generation model before it, though not exactly the same. There are basically two main parts to it: a base and the camera, both of which are little cubes. These are connected by an arm on the side, which can tilt the camera up or down while the base rotates to pan the camera side to side.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="iYoEH9Y2tqMbGdt3WtGiLX" name="Wyze-Cam-Pan-v4--2" alt="Front shot of a Wyze Cam Pan v4 on a desk" src="https://cdn.mos.cms.futurecdn.net/iYoEH9Y2tqMbGdt3WtGiLX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It's not necessarily the most premium looking smart home device out there, but it's also not ugly. It's made mostly from white plastic with a black circle that houses the camera lens and a spotlight for color night vision. Attached to the base is a fixed cable that you'll plug the USB-C cable into. The fact that Wyze hasn't gone for a traditional USB-C connector could make for some durability issues down the line, but if you're careful, it should be fine, given the fact that you likely won't be messing around with the cable very often.</p><p>On the bottom of the main camera component is a button that you might use to reset the camera or set it up, along with a rubber door hiding the microSD card slot. Note, I didn’t have to use the Setup button during setup — the camera should enter a pairing mode when it’s first plugged in. But, if it doesn’t you may need to use the button.</p><p>The Wyze Cam Pan v4 is IP65-rated, meaning it can be used both indoors or outdoors. That makes it relatively versatile — and more versatile than some competitors. </p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="eEDCrRhw8eLuRFLQwC4LLX" name="Wyze-Cam-Pan-v4--6" alt="USB-C connector for a Wyze Cam Pan v4" src="https://cdn.mos.cms.futurecdn.net/eEDCrRhw8eLuRFLQwC4LLX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Setting the camera up is a relatively simple affair. You can opt to simply place the camera on a flat surface or use the included mounting hardware to mount it upside down. I didn't use the mounting hardware, instead placing it on a windowsill, so I didn't really have to do much to physically set it up. After you've positioned the camera, all you have to do is plug it in, then download the Wyze app and either create an account or log into your existing one.  Then, follow the on-screen instructions to add the camera to your account.</p><p>Once you've added the Wyze Cam Pan v4 to your account, you'll be walked through setting up things like a home position, which is where the camera will return to after it has tracked motion or you have manually moved it. You'll also get some basic instructions on how to use the camera and the app, which is always helpful. If you're impatient or you already know how to use it, you can skip this.</p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-image-and-audio-performance"><span>Wyze Cam Pan v4 review: Image and audio performance</span></h3><p>As mentioned, one of the headline changes for the Wyze Cam Pan v4 comes in the form of a 4K resolution, which is up from the 1080p resolution on the previous model. It makes a huge difference. I didn’t have the v3 model on-hand to compare with, but I’ve tested plenty of 1080p security cameras, and have two installed in my home (which I only still have because HomeKit Secure Video only supports 1080p). I could tell the difference in detail right away.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="b6pTn7b8PWjWACu7SsEeLX" name="Wyze-Cam-Pan-v4--4" alt="Overhead shot of a Wyze Cam Pan v4" src="https://cdn.mos.cms.futurecdn.net/b6pTn7b8PWjWACu7SsEeLX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>It is true that the difference between a 2K and a 4K camera is probably less noticeable than the difference between a 1080p and a 2K camera, but having that 4K resolution is still a pretty impressive improvement over a 2K one, like what's on offer by Arlo's newest model. To that end, the Wyze Cam Pan v4 was able to provide crisp, detailed footage, allowing me to easily see smaller details, and making things like faces and license plates more legible. </p><p>I do wish the camera’s lens offered a wider view though. At 105.4 degrees, it’s not able to see as much as many competitors, like Arlo’s pan/tilt camera.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="Rh4RWbPaVqpifSv5HuoBMX" name="Wyze-Cam-Pan-v4--3" alt="Close up of the camera on a Wyze Cam Pan v4" src="https://cdn.mos.cms.futurecdn.net/Rh4RWbPaVqpifSv5HuoBMX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>I also found the camera offered vibrant colors during the day. To be clear, this isn’t quite as important as the resolution, but the ability to produce bright colors helped make the image look more accurate. Could that be the difference between catching something and missing it? Probably not, but it certainly can’t hurt. </p><p>What does help is the solid dynamic range. Wyze isn’t marketing the camera as supporting HDR, but I did find that it captured decent detail in shadows and highlights. It wasn’t <em>dramatically</em> better than comparably-priced cameras in this area, but it still did well.</p><h2 id="low-light-performance">Low light performance</h2><p>Low-light footage was generally crisp, and with the built-in spotlight, the camera was able to capture color night vision. It’s not the most powerful spotlight out there though, so you might still want it to use infrared if you’re using the camera to capture larger environments.</p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/OJbZ2OYZLIQ" allowfullscreen></iframe></div></div><p>I did find the color footage to be slightly blurry and lacking in detail, especially when there were nearby objects that reflected the light back, and when the camera was moving to track motion. Once it stopped moving, it was usually able to dial in video settings enough to gain some clarity and color-accuracy though. </p><p>By default, the spotlight is scheduled to work between 9 p.m. and 6 a.m., but you can change it to work based on sunset and sunrise, including setting it to start working a set number of minutes before or after sunset and sunrise. I recommend changing the default to this so you can forget about having to change the schedule depending on the season. </p><p>I also wish it could work based on a light sensor — even if it knows when the sun sets and rises, perhaps it actually gets dark a little earlier because it’s cloudy. That’s not a huge deal though, and I found that setting it to start 59 minutes before sunset and after sunrise worked perfectly fine, even on overcast days. You’ll also need to set how long the spotlight stays on after motion stops being detected.</p><h2 id="motion-tracking">Motion tracking</h2><p>The camera did a pretty good job at tracking moving objects as they appeared in its vision, but it wasn’t the most responsive to motion. At times. It began recording quickly, but on occasion, it didn’t start recording until well after it should have. On a few occasions, I was alerted to motion from a neighborhood cat in my backyard — but the clip started with the cat right in the middle of the view of the camera. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/pE-S570Ia2Y" allowfullscreen></iframe></div></div><p>I could give the camera a pass if the cat had sprinted into view, but given the behavior of the cat in the footage, I doubt that’s what happened — and I’d guess there will have been at least five seconds of motion that <em>should</em> have triggered recording before it actually started. </p><p>On one occasion, the recorded clip <em>began</em> with the camera moving from its home position. That means that it <em>did</em> detect motion, and began tracking the cat in the backyard, but didn’t start actually recording until later. This behavior seemed related to the size of the subject in the footage — when I walked directly past the camera, it began recording immediately. </p><div class="youtube-video" data-nosnippet ><div class="video-aspect-box"><iframe data-lazy-priority="low" data-lazy-src="https://www.youtube-nocookie.com/embed/kdlLTYdx_DE" allowfullscreen></iframe></div></div><p>I do hope that <em>audio</em>-based tracking comes to cameras like this at some point. This is obviously much trickier, as the microphones built into these cameras don’t offer any kind of directionality, but with features like alerts for barking or crying, it seems like cameras should at least pan around to look for the source of that audio when they hear it.</p><h2 id="audio-quality">Audio quality</h2><p>The audio experience on the Wyze Cam Pan v4 isn’t bad. The camera picked up voices with decent clarity, however when streaming video through the app, it seemed to cut out quieter sounds (which included quieter voices), compared to after sharing a clip and playing it back offline.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="6Sa8CWxHCaoHviANz8VwLX" name="Wyze-Cam-Pan-v4--5" alt="Rear shot of a Wyze Cam Pan v4" src="https://cdn.mos.cms.futurecdn.net/6Sa8CWxHCaoHviANz8VwLX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p> It wasn’t a big deal, but it did impact two-way audio a little. While the camera cleanly played back my voice spoken into my phone, I had to ask the person in front of the camera to repeat themselves once or twice. This isn’t super uncommon, and it wasn’t a huge deal. Again, exported clips still sounded clean though.</p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-app-and-smart-home-support"><span>Wyze Cam Pan v4 review: App and smart home support</span></h3><p>As you would expect, the Wyze Cam Pan V4 works with the Wyze app, which is relatively well-designed and easy to use. From the main screen of the app you'll see a live feed of your cameras, and you can jump through tabs for favorites, all of your devices, and any automations you have set up. The app has screens to show you a list of events. Plus, there's a monitoring tab that will give you an overview of the kinds of events over the course of the day. For example, it will split events up by person, motion, and so on.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="zdsFfmtiv6tWFanfSCVeCX" name="Wyze-Cam-Pan-v4--8-screenshot" alt="Wyze Cam Pan v4 app screenshot" src="https://cdn.mos.cms.futurecdn.net/zdsFfmtiv6tWFanfSCVeCX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>If you tap on a device or a camera feed, you'll be taken to its own settings. From there, you can change the positioning of the camera manually, or access features like a siren and a pan scan, which has the camera pan around the scene. You'll also be able to access more in-depth settings like night recording settings, alarm settings, and so on. As you would expect, there are options for setting up motion zones too, which can come in handy.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:1920px;"><p class="vanilla-image-block" style="padding-top:59.79%;"><img id="7vGxm8JfQDsiRZ4gyzBdDX" name="Wyze-Cam-Pan-v4--9-screenshots" alt="Wyze Cam Pan v4 app screenshots" src="https://cdn.mos.cms.futurecdn.net/7vGxm8JfQDsiRZ4gyzBdDX.jpg" mos="" align="middle" fullscreen="" width="1920" height="1148" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>The Wyze Cam Pan V4 works with Alexa, Google Assistant, and IFTTT. It's a good selection of smart home integrations, with the notable omission being Apple Home support. That's not completely unexpected, as Apple Home only offers very basic camera support. It doesn't allow for cameras with a resolution higher than 1080p, and there are no controls in Apple Home for things like panning and tilting. So a camera like this wouldn't really work very well in the first place.</p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-video-storage"><span>Wyze Cam Pan v4 review: Video storage</span></h3><p>One of the best things about this camera in particular is that you don't have to rely on cloud storage for your footage if you don't want to. There's a MicroSD card slot built right into the camera, and you can have the camera save footage to it, then access that footage from the app down the line.</p><figure class="van-image-figure  inline-layout" data-bordeaux-image-check ><div class='image-full-width-wrapper'><div class='image-widthsetter' style="max-width:2000px;"><p class="vanilla-image-block" style="padding-top:56.25%;"><img id="b5YG5iUVBne24u7teZmJNX" name="Wyze-Cam-Pan-v4--7" alt="Wyze Cam Pan v4 on a desk" src="https://cdn.mos.cms.futurecdn.net/b5YG5iUVBne24u7teZmJNX.jpg" mos="" align="middle" fullscreen="" width="2000" height="1125" attribution="" endorsement="" class=""></p></div></div><figcaption itemprop="caption description" class=" inline-layout"><span class="credit" itemprop="copyrightHolder">(Image credit: Tom's Guide)</span></figcaption></figure><p>Of course, if you prefer cloud storage, Wyze offers a subscription service, which also gives you access to additional features. Without a subscription, you’ll still be able to use the cameras with basic features like motion detection, and local storage. </p><p>Upgrade to Wyze Cam Plus ($2.99 per month, $19.99 per year, only supports one camera), and you’ll get 14 days of video storage, rich notifications, smart object recognition (people, animals, and packages), smart audio detection (barking, crying, etc), and more. </p><p>Wyze Cam Unlimited ($9.99 per month or $99.99 per year) offers similar features but supports unlimited cameras, though it does also have facial recognition and critical alerts. The most advanced plan is Wyze Cam Unlimited Pro ($19.99 per month, $199.99 per year), which adds AI-powered descriptions and an emergency dispatch feature.</p><p>Wyze’s pricing is fairly competitive, but it offers far less video history than other brands. For example, Ring’s plans give you up to 180 days of storage, while Arlo and Google give you 30 and 60 days. </p><p>All that to say, while you might be looking at a camera like this for its ability to record locally, and thus not <em>need</em> a subscription, you might end up wanting one anyway, so you can access some of the smarter AI-powered features that work in the cloud. It does make sense that a subscription would be required for those, especially for a camera at this price point. Some cameras, like the <a href="https://www.tomsguide.com/home/home-security/aqara-camera-hub-g5-pro-review"><u>Aqara Camera Hub G5 Pro</u></a>, can process some of these smart features locally, but they generally cost more, partially due to the processing power required for local AI processing. </p><h3 class="article-body__section" id="section-wyze-cam-pan-v4-review-verdict"><span>Wyze Cam Pan v4 review: Verdict</span></h3><p>The Wyze Cam Pan v4 may not be perfect, but at this price point it’s close. With a 4K resolution, advanced object-tracking features, local storage, and more, it’s easily the <a href="https://www.tomsguide.com/best-picks/best-home-security-cameras"><u>best home security camera</u></a> for those who want a pan/tilt camera at a reasonable price — and even beats many options at far higher prices. </p><p>The only exception would be for those deep in another ecosystem. For example, the Arlo Essential Pan Tilt Indoor Camera 2K is a solid option, and while it’s not as good as the Wyze model when it comes to video quality, it’s still a decent choice for those who want to stick with Arlo. For all others, though, the Wyze Cam Pan v4 is the camera to beat.</p>
                                                            </article>
                            ]]>
                        </content:encoded>
                                                </item>
            </channel>
</rss>