OUR TOP PICK
Best Smart Speaker 2025
Amazon Echo (4th Gen)
The best smart-speaker for most people
Premium 360° sound with Dolby processing
Built-in Zigbee smart home hub
Temperature sensor included
Works with 140,000+ smart devices
$129.99
\n
Top Picks at a Glance

Amazon Echo (4th Gen)
$129.99
Save 23%
- Premium 360° sound with Dolby processing
- Built-in Zigbee smart home hub
- Temperature sensor included
- Works with 140,000+ smart devices
Google Nest Audio
$119.99
Save 17%
- Premium sound with 75mm woofer
- Ambient IQ adapts to room noise
- Voice Match for personalized results
- Multi-room audio support
Apple HomePod mini
- Computational audio for 360° sound
- Siri voice assistant built-in
- Intercom feature across devices
- Thread smart home protocol support
\n\n
undefined
' +
'
Join 10,000+ smart home enthusiasts. Get weekly tips, exclusive deals, and our complete beginner\'s guide!
' +
'
'
' +
'
' +
'
' +
'
' +
'
' +
'
' +
'
'
' +
'
You\'re In!
' +
'
Check your inbox for your free Smart Home Starter Guide.
' +
'
' +
'
No spam, ever. Unsubscribe anytime. By subscribing, you agree to our Privacy Policy.
' +
'
' +
'
' +
'
';
var div = document.createElement('div');
div.innerHTML = popupHTML;
document.body.appendChild(div.firstChild);
}
// Create popup CSS
function createStyles() {
var css = '.haven-popup-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:rgba(15,23,42,0.8);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);z-index:99999;opacity:0;visibility:hidden;transition:all .4s cubic-bezier(0.4,0,0.2,1);display:flex;align-items:center;justify-content:center;padding:20px}.haven-popup-overlay.active{opacity:1;visibility:visible}.haven-popup{background:linear-gradient(135deg,#fff 0%,#F8FAFC 100%);border-radius:24px;max-width:520px;width:100%;position:relative;box-shadow:0 25px 50px -12px rgba(0,0,0,0.25);transform:scale(0.9) translateY(20px);transition:all .4s cubic-bezier(0.4,0,0.2,1);overflow:hidden}.haven-popup-overlay.active .haven-popup{transform:scale(1) translateY(0)}.haven-popup::before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,#3B82F6,#14B8A6,#3B82F6);background-size:200% 100%;animation:haven-gradient 3s ease infinite}@keyframes haven-gradient{0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}}.haven-popup-close{position:absolute;top:16px;right:16px;width:36px;height:36px;border-radius:50%;background:#F1F5F9;border:none;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s;z-index:10}.haven-popup-close:hover{background:#E2E8F0;transform:rotate(90deg)}.haven-popup-close svg{width:18px;height:18px;color:#64748B}.haven-popup-content{padding:48px 40px 40px;text-align:center}.haven-popup-icon{width:72px;height:72px;background:linear-gradient(135deg,#3B82F6 0%,#14B8A6 100%);border-radius:20px;display:flex;align-items:center;justify-content:center;margin:0 auto 24px;box-shadow:0 10px 30px -10px rgba(59,130,246,0.5);animation:haven-float 3s ease-in-out infinite}@keyframes haven-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-8px)}}.haven-popup-icon svg{width:36px;height:36px;color:#fff}.haven-popup-title{font-size:1.75rem;font-weight:800;color:#0F172A;margin:0 0 12px;line-height:1.2}.haven-popup-title span{background:linear-gradient(135deg,#3B82F6 0%,#14B8A6 100%);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.haven-popup-subtitle{font-size:1rem;color:#64748B;margin:0 0 28px;line-height:1.6}.haven-popup-benefits{display:flex;justify-content:center;gap:24px;margin-bottom:28px;flex-wrap:wrap}.haven-popup-benefit{display:flex;align-items:center;gap:8px;font-size:.875rem;color:#475569}.haven-popup-benefit svg{width:18px;height:18px;color:#10B981;flex-shrink:0}.haven-popup-form{display:flex;flex-direction:column;gap:12px}.haven-popup-input-group{display:flex;gap:12px}.haven-popup-input{flex:1;padding:16px 20px;border:2px solid #E2E8F0;border-radius:12px;font-size:1rem;color:#1E293B;background:#fff;transition:all .2s;outline:none;font-family:inherit}.haven-popup-input:focus{border-color:#3B82F6;box-shadow:0 0 0 4px rgba(59,130,246,0.1)}.haven-popup-input::placeholder{color:#94A3B8}.haven-popup-submit{padding:16px 32px;background:linear-gradient(135deg,#3B82F6 0%,#2563EB 100%);color:#fff;border:none;border-radius:12px;font-size:1rem;font-weight:600;cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center;gap:10px;box-shadow:0 4px 15px rgba(59,130,246,0.3);font-family:inherit}.haven-popup-submit:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(59,130,246,0.4)}.haven-popup-submit:disabled{opacity:.7;cursor:not-allowed;transform:none}.haven-popup-submit svg{width:20px;height:20px}.haven-popup-spinner{width:20px;height:20px;border:2px solid rgba(255,255,255,0.3);border-top-color:#fff;border-radius:50%;animation:haven-spin .8s linear infinite;display:none}@keyframes haven-spin{to{transform:rotate(360deg)}}.haven-popup-privacy{font-size:.75rem;color:#94A3B8;margin-top:16px;line-height:1.5}.haven-popup-privacy a{color:#3B82F6;text-decoration:none}.haven-popup-success{display:none;text-align:center;padding:20px 0}.haven-popup-success.show{display:block}.haven-popup-success-icon{width:80px;height:80px;background:linear-gradient(135deg,#10B981 0%,#059669 100%);border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0 auto 24px;animation:haven-pop .5s cubic-bezier(0.4,0,0.2,1)}@keyframes haven-pop{0%{transform:scale(0)}50%{transform:scale(1.1)}100%{transform:scale(1)}}.haven-popup-success-icon svg{width:40px;height:40px;color:#fff}.haven-popup-success h3{font-size:1.5rem;font-weight:700;color:#0F172A;margin:0 0 12px}.haven-popup-success p{font-size:1rem;color:#64748B;margin:0}.haven-popup-form.hidden,.haven-popup-benefits.hidden,.haven-popup-privacy.hidden{display:none}.haven-popup-error{background:#FEF2F2;border:1px solid #FECACA;color:#DC2626;padding:12px 16px;border-radius:8px;font-size:.875rem;margin-bottom:12px;display:none}.haven-popup-error.show{display:block}@media(max-width:540px){.haven-popup-content{padding:40px 24px 32px}.haven-popup-title{font-size:1.5rem}.haven-popup-input-group{flex-direction:column}.haven-popup-benefits{flex-direction:column;gap:12px;align-items:center}}';
var style = document.createElement('style');
style.textContent = css;
document.head.appendChild(style);
}
// Show popup
function showPopup() {
if (popupShown || popupClosed) return;
popupShown = true;
document.getElementById('havenPopup').classList.add('active');
document.body.style.overflow = 'hidden';
}
// Close popup
function closePopup() {
popupClosed = true;
var popup = document.getElementById('havenPopup');
if (popup) {
popup.classList.remove('active');
}
document.body.style.overflow = '';
setCookie('haven_popup_closed', 'true', CONFIG.cookieDays);
}
// Initialize popup
function init() {
createStyles();
createPopup();
// Event listeners
document.getElementById('havenPopupClose').addEventListener('click', closePopup);
document.getElementById('havenPopup').addEventListener('click', function(e) {
if (e.target === this) closePopup();
});
document.addEventListener('keydown', function(e) {
if (e.key === 'Escape') closePopup();
});
// Form submission
document.getElementById('havenPopupForm').addEventListener('submit', function(e) {
e.preventDefault();
var firstName = document.getElementById('popupFirstName').value.trim();
var email = document.getElementById('popupEmail').value.trim();
var btn = document.getElementById('popupSubmitBtn');
var btnText = document.getElementById('popupBtnText');
var btnArrow = document.getElementById('popupBtnArrow');
var spinner = document.getElementById('popupSpinner');
var errorDiv = document.getElementById('popupError');
// Validate
if (!firstName || !email) {
errorDiv.textContent = 'Please fill in all fields.';
errorDiv.classList.add('show');
return;
}
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
errorDiv.textContent = 'Please enter a valid email.';
errorDiv.classList.add('show');
return;
}
// Show loading
btn.disabled = true;
btnText.textContent = 'Subscribing...';
btnArrow.style.display = 'none';
spinner.style.display = 'block';
errorDiv.classList.remove('show');
// Submit to Systeme.io
var xhr = new XMLHttpRequest();
xhr.open('POST', 'https://api.systeme.io/api/contacts', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.setRequestHeader('X-API-Key', CONFIG.systemeApiKey);
xhr.onload = function() {
showSuccess();
};
xhr.onerror = function() {
// Still show success (CORS might block response but request goes through)
showSuccess();
};
xhr.send(JSON.stringify({
email: email,
fields: [{ slug: 'first_name', value: firstName }],
tags: [CONFIG.systemeTagId]
}));
function showSuccess() {
document.getElementById('havenPopupForm').classList.add('hidden');
document.getElementById('popupBenefits').classList.add('hidden');
document.getElementById('popupPrivacy').classList.add('hidden');
document.getElementById('popupSuccess').classList.add('show');
setCookie('haven_subscribed', 'true', 365);
setTimeout(closePopup, 3000);
}
});
// Triggers
setTimeout(showPopup, CONFIG.delay);
var scrollTriggered = false;
window.addEventListener('scroll', function() {
if (scrollTriggered || popupShown || popupClosed) return;
var pct = (window.scrollY / (document.documentElement.scrollHeight - window.innerHeight)) * 100;
if (pct >= CONFIG.scrollPercent) {
scrollTriggered = true;
showPopup();
}
});
document.addEventListener('mouseout', function(e) {
if (popupShown || popupClosed) return;
if (e.clientY < 10 && !e.relatedTarget) {
showPopup();
}
});
}
// Wait for DOM
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
})();
