ServiceRunner
HomeFeaturesHelpTradesPricingContactLog InJoin the waitlistBook a demo
home
Home
auto_awesome
Features
help_outline
Help and FAQs
handyman
Trades
sell
Pricing
mail
Contact

login
Log In
person_add
Join the waitlist
event
Book a demo

Cookie Policy

Last updated: September 24, 2026

ServiceRunner uses browser storage to provide the features you request, and optional storage and diagnostics only with your permission. This page describes their purposes, lifetimes and controls. We do not use advertising trackers.

TermsPrivacyDPAAcceptable UseCookiesSubprocessorsEULA
On this page
1. Overview2. Categories3. Storage We Set4. Third-Party Content5. Banner & Your Choices6. Changes & Contact

1. Overview

"Cookies" in this policy means any technology that stores information on your device: HTTP cookies, localStorage, sessionStorage, IndexedDB, the Origin Private File System used by our offline database, service-worker caches, and the native preference store used by the iOS and Android apps. Isles Mechanical LLC sets these only for the purposes below.

The application does not set first-party HTTP cookies. Authentication uses a bearer token held in localStorage and sent in the Authorization header; there is no session cookie, no CSRF cookie and no rate-limit cookie (rate limits are keyed by IP address on the server). No advertising, analytics or social-media cookies are loaded. Map tiles are fetched from a third-party tile server, which may see your IP address when tiles load; it does not set cookies on our origin.

2. Categories

  • Strictly necessary. Required for the Service to work: sign-in, remembering your organization, working offline, storing your consent choice. You asked for the Service, so these are covered by that request and cannot be switched off; blocking them signs you out.
  • Functional. Convenience preferences that are not essential, such as remembering that you dismissed a prompt today. Off by default; switching them off means the prompt may reappear.
  • Optional diagnostics. Browser error reports through Sentry, only when configured and only after you opt in. The stored consent field is named analytics; it currently authorizes error diagnostics only. It does not authorize advertising, page-view analytics, performance tracing or session replay. New purposes require a new choice.
  • Advertising. Not used and not planned.

3. Storage We Set

3.1 localStorage (web app and mobile web view)

KeyPurposeLifetimeCategory
sr_auth_tokenYour sign-in session token. Sent with each API request.Until sign-out or session expiryStrictly necessary
sr_current_orgWhich organization you last worked in, so the app opens there.Until sign-outStrictly necessary
sr_dark_modeYour light/dark theme choice.PersistentStrictly necessary (display preference)
sr_offline_sitesWhich sites you chose to keep available offline.PersistentStrictly necessary
sr_storage_persist_askedRecords that we already asked the browser for persistent storage, so we do not ask again.PersistentStrictly necessary
sr_site_accessCache of your site permissions for offline use.Until sign-outStrictly necessary
sr_push_tokenThe push-notification registration token last sent to our server, to avoid re-registering.Until sign-outStrictly necessary
sr_notif_prefs_<siteId>Per-site notification preferences you set.PersistentStrictly necessary (user setting)
servicerunner_device_idA random identifier for this browser or device, used to attribute time entries created offline and resolve sync conflicts. Not shared with third parties.PersistentStrictly necessary
sr_proximity_suppressRemembers that you dismissed the "you are near a site" prompt today.1 dayFunctional
fc.dashboard.seen, fc.setup.dismissed.<orgId>, fc.setup.doneShown.<orgId>Remember dashboard and setup-checklist views or dismissals on this device. Not sent to a tracking service.Until consent expires, is withdrawn, or site data is clearedFunctional
fc.nav.used.<orgId>, fc.nav.moreToolsRemember which advanced tools you have opened, so they stay in the menu, and whether "More tools" is open. Not sent to a tracking service.Until consent expires, is withdrawn, or site data is clearedFunctional
sr_cookie_consentYour cookie choices: { necessary, functional, analytics, ts, version }.12 monthsStrictly necessary
sr_invoice_draft:v1:<userId>:<orgId>:<context>An invoice form you explicitly save on this device, including customer/site labels, line items, notes and terms. It is not an issued invoice.Until you discard it or it is removed after a confirmed save; browser storage clearing also removes itStrictly necessary (requested draft recovery)
sr_invoice_intent:<userId>:<orgId>:<action>Pending invoice change and idempotency information, so an uncertain request can be retried without duplicating it.Until the request is confirmed or definitively rejected, or browser storage is clearedStrictly necessary

3.2 sessionStorage

KeyPurposeLifetimeCategory
sr_tax_review_dismissedRemember a dismissed tax-review reminder.Browser tab, sign-out or withdrawal of functional consentFunctional
Reload guards (chunk-retry timestamps)Prevents an endless reload loop when a new app version is deployed while you have it open.Browser tabStrictly necessary
sr_qbo_authorizationQuickBooks connection callback check: organization and user identifiers, hashed session/state fingerprints and creation time. It does not store the Intuit authorization code or OAuth tokens.Removed when the callback is consumed; expires for validation after 10 minutes or when the tab closesStrictly necessary

3.3 IndexedDB and offline database

DatabasePurposeLifetimeCategory
servicerunner-photo-blobsPhotos you captured while offline, queued for upload.Until uploaded or sign-outStrictly necessary
Offline sync database (one SQLite file per organization, in the browser's origin storage)Local copy of the sites, tasks, equipment and records you have access to, so the app works without a connection.Until sign-out or "clear offline data"Strictly necessary

3.4 Service-worker caches (installed web app)

CachePurposeLifetimeCategory
Precache (app shell)The application's own code and assets.Until the next version is installedStrictly necessary
navigation-cache, app-shell-fallbackLets the app open offline.RollingStrictly necessary
google-fontsCached web fonts.Up to 1 yearStrictly necessary
photo-cache, plan-image-cache, plan-thumb-cacheRecently viewed photos and plan images for offline viewing.Rolling, size-limited; cleared on sign-outStrictly necessary

3.5 Native apps (iOS and Android)

Store / keyPurposeLifetimeCategory
App preferences: sr_bg_location_queueLocation points recorded in the background while clocked in, waiting to be sent to your organization.Until syncedStrictly necessary (only when location tracking is enabled)
Web-view storageThe same keys as in 3.1 to 3.4.As aboveAs above
Push token (Firebase Cloud Messaging)Issued by the platform so notifications can reach the device.Until app removal or token refreshStrictly necessary (only if you allow notifications)

4. Third-Party Content

Where Sentry is configured, accepting optional diagnostics allows browser error messages, stack traces, app version and technical context to be sent to the configured Sentry endpoint. We remove user identity fields, request headers, cookies and sensitive URL parameters from these reports. The receiving endpoint sees your IP address as part of the network request. Error reports are not collected or buffered before consent. Session recording, automatic session tracking and performance tracing are disabled. The retention and hosting region depend on the configured diagnostics service; contact us for the settings for your deployment. Essential server security and operational logs are separate from this browser preference.

Pages that show a map load base-map tiles from the configured map tile provider. The source default is OpenStreetMap Foundation tile servers; deployments can configure a keyed provider such as CARTO. The web app bundles its fonts; it does not request Google Fonts on first visit. Our subscription checkout and billing management open Stripe-hosted pages. Customer invoice and recurring-agreement payment pages instead load Stripe's secure payment fields in the page. Stripe may use its own storage or security signals to process payments and prevent fraud; see the Stripe Privacy Policy. Connecting QuickBooks Online sends you to Intuit's authorization pages, governed by the Intuit Privacy Statement. Signing in with Google, Microsoft or Apple takes you to that provider's pages, governed by their policies. Their storage is separate from the first-party keys listed above.

5. The Consent Banner and Your Choices

On your first visit we show a small banner at the bottom of the page. It does not block the page. "Accept all" turns on remembered preferences and optional diagnostics; "Necessary only" keeps only strictly necessary storage; "Manage preferences" opens a dialog where you can set each category. Your choice is stored in sr_cookie_consent in this browser and we do not ask again for 12 months, unless this policy changes materially.

You can change your choice at any time using the "Cookie preferences" link in the page footer or the signed-in help menu. You can also reopen preferences on this page. Withdrawing permission stops future optional diagnostic sends and removes the optional preference records listed here. It does not undo reports already sent. You can also clear site data in your browser, which signs you out. Closing the dialog without saving does not consent.

5.1 Global Privacy Control

If your browser sends the Global Privacy Control signal, we treat it as an opt-out: the optional diagnostics category is kept off regardless of what you click, and the banner tells you so.

5.2 Browser controls

You can block or clear storage in your browser settings. Blocking localStorage or IndexedDB will prevent you from signing in or working offline. Optional diagnostics also stay off when Global Privacy Control is enabled. Browser settings do not replace your organization's separate controls for requested features such as location or notifications.

6. Changes and Contact

We update this page whenever we add or remove a key, database or cache. Material changes (for example, introducing analytics) bump the consent version so that the banner is shown again. Questions: privacy@servicerunner.app. See also the Privacy Policy.

ServiceRunner

Booking, dispatch, service history and billing for field service businesses. Built by contractors, for contractors.

phone_iphoneComing soon to the App Store androidComing soon to Google Play
homeemail
Product
Features
Help and FAQs
Trades
Pricing
Book a demo
Join the waitlist
Company
Contact
Legal
Terms of Service
Privacy Policy
Data Processing Addendum
Acceptable Use Policy
Cookie Policy
Subprocessors
Mobile App EULA
Ready to get started?

See it run on one of your own jobs, or join the waitlist for an account invitation.

Book a demo

© 2026 Isles Mechanical LLC. All rights reserved. ServiceRunner is a product of Isles Mechanical LLC.
TermsPrivacyCookiesContact
privacy_tip

Your privacy, your choice

We use essential storage to keep ServiceRunner working. Optional preferences and error diagnostics stay off until you choose to allow them. No advertising trackers.

Cookie Policy