!function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '1660224278471268'); fbq('track', 'PageView'); DogAlert Your Personal Walkability Monitor.
Always a perfectly timed walk with our interactive weather and safety alerts. Know before you go and walk with confidence.
Sign up for only $2.95 per month!
Live Weather Alerts Know before you go! We monitor the weather so you can anticipate your walk. Get notified when rain, thunder or storms make it unsafe.
Air Quality & Toxicity Get warned when air quality drops or harmful toxins rise, so you can avoid hidden risks and protect your dog’s health on every walk.
Instant Stress Relief No second guessing. No last minute surprises. Peace of mind before every walk. Confidence for you. Comfort and safety for your dog.
Tips, Tricks & Treats Seasonal tips, smart tricks and small surprises to keep every walk safe, fun and a tail wagging experience. Whatever the weather brings!
Walk Smarter Weather affects dogs differently than humans. Dogs cannot regulate temperature like we do and hazards such as hot pavement or sudden wind chill often go unnoticed until it is too late.
Heat, cold, wind and rain can turn a normal walk risky faster than most owners expect. Let us monitor it for you so you don't have to.
Stay in the know for only $2.95 per month with our instant SMS notification service.
No commitment, cancel at any time.
How It Works We continuously monitor local conditions and evaluate how they may affect your dog’s comfort and safety throughout the day.
.
Automated Alerts Protect yourself against sudden changes with our instant notification service. We'll inform you upfront with clear practical guidance so you can adjust walks, routes, or timing.
.
No Setup Required There’s nothing to install or configure. Just enter your ZIP code and your dog’s name and DogAlert starts monitoring right away. You stay informed without having to check forecasts, apps, or dashboards.
Contact Us Questions or curious how we operate? Leave a message and we'll personally get in touch.
Obsolete Thanks for giving us a try. We'll send out your profile scan within minutes and monitor your business at no cost for the upcoming month.
Thanks! Thanks again for reaching out. We'll try to respond as soon as possible. You may always expect a personal message from us.
Start Trial DogAlert is free for the first month. Always a perfectly timed walk with our personalized weather and safety alerts.
✓ Automatic monitoring ✓ SMS before danger ✓ Cancel anytime $2.95 p/m
Your Story .
.
By afternoon, temperatures rise. Pavement heats up. Paws notice. You’d notice too. Evening falls, skies darken. Rain rolls through the streets. Good thing you timed it right.
.
(function() { function ready(fn){ if(document.readyState !== "loading"){ fn(); } else { document.addEventListener("DOMContentLoaded", fn); } } ready(() => { const introEl = document.getElementById("storyIntro"); const weatherEl = document.getElementById("storyWeather"); const valueEl = document.getElementById("storyValue"); const btn = document.getElementById("storyBtn"); if(!introEl || !weatherEl || !valueEl) return; const raw = sessionStorage.getItem("dogalert_story"); if(!raw){ introEl.innerHTML = "Your story could not be loaded."; weatherEl.innerHTML = ""; valueEl.innerHTML = ""; return; } let s; try { s = JSON.parse(raw); } catch { introEl.innerHTML = "Your story could not be loaded."; weatherEl.innerHTML = ""; valueEl.innerHTML = ""; return; } /* =========================== NEW STORY RENDERING (V1) =========================== */ /* INTRO */ introEl.innerHTML = `A regular day in ${s.location}.`; /* WEATHER (now narrative block) */ weatherEl.innerHTML = `A cool morning breeze with sudden gusts. ${s.dog_name} might not mind, but would you?`; /* VALUE (brand close) */ valueEl.innerHTML = `DogAlert's Walkability Monitor.`; /* BUTTON REDIRECT (UNCHANGED) */ if(btn){ btn.addEventListener("click", function(e){ e.preventDefault(); /* ---- META LEAD EVENT ---- */ if (typeof fbq !== "undefined") { fbq('track', 'InitiateCheckout'); } /* ---- FUNNEL: trial_click (non-blocking) ---- */ const funnelId = sessionStorage.getItem("funnel_id"); if (funnelId) { fetch("https://weather-api-tau-swart.vercel.app/api/funnel-event", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ event_type: "trial_click", id: funnelId }) }).catch(() => {}); } const encodedStory = encodeURIComponent(JSON.stringify(s)); window.location.href = "/#fb3?s=" + encodedStory; }); } }); })();
Free Trial, Cancel At Any Time.
Try It Out! Your Personal Walkability Monitor. Know before you go with our instant SMS alerts. Never second guess a walk again!
(() => { function ready(fn){ if(document.readyState !== "loading"){ fn(); } else { document.addEventListener("DOMContentLoaded", fn); } } ready(() => { /* ---- ENTRY POINT CAPTURE ---- */ const params = new URLSearchParams(window.location.search); const entryParam = params.get("entry"); sessionStorage.setItem( "entry_point", entryParam ? entryParam : "unknown" ); /* ---- END ENTRY CAPTURE ---- */ const setMsg = t => { const m = document.getElementById("msg"); if(m) m.textContent = t || ""; }; const btnPreview = document.getElementById("btnPreview"); btnPreview.addEventListener("click", async () => { setMsg(""); const zip = document.getElementById("postcode").value.trim(); const dog = document.getElementById("dogName").value.trim(); if(!zip || !dog){ setMsg("Please enter ZIP code and your dog's name."); return; } setMsg("Creating your story..."); try { const r = await fetch( "https://weather-api-tau-swart.vercel.app/api/weather-preview", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ zip, dog_name: dog }) } ); const data = await r.json(); if(!r.ok) throw new Error(data.error || "Failed"); /* ---- GENERATE FUNNEL ID (NEW) ---- */ const generatedId = crypto.randomUUID(); sessionStorage.setItem("funnel_id", generatedId); /* ---- END NEW ---- */ const storyPayload = { dog_name: data.dog_name, zip: data.zip, city: data.location, location: data.location }; /* ---- FUNNEL: story_click (awaited but now fast) ---- */ fetch( "https://weather-api-tau-swart.vercel.app/api/funnel-event", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ id: generatedId, event_type: "story_click", zip: data.zip, dog_name: data.dog_name, entry_point: sessionStorage.getItem("entry_point") }) } ); sessionStorage.setItem( "dogalert_story", JSON.stringify(storyPayload) ); window.location.href = "/#fb2"; } catch(e){ setMsg(e.message); } }); }); })(); Free Trial, Cancel At Any Time.
Obsolete We’ll check the local weather and highlight any upcoming conditions that could impact your dog’s comfort and safety.
Show My Weather
✓ Free trial ✓ Cancel anytime
(() => { function ready(fn){ if(document.readyState !== "loading"){ fn(); } else { document.addEventListener("DOMContentLoaded", fn); } } ready(() => { let previewData = null; const setMsg = t => { const m = document.getElementById("msg"); if(m) m.textContent = t || ""; }; function sevEmoji(sev){ if(sev === "alert") return "🔴"; if(sev === "watch") return "🟡"; return "🟢"; } const btnPreview = document.getElementById("btnPreview"); const btnSubscribe = document.getElementById("btnSubscribe"); if(!btnPreview || !btnSubscribe){ console.error("Buttons not found"); return; } btnPreview.addEventListener("click", async () => { setMsg(""); previewData = null; const zip = document.getElementById("postcode").value.trim(); const dog = document.getElementById("dogName").value.trim(); if(!zip || !dog){ setMsg("Please enter ZIP code and your dog's name."); return; } setMsg("Checking local weather..."); try{ const r = await fetch("https://weather-api-tau-swart.vercel.app/api/weather-preview",{ method:"POST", headers:{ "Content-Type":"application/json" }, body:JSON.stringify({ zip, dog_name: dog }) }); const data = await r.json(); if(!r.ok) throw new Error(data.error || "Preview failed"); previewData = { ...data, zip }; document.getElementById("previewTitle").textContent = "" + data.dog_name + "'s Protection Forecast"; document.getElementById("previewLocation").textContent = data.location + " · " + data.temperature_f + "°F · " + data.current_weather; document.getElementById("line3h").innerHTML = "Today \n" + data.next3h.temperature_f + "°F – " + data.next3h.description + "\n" + data.next3h.remark; document.getElementById("lineTonight").innerHTML = "Tomorrow \n" + data.tonight.temperature_f + "°F – " + data.tonight.description + "\n" + data.tonight.remark; document.getElementById("linePark").textContent = "Nearby Walk Spot\n" + data.nearby_park + "\n" + "Looks perfect today\n\n" + "Enable SMS for Live monitoring."; btnSubscribe.textContent = "Activate Protection for " + data.dog_name; document.getElementById("inputBlock").style.display="none"; document.getElementById("previewBox").style.display="block"; setMsg(""); }catch(e){ setMsg(e.message); } }); btnSubscribe.addEventListener("click", async () => { if(!previewData) return; setMsg("Redirecting to secure checkout..."); try{ const r = await fetch("https://weather-api-tau-swart.vercel.app/api/create-checkout-session",{ method:"POST", headers:{ "Content-Type":"application/json" }, body:JSON.stringify({ dog_name: previewData.dog_name, zip: previewData.zip, city: previewData.location }) }); const data = await r.json(); if(!r.ok) throw new Error(data.error || "Checkout failed"); window.location.href = data.url; }catch(e){ setMsg(e.message); } }); }); })(); Free Trial, Cancel At Any Time.
Verified! Your phone number has been verified. We will start live monitoring your area and notify you when weather is about to change.
.
Automated Alerts Our automated SMS alerts are designed to be triggered when conditions become unsafe or uncomfortable for your dog to be outside.
We may occasionally include a helpful tip or seasonal treat, but rest assured; we only message when it truly matters.
Subscribed! Thank you. Please finish the verification process by validating your phone number. Verify Your Phone Number.
(function () { const API = "https://dogalert-verify.vercel.app"; const subscriptionId = new URLSearchParams(window.location.search).get("subscription_id"); const sendBtn = document.getElementById("ma_send"); const checkBtn = document.getElementById("ma_check"); const codeBlock = document.getElementById("ma_code_block"); const msgEl = document.getElementById("ma_msg"); function msg(t) { msgEl.textContent = t; } if (!subscriptionId) { msg("Missing subscription reference. Please return from Stripe."); sendBtn.disabled = true; return; } sendBtn.onclick = async () => { const phone = document.getElementById("ma_phone").value.trim(); if (!phone) { msg("Enter your phone number."); return; } sendBtn.disabled = true; msg("Sending code..."); const r = await fetch(API + "/api/verify/start", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ phone, subscription_id: subscriptionId }) }); const d = await r.json().catch(() => ({})); if (!r.ok) { msg(d.error || "Could not send code."); sendBtn.disabled = false; return; } msg("Code sent. Please enter the code."); codeBlock.style.display = "block"; }; checkBtn.onclick = async () => { const phone = document.getElementById("ma_phone").value.trim(); const code = document.getElementById("ma_code").value.trim(); if (!code) { msg("Enter the code."); return; } checkBtn.disabled = true; msg("Verifying..."); const r = await fetch(API + "/api/verify/check", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ phone, code, subscription_id: subscriptionId }) }); const d = await r.json().catch(() => ({})); if (!r.ok) { msg(d.error || "Verification failed."); checkBtn.disabled = false; return; } if (d.approved) { msg("Verified. Welcome to DogAlert."); sendBtn.style.display = "none"; checkBtn.style.display = "none"; /* Redirect after successful verification */ setTimeout(() => { window.location.href = "https://dogalert.me/#verified"; }, 1000); } else { msg("Wrong code. Try again."); checkBtn.disabled = false; } }; })(); Free Trial, Cancel At Any Time.
Loading...