Skip to main content
All getting started articles

How Plyrium protects your work (auto-save + offline)

Two features most contractors never notice — until the day they save them. Form auto-save, the offline action queue, and what 'idempotency' means when things sync.

Updated 2026-05-02

Two of the most common ServiceTitan complaints on r/HVAC are 'the form erases when I switch tabs' and 'the page wipes when I lose signal in a basement.' We built Plyrium specifically to not do either. Here's how the safety net works.

Form auto-save (every long input)

Every long-form input in Plyrium auto-saves to your browser's local storage as you type — every 250ms after you stop typing. If you close the tab, lose wifi, get interrupted by a customer call, or your browser crashes, your draft is right there waiting when you come back.

  • Quote builder + invoice builder (12 fields including line items)
  • New customer modal
  • Recurring contract creator
  • AI receptionist editor (greeting wording is the most-edited config)
  • Settings forms

When you come back to a draft-saved form, you see a small 'Draft restored from N min ago' banner with a Discard button. Click Discard if you want to scrap your earlier work and start over. The draft expires after 30 days of inactivity so a 6-month-old abandoned thought doesn't haunt you.

How to test it

Open /portal/quotes/new, type a customer + a few line items, close the tab. Reopen the same URL — you'll see the 'Draft restored' banner with everything in place.

Offline mode (tech mobile app)

When the tech's phone loses signal — basement, crawlspace, rural service area — /portal/tech keeps responding to taps. Status updates (on the way / arrived / completed), time logs, and parts logs queue locally on the device using the browser's IndexedDB. The moment signal returns, queued actions sync to the server in order.

Visual: the status pill at the top of /portal/tech flips to amber 'Offline · 2 queued' while you're disconnected, then to 'Syncing · 1' on reconnect, then disappears once everything's caught up.

Idempotency — no duplicate SMS to your customer

When the network is genuinely flaky, requests can succeed on the server but the response packet drops on the way back. The phone thinks it failed and queues a retry. Without dedup, the customer gets two 'Tech is on the way' texts.

Plyrium mints a unique idempotency key for every queued request. The server records it on first arrival. On replay, the dedup table catches it and the original status is replied — no second SMS, no duplicate event row, no extra invoice line.

What this means in practice

Your tech can hit 'Mark complete' once, lose signal mid-request, and come back online 30 minutes later. The customer gets exactly one completion text. The job timer stops at the right time. Nothing duplicates.

What we DON'T have offline

  • Customer creation — needs a server-generated UUID; not yet wired for offline.
  • Photo uploads — files are too big to queue practically; comes online when signal does.
  • Anything that needs a Stripe round-trip — payment, save-card, customer billing portal.

If you're in a dead zone with the basics covered (status updates, time logs) and you NEED to do one of the offline-blocked things, the tip from r/HVAC works: switch the phone to airplane mode briefly, do the action when signal looks marginal, then bring it back. We're working on broader offline coverage but the high-leverage flows are already covered.

Ready to try this in the actual product?

14-day free trial, no card charged for 14 days, cancel anytime.

More getting started articles