SiteVisit by HappyCo

Changelog

What's new in SiteVisit

We ship continuously. Below is the running log of features, integrations, and improvements that have made it to production. Subscribe via the Engagement digest to get notable updates by email.

  1. API

    Manage webhook endpoints over the API

    Webhook endpoint CRUD is now documented in the OpenAPI spec — create, list, fetch, update, and delete endpoints programmatically. The endpoints themselves shipped earlier; today we backfilled the docs and SDKs.

    The /webhook-endpoints family of endpoints is live in the v1 API and now appears in the API reference alongside properties, site visits, and action items. Five operations:

    • GET /v1/webhook-endpoints — list your endpoints
    • POST /v1/webhook-endpoints — create one (returns the signing secret once)
    • GET /v1/webhook-endpoints/{id} — fetch a single endpoint
    • PATCH /v1/webhook-endpoints/{id} — update name / URL / events / disabled
    • DELETE /v1/webhook-endpoints/{id} — remove it

    Same bearer-auth as the rest of the v1 API, idempotency keys on writes, and the standard error envelope. SDK regeneration off the spec picks up these endpoints automatically.

  2. Feature

    Manage Enterprise billing from inside the app

    Org admins can now open the Stripe portal directly from Settings → Plan to update the card, download invoices, or change seats. Team members on Enterprise no longer see the free-plan upgrade banner.

    Two pieces of the team billing experience landed together.

    Manage team billing.If you're an admin on an Enterprise workspace, the Plan section in Settings now shows a Manage team billing button. One click opens the Stripe customer portal scoped to your workspace — change the payment method, download past invoices, adjust seat count, or cancel. No more emailing us to update a card.

    No more free-plan nags for team members. Before, the "You're on the Free plan" banner would show up for anyone whose personal subscription row was free — even if their org was on a fully-paid Enterprise plan. The banner now correctly suppresses for any user with an active Enterprise membership.

  3. Feature

    Rename your team workspace with a company directory picker

    Admins can rename their Enterprise workspace from Settings → Team. Typeahead matches against a curated company directory so we can link your workspace to your company record for portfolio context.

    The team workspace name (the heading on Settings → Team) is now editable by admins. Click the pencil next to the name to open a typeahead picker.

    Type your company name or domain and the picker searches a curated directory of multifamily operators (sourced from Smart Apartment Data + our CRM). Picking a row links your workspace to that company record — which lets us show portfolio context (active properties, units, HQ state) in your dashboard down the road.

    If your team isn't in the directory yet, just type the name you want and pick the "Use this as a custom name" row — it sets the workspace name without a directory link.

  4. Improvement

    Self-serve Enterprise sign-up on the marketing site

    Enterprise tile on the pricing section now leads to sign-up (same as Pro) instead of a mailto. Custom plans still route to email via a smaller link below the tiles.

    Before, the Enterprise tile's only CTA was a Get a quote mailto. Now it routes straight to sign-up so teams can pick Enterprise themselves at checkout, consistent with the Pro tile. Volume discounts and custom plans still go through jindou@happy.co — a small link below the tiles for buyers who need something non-standard.

  5. Feature

    Org context switcher in the header

    Pin your dashboard to a specific team — or your personal-only view — with the new switcher chip. New properties default to whichever org you're currently working in.

    For users on an Enterprise team, we've added a small context chip to the app header. Tap it to pin the dashboard to a specific team, view your solo-only properties, or flip back to All teams (the default — everything you have access to).

    The active context filters every list and detail view — properties, visits, action items — and any new property you create defaults into whichever org you're currently working in. Solo users won't see the chip unless and until they accept their first team invitation.

  6. Plan

    Enterprise plan now available

    SiteVisit Enterprise: $499/month for the first 5 seats + $79/seat after. Multi-user workspace with role-based access, bring-your-own AI keys, and white-glove onboarding.

    We've added a third tier for property management teams. Enterprise is $499/month for the first 5 seats and $79/seat/month for each additional seat. Annual saves roughly 16% (two months free).

    Enterprise includes everything in Pro, plus:

    • Multi-user workspace — properties and site visits are shared across the team
    • Role-based access — admin, manager, and member roles. Multiple admins per organization
    • Bring your own AI API keys — point Joy at your own Anthropic and OpenAI accounts. Caps your AI spend with the providers you already trust
    • White-glove onboarding— we'll migrate your existing reports and walk your team through setup
    • Priority SLA support

    To get a quote or talk through how it fits your team, email jindou@happy.co.

  7. Integrations

    Joy can hand off vendor work to VendorBids

    When your report has work that looks like vendor jobs, Joy now offers to package it up and get 3 competitive bids — no charge unless you award the work.

    On the report page, if Joy spots action items that look like external-vendor work (HVAC, roofing, parking lot, flooring, etc.) she now offers to share them with VendorBids— HappyCo's AI procurement product. Click Yes, share with VendorBids, and someone reaches out within one business day to confirm scope. You get up to 3 bids in 7 days, and you pay nothing unless you award the work.

    Joy classifies each item before showing the offer — the card only appears when there's genuinely vendor-able work in the report. Internal handyman tasks (lightbulbs, drywall patches, minor paint touch-ups) don't trigger it.

    You can decline the offer per visit; it stays dismissed for that report and won't re-appear.

    When you accept, you'll get a confirmation email summarising the items shared, and the procurement team gets a parallel email + Slack notification so they can reach out fast.

  8. Improvement

    Save SiteVisit to your home screen

    Install sitevisit.app as an app icon on iPhone or Android — Quick Capture launches full-screen without browser chrome.

    Open sitevisit.app on your phone, hit Share (or the browser menu), tap “Add to Home Screen” and confirm. A SiteVisit tile lands on your home screen.

    Tapping the tile launches the app full-screen — no Safari URL bar, no tabs — so the Quick Capture flow feels native when you're mid-walkthrough on a property. Status bar paints in the SiteVisit navy.

    No App Store, no install dance, no separate codebase. Same sitevisit.app on web; same sitevisit.app on your home screen.

  9. Feature

    Ask Joy — chat with us on the marketing site

    Joy now answers questions in real time. Click the Ask Joy button on sitevisit.app and ask anything — pricing, features, how to get started, integration questions.

    The bottom-right Joy mascot has graduated from a curated FAQ into a real conversation. Click Ask Joy on the marketing site, type a question, and she streams an answer back grounded in our docs, changelog, and in-app help.

    Every answer she gives cites the source it came from — a docs page, an in-app help topic, or a changelog entry — so you can verify what she said. If she's not sure about something, she won't guess; she'll connect you with the founder directly at jindou+sv@happy.co.

    Built on Claude Haiku 4.5 with retrieval over our public docs + changelog + in-app help. Coming next: in-app chat for logged-in users with account-aware tools (“I see you're on Pro — here's how to…”).

  10. Feature

    Better cancellation flow

    Cancel from Settings → Plan instead of bouncing through Stripe's portal — tell us why, and grab 50% off for 3 months if you change your mind.

    When you click Cancel subscriptionon Settings → Plan, you now move through a short in-app flow instead of being handed off to Stripe's billing portal: pick the reason (price, missing feature, switched tools, workflow changed, something broke, something else), add optional context, and continue.

    Before we finalize, we offer a one-time retention discount — 50% off for 3 months — that you have to opt in to. If you take it, your subscription stays active and your card gets billed the discounted amount on the next renewal. If you decline, we schedule the cancellation for the end of your current paid period — your data, properties, videos, action items, and reports all stay put.

    The reason you share goes straight to the founder. Replies to the cancellation email land in a human inbox, not a help desk.

  11. Improvement

    Smarter dunning emails when your card declines

    We now send a different email for each retry attempt — gentler on the first, stats-driven on the second, final-warning on the third — instead of pinging you with the same message every time.

    When a Stripe renewal payment fails, Stripe quietly retries your card 3–4 times across about two weeks. Until now we sent the same "your card was declined" email on the first retry and went silent on the rest.

    Each retry now gets a distinct email so the urgency layers in: a friendly fix-it nudge on the first failure, a stats-flavoured reminder on the second ("you've sent X reports across Y properties — here's what you'll lose access to if Pro lapses"), and a clear final warning when Stripe's last retry is about to fire.

    As before: your data stays put if your subscription lapses, your account just returns to free-tier caps (1 property, 5 visits) until you reactivate.

  12. Plan

    Card-declined dunning + past-due grace period

    If your renewal payment fails, we'll email you with a one-click "Update card" link and keep your Pro access alive while Stripe retries.

    When a Stripe renewal charge is declined, you now get a friendly email explaining what happened and pointing you at your billing portal — instead of finding out only when you next try to use a Pro feature and hit a paywall.

    We also keep your Pro access active during the retry window(roughly two weeks) so a transient bank decline doesn't immediately strip your features. A bright red banner appears in the app prompting you to update your payment method, but everything still works.

    If Stripe runs out of retries and the subscription ends, you get one more email with a one-click reactivate link. Your data stays put either way.

  13. API

    Test mode API keys

    Develop against a parallel sandbox dataset without touching production.

    Issue sv_test_* keys from Settings → Developers (Mode radio above the Generate button). Test-mode calls operate on a completely separate dataset — properties, site visits, action items you create with a test key never appear under a live key, and vice versa.

    Test mode is free and unmetered. Test resources don't count against your free-plan property or visit limits, so developers on any tier can build end-to-end without paying.

    Webhook endpoints can also be created in test mode — those only receive events from sv_test_* traffic. Payloads include livemode: false so receivers can branch without parsing the resource.

  14. Integrations

    One-click MCP connect via OAuth

    Claude Desktop, Cursor, and other MCP clients can now connect to SiteVisit through a standard OAuth flow.

    The SiteVisit MCP server at sitevisit.app/api/mcpnow speaks the full OAuth 2.1 + Dynamic Client Registration dance required by the MCP spec (2025-06-18). Add the URL to any OAuth-aware MCP client and you'll see a consent screen instead of a config file with a pasted-in key.

    Connected apps are managed from Settings → Developers → Connected applications, with a one-click Disconnect that revokes every token for that client.

    API keys (sv_live_* / sv_test_*) still work for the MCP endpoint too — pick whichever path suits the client.

  15. Feature

    Joy AI in action: now with cross-device settings

    Your follow-up cadence preference now follows you across browsers and devices.

    Settings → Automated follow-ups ("Suggest a follow-up after") was a per-device preference until today. It's now stored on your account — picking "after 5 days" on your laptop will apply when you open the report on your iPad too.

  16. Plan

    Pro plan is live

    Subscribe to Pro from /settings#upgrade for unlimited properties, visits, the engagement digest, and Joy's automated follow-ups.

    $99/month or $990/year. Cancel anytime from the billing portal. Free-plan accounts keep 1 property + 5 visits with no card on file.

  17. Integrations

    Outbound webhooks

    Subscribe to 18 lifecycle events with HMAC-signed, retried delivery.

    Property, site visit, action item, and evidence events fan out to your endpoints with Stripe-style HMAC-SHA256 signing and exponential-backoff retry. Manage endpoints + browse delivery history at Settings → Developers → Webhooks.

    Docs at docs.sitevisit.app.

  18. API

    Public REST API & MCP server

    Full CRUD across properties, site visits, and action items via REST and an MCP server.

    Bearer-auth API at sitevisit.app/api/v1/* with Idempotency-Key support, cursor pagination, and a structured error envelope. Same surface available as an MCP server for AI agents — 17 tools mirroring the REST endpoints.

    Issue a key at Settings → Developers; reference docs at docs.sitevisit.app.

  19. Milestone

    SiteVisit goes live

    sitevisit.app is in production.

    After a long Phase 10 of integration work, the SiteVisit production environment is live. Sign up free at sitevisit.app — one property and five site visits, no card required.

Building on SiteVisit? Reference docs live at docs.sitevisit.app ↗.