Customer Portal Software for Field Service Jobs

A link in an email, and the customer can see where their job has got to, approve the estimate, read the invoice and check their warranty — without an account, a password or anything to download. Every login you require is a support call you will eventually receive, so this portal requires none.

The portal is on the free plan, not a paid add-on.

The same no-login link opens job history or invoices — the token in the address bar never changes.

“Customer Portal” Means Two Different Products

Search the term and most of what comes back is built for accountants, agencies and law firms. That is a genuinely different product from what a plumbing company needs, and telling them apart in the first minute saves a wasted trial.

A client collaboration portal — not this

A workspace the client logs into: document libraries, shared folders, ticket threads, per-user permissions, e-signature workflows, years of billing history. Built for an ongoing professional relationship.

A job-scoped access link — this is Opsler

A homeowner who wants to know when you are arriving, say yes to a quote, and find last year’s invoice. They will use it three times and never think about it again, so it cannot require an account.

How the Link Works Without a Login

The customer receives an email — when the technician sets off, when an estimate needs approving, when an invoice goes out — and it contains a token link. Tapping it opens their portal. That is the entire access model.

The token is checked on the server on every request rather than trusted from the URL, and it is scoped to that customer: their jobs, their invoices, their warranties, and nothing else. An expired token lands on a page saying so, not on somebody else’s record.

The trade is worth stating plainly rather than glossing. A link that works without a password is a link that works for whoever holds it — if a customer forwards the email, the recipient can see that customer’s jobs and invoices. For residential service work most operators consider that the right trade, because the alternative is a password-reset queue and customers who never open it at all. But it is a judgement, and you should make it knowingly rather than discover it.

One place we do add a check: estimate approval. Before an estimate is visible the customer enters a one-time code, so a forwarded link does not expose your pricing or let somebody else approve work.

Security and Privacy Questions Worth Asking Any Vendor

Every field service customer portal makes the same trade for the sake of a customer who will use it three times a year: something easier than a password. Ask any vendor selling client portal software these four questions before you trust it with a customer’s invoices.

  • Is the token checked on every request, or trusted from the URL? Opsler validates server-side each time; a stale or expired token gets a plain “this link has expired” page, not somebody else’s job.
  • What happens if the link is forwarded? Whoever holds the link sees that customer’s jobs and invoices — there is no second factor. That is a real trade for residential work, and Opsler adds a one-time code specifically before an estimate becomes visible, so a forwarded link cannot approve pricing on someone else’s behalf.
  • Is data scoped to that one customer? The token resolves to a single customer record — their jobs, their invoices, their warranties — never a directory of everyone you have served.
  • Does the portal expose anything beyond the job? No account settings, no other customers’ data, no admin functions. It is a narrow window onto one relationship, which is the whole point of building it as a customer portal software for small business rather than a scaled-down admin login.

What the Customer Sees: Four Tabs

No dashboard to learn. Four tabs, and the one they arrive on is the job they were emailed about.

TabWhat is on it
Current jobStatus with a colour-coded banner, service type and description, scheduled date and time window, ETA, the address, and the technician's name and photo with a tap-to-call button. Any pending estimate appears at the top with full line items, and they can approve or reject it inline.
HistoryEvery past job for that customer, newest first, each with its title, status, date and technician. Opening one shows that job's own portal page, with a banner back to the current job.
InvoicesEvery invoice across every job — number, status, total, due or paid date, and the job it belongs to. The detail view has the full line-item breakdown with per-item tax, a PDF download and a Pay Now action. Warranty discounts show as highlighted negative lines.
Warranties (Pro)One card per warranty: the job it came from, the type — parts, labour or full — a status of active, expiring soon or expired, start and end dates, duration in days and any notes.

What They Can Act On — Not Just Read

A read-only portal answers one question and generates a phone call for everything else. Four things the customer can actually do:

1

Approve the estimate

A pending estimate shows at the top of the current job with its full line items, total and validity date. They approve or reject, both optionally with a note — a reason is invited, not demanded. No second system, no printing.

2

Message you

A thread on the open job, refreshed every 30 seconds, and they can send a photo of the problem. Once the job completes it goes read-only, so new requests come through your booking channels rather than a dead thread.

3

Watch the arrival

On Pro, a Track Live Location button appears while the job is en route: a map with the technician's position every 15 seconds, an ETA in wall-clock time and a call button. It stops at arrival.

4

Handle the invoice

Read the full line-item breakdown, download the PDF, and use Pay Now — which opens an external payment link. Opsler records the payment; it does not process it.

How the Access Model Works in Your Favour

Payment runs through your own processor. Pay Now opens an external payment link, and Opsler records the payment once you have it rather than processing it. That is why no percentage of every job disappears into a platform, and why you keep the rate you negotiated. The trade is that the customer takes one extra tap to get there.

The link arrives by email. Every portal link, estimate request and invoice goes out by email, which means there is nothing for the customer to install and nothing for you to configure per message.

History is a dated list, not an archive to manage. That customer’s jobs, newest first, each opening to its own page. A homeowner with nine visits over six years does not need a search box, and not having one is why the portal needs no explaining.

Chat belongs to the job and closes with it. No tickets, no queues and no SLAs to answer to — when the work is done the thread goes read-only, so a new request arrives through your booking channel where it becomes a job, instead of decaying in a thread nobody is watching.

How the Portal Works With Booking and Messaging

Three customer-facing features overlap in people’s heads and do different jobs. The portal is for a customer who already has a job with you.

  • Before there is a job — someone asking for work uses the booking form on your free branded site. That is online booking, and it produces a request the office converts.
  • During the job — the portal. Status, arrival, estimate approval, messaging, and the invoice at the end.
  • Between your own people — office-to-technician messaging is a separate thing entirely. See technician chat.

Estimate approval has its own detail on contractor estimating — including the one-time code, and what the signature record actually contains.

What Customers Can See and Do

What a customer can see and act on from the link you send them.

CapabilityOpslerDetail
Token link, no account and no password YesValidated server-side on every request; expired tokens are rejected
Nothing to download from an app store YesIt opens in the browser they already have
Current job status, schedule and ETA YesStatus icons through en route, arrived, in progress, completed
Approve or reject a pending estimate inline YesA reason is invited on rejection, not required; approval can carry notes
Completion evidence once the job is done YesTechnician's notes, before-and-after photos and the signature
Full job history by date YesNewest first, each linking to its own job page
Invoices with line detail and PDF download YesPer-item tax shown; warranty discounts highlighted
Message you while the job is open YesRefreshed every 30 seconds; read-only once the job completes
Tap-to-call the technician and the business YesPlain phone links, which is what people actually use
Live location map with ETA YesPro only, and only while the job is en route. Stops at arrival
Warranty records YesPro only. Type, status, dates and days remaining

Everything except the live tracking map and the warranties tab works on the free Budding plan. Pro is $25 per seat per month with no seat minimum. Full pricing.

Customer Portal Software Questions

Neither. Access is a token link sent by email — they tap it and they are in. There is no account to create, no password to reset and nothing to download from an app store. The token is validated on the server on every request, and an expired one lands on a page telling them so rather than showing another customer's job. That is the whole design: every login you require is a support call you will eventually receive.

Four tabs. Current job — status, schedule, the technician's name with a tap-to-call button, and once it is finished the completion notes, before-and-after photos and their signature. History — every past job by date. Invoices — full line-item detail, a PDF download and a Pay Now action. Warranties, on Pro — type, status, dates and days remaining. They can also approve or reject a pending estimate inline, and message you while the job is open.

The invoice carries a Pay Now action and it opens an external payment link — Opsler itself does not process payments. There is no card gateway, no ACH and no stored card in the product, so the money moves through whatever processor you already use and you record the payment against the invoice. Be precise about that difference when comparing us with platforms that take a percentage of every job.

On the Pro plan, and only while the job is en route. A Track Live Location button appears at that status and opens a full-screen map with the technician's position refreshed every 15 seconds, an ETA as a wall-clock time, their name and a call button. It stops at arrival. There is no all-day location trail and no geofencing, and on the free Budding plan GPS is disabled entirely so the button does not appear.

No, and the distinction is worth making before you trial anything. Those are workspaces: document libraries, shared folders, ticket threads, per-user permissions, e-signature workflows, years of billing history. Opsler's portal is scoped to a customer's own jobs and reached by a link. There are no user accounts, no permission settings, no document library and no ticketing.

Mostly. The portal itself, the current-job view, history, invoices, estimate approval and chat all work on the free Budding plan, which covers 2 seats and 50 jobs a month. Two things are Pro-only: the live tracking map, and the warranties tab. Pro is $25 per seat per month with no seat minimum and a 14-day trial that does not ask for a card.

Ready to Run Your Business Without the Chaos?

Scheduling, dispatch, estimates, invoicing, customer portal, and a free branded website — start completely free, upgrade to Pro when you scale.

Free forever on the Budding plan. No credit card required.

Explore all 42 features·See full pricing