Send a review request straight from the dashboard to any email — no integration required, SMS coming soon. Every send (manual or integration-driven) flows through the same activity feed; every row is drillable to a per-event detail page with full lifecycle, captured HTML, parsed UA, country flag, and originating-request linkbacks. Customer-facing reply-to is now a verified company email with onboarding capture + click-through confirmation, replacing the silent fallback to your personal Gmail. Plus: schema markup on every key page, /llms.txt for AI crawlers, /search site search, branded review-request emails, a public /contact page, the authority engine (author bylines + Person JSON-LD + /research + /press + newsletter), 10 plumber-city programmatic pages, 30-day money-back guarantee, three more inbound integrations, QuickBooks OAuth beta, and a reserved-slug guard.
- new
Send a review request to anyone, right from the dashboard. New "Send review request" button on Overview and Reviews opens a dialog — type any email, send the same template integrations use, and the email lands in the activity feed with full lifecycle (delivered/opened/clicked) tracking. SMS option visible as coming-soon. No integration required.
- new
Verified company reply-to email is now required before review-request emails can be sent. Customer replies route to the inbox you control — never to a personal Gmail. One-click verify in Customize, plus an unmissable banner on Overview and Reviews until you do.
- new
Onboarding now collects + verifies your customer reply-to email up front. New signups walk through one extra step right after the business name; the confirmation email lands in your inbox while you finish the rest of setup so review requests can fire the moment your first integration triggers.
- new
Activity feed rows are drillable. Click any page view, QR scan, link click, platform click, review, or email send to open a per-event detail page — full metadata, parsed user agent, country flag, IP fingerprint, originating review-request, and a deep-link to the email that delivered it (when applicable).
- new
Activity feed logs every review-request email — click any email row to view the exact HTML that was delivered, plus a lifecycle timeline (sent → delivered → opened → clicked → bounced). QR scans are split out from manual taps so you can finally see whether your printed materials are pulling weight.
- new
Author byline + Person JSON-LD on every blog post. Search engines and AI crawlers can now connect blog posts to their author's profile (sameAs socials, author URL), strengthening the topical authority signal Google leans on for E-E-A-T.
- new
/about/byron-wade founder profile page — full Person JSON-LD with title, organization, sameAs links, and a recap of writing/research/press appearances.
- new
/research index — a hub for original SignalRoute studies and data drops, the canonical landing spot for every long-form piece other sites cite.
- new
/press page with a citations data layer (lib/press.ts) — every place we've been quoted or written about, in one referenceable list.
- new
Newsletter signup in the marketing footer — server action, no third-party form embed, captured via the same backend as inbound webhooks.
- new
Programmatic SEO landing pages at /for/[industry]/[city] — 10 plumber-city pages live (Phoenix, Houston, Dallas, etc.) with serviceArea JSON-LD, build-time quality gate, and the data layer ready to spin up more industries.
- new
/guide/google-reviews — pillar page plus a companion blog post, common-mistakes section, intro framing, and primary-source citations. The first of a series of guides feeding the topical authority graph.
- new
30-day money-back guarantee on /pricing, plus a comparison-shopper rail with the three tiers side-by-side. Lower the trust barrier without lowering the price.
- new
Site search at /search — basic search across blog, glossary, comparisons, industries, and integrations. Reachable from the WebSite SearchAction so Google can surface it as a sitelinks search box too.
- new
/llms.txt route — a structured AI-crawler manifest so ChatGPT, Claude, Perplexity, and similar tools can find canonical content without scraping HTML.
- new
Live activity tracking on the analytics dashboard — presence count, real-time event feed, and geo distribution from anonymous click + view events.
- new
Public /contact page — clear support routing, deflection to common docs, and a personal note from the founder.
- new
Workspace settings expanded — owners can now publish phone, website, tagline, address, and business hours from /dashboard/customize. The data flows through to public review pages and emails.
- new
Branded review-request emails — every customer now sees the business's logo and brand color in the email header, and replies route back to the business's chosen reply-to address instead of ours. Tint-aware CTAs keep contrast readable on any color.
- new
HousecallPro setup is fully self-serve — webhook URL reveal, copy-to-clipboard, a self-test button, and click-by-click setup steps live in the dashboard so operators can wire it up without our help.
- new
HubSpot, WordPress, and Webflow joined the inbound-webhook list — three more tools that can fire SignalRoute review requests automatically from a form or contact event.
- new
QuickBooks Online OAuth is in beta — connect your QBO account so paid invoices automatically schedule a review request to the customer.
- new
Reserved-slug guard — names like /admin, /pricing, /login, /api, etc. can no longer be registered as a company slug. Existing companies are unaffected; only new signups + slug changes hit the deny-list.
- new
Meta Pixel + Conversions API wired with browser/server dedup. Server-side conversions recover ~30% of attribution lost to iOS 14.5+ ATT and avoid double-counting via shared event_id.
- new
Organic-funnel attribution — every signup carries a first_touch_source captured the first time the visitor lands on the site, so we can finally see which channels actually convert.
- new
Four new ad/SEO landing pages under /lp — purpose-built for paid acquisition tests with focused copy and a single CTA.
- improved
Schema-markup pass across the site for richer Google + AI results: WebSite + FAQ + SearchAction on the homepage, SoftwareApplication on every free tool page, breadcrumb JSON-LD on docs / privacy / terms.
- improved
Per-template Open Graph images on the integrations index, integration detail pages, and the learn glossary — link previews on Twitter / Slack / iMessage now show a card tailored to the page instead of a generic logo.
- improved
Sitemap now covers per-provider /integrations/* pages and 9 previously-missing static URLs, so search engines can find every public route in one fetch.
- improved
Reviews dashboard — Google and private review cards redesigned around shared row primitives. Denser, brand-stamped, and the active source-filter pill uses inverted contrast so it actually reads as the active state.
- improved
Wallet pass is now a business card, not a review-loop link — saves the business's contact info and a tap-to-review action, so customers keep the pass even after they've left a review.
- improved
Agency dashboard separates agencies from locations and adds a typed-confirm flow before deleting a client, so a misclick can't take down a customer's QR code.
- fixed
Robots.txt no longer points crawlers at the retired /r/* URL pattern. The new canonical is /<slug>; old links 301 to it.
- fixed
Public review pages now record their own page-view tracking reliably — wrapped the tracking write in after() so it runs after the response ships, instead of getting cut off mid-flight.
- fixed
Live tracking writes use the admin client (so RLS doesn't silently drop them) and the live feed API requires real auth (so clients can't request someone else's feed).
- fixed
PostHog's first-touch source register now waits for the SDK loaded callback — earlier it could fire before posthog was ready and the source got dropped.
- fixed
Several smaller fixes: API key last_used_at now updates on use, inbound-webhook counters increment atomically, the customize-page logo lost some stale image styling, and empty company-id batches are guarded so a logged event with no companies never hits the DB with an unsafe filter.
- fixed
Full-site audit cleanup — orphaned utilities removed, type safety tightened across analytics + integration paths, env-var documentation refreshed, and Person JSON-LD now omits empty sameAs arrays (cleaner schema for crawlers).
- fixed
Compact authority byline only renders the title when one is explicitly passed — fixes a pass-through that was showing 'undefined' on a couple of programmatic pages.
- removed
/r/<slug> is retired in favor of canonical /<slug>. Existing /r/<slug> URLs still work — they 301 to the new path — but every newly-generated link uses the short form. Two characters less in every QR code, one fewer hop in every email.