Customer Portal

Give your customers a branded self-service portal where they can view their jobs, estimates, invoices, and inspections.

Overview

The Customer Portal is a separate website your customers access to check the status of their work without calling your office. Each Forz account gets a dedicated portal URL based on your company subdomain (e.g., cp.forz.io/acme-plumbing). Customers log in with their email address and a one-time verification code — no passwords to manage.

From the portal, customers see a dashboard summarizing their open estimates, outstanding invoices, active jobs, and recent inspections. They can drill into each record for details, download PDF copies of estimates and inspections, and accept estimates directly.

Before You Begin

Prerequisites:

  1. Your account has a subdomain configured (set during onboarding or in Settings > Company).

  2. At least one customer record exists with a contact that has an email address.

  3. The contact is linked to the customer via a contact linkage.

How Customers Access the Portal

The Customer Portal lives on a dedicated domain (cp.forz.io) and uses your company subdomain as a URL path. Each customer accesses the same portal URL and logs in with their own email address.

Portal URL format

Your portal URL follows this pattern:

https://cp.forz.io/your-subdomain

For example, if your company subdomain is acme-plumbing, your portal URL is:

https://cp.forz.io/acme-plumbing

Share this URL with your customers via email, your website, or printed materials. Every customer for your account uses the same URL.

Tip: Bookmark the portal URL in your email templates so customers always have quick access. You can also add it to your invoice and estimate footers.

How Customer Login Works

The portal uses email verification codes instead of passwords. This eliminates forgotten-password support requests and keeps access secure.

Logging in

  1. The customer opens your portal URL (e.g. https://cp.forz.io/acme-plumbing).

  2. The portal displays the Log In page with an Email address field.

  3. The customer enters their email address and clicks Send Login Code.

  4. Forz sends a 6-character verification code to that email address. The code expires after 15 minutes.

  5. The customer enters the code on the verification page and clicks Verify Code.

Expected result: Forz logs the customer in and redirects to the portal dashboard. If the contact is linked to multiple customers under your account, the portal displays a customer selection page first.

Note: The email address must match a contact record linked to a customer in your Forz account. If the email is not found, the portal displays "Email not found for this account."

Selecting a customer account

A single contact can be linked to multiple customer records (e.g., a property manager who oversees several buildings). When this happens, the portal shows a Select Customer Account page after login.

  1. The portal lists all customer organizations the contact has access to. Primary customers appear first, marked with a star badge.

  2. The customer clicks the organization they want to view.

Expected result: The portal loads the dashboard for the selected customer. The customer can switch between organizations by logging out and logging back in.

Resending a verification code

If the customer does not receive the code, the verification page includes a Resend Code button. The button is disabled for 60 seconds after each send to prevent spam.

What Customers See

The portal dashboard displays four summary cards:

  • Open Estimates — Estimates with a status of "Sent" or "Viewed," showing number, status, amount, date, and due date. Displays up to 6 records with a View All link.

  • Outstanding Invoices — Invoices with a remaining balance (excluding "Void" and "Paid"), showing number, status, amount, balance, date, and due date. Includes total outstanding balance.

  • Open Jobs — Jobs that are not "Unscheduled" or "Completed," showing number, status, title, system type, and address.

  • Latest Inspections — Inspections created in the last 30 days, showing number, date, system type, job number, job title, and address.

Note: Draft estimates and draft invoices are not visible to customers. Jobs with an "Unscheduled" status are also hidden.

Portal navigation tabs

The portal includes tabs at the top of the page for navigating between sections:

  • Dashboard (Summary view with all four cards).

  • Estimates (Full list of non-draft estimates).

  • Invoices (Full list of non-draft invoices).

  • Jobs (Full list of non-unscheduled jobs).

  • Inspections (Full list of inspections linked to the customer's jobs).

Viewing record details

Customers click any record number in the tables to view its full details. From the detail views, customers can:

  • Estimates: View the full estimate, download a PDF, and accept the estimate directly from the portal.

  • Invoices: View invoice details including line items, amounts, and balance.

  • Jobs: View job details including status, title, job type, system type, and address.

  • Inspections: View inspection results including pass/fail/bypass status for each device, and download a PDF report.

Accepting estimates

Customers can accept estimates directly from the portal without needing to call or email your office.

  1. The customer opens an estimate from the Estimates tab or the dashboard.

  2. The customer reviews the estimate details.

  3. The customer clicks the accept option on the estimate.

Expected result: Forz updates the estimate status to "Accepted," records the timestamp, and creates a note on the estimate that it was accepted through the portal.

What Customers Cannot Do

The portal is read-only for most record types. Customers cannot:

  • Create, edit, or delete jobs, invoices, or inspections.

  • View jobs with an "Unscheduled" status.

  • View draft estimates or draft invoices.

  • Access data belonging to other customers.

  • Change their contact information.

  • Make payments through the portal (payments are handled through separate checkout links).

Data Visibility Rules

Forz applies these filters to control what customers see:

Record Type

Visible When

Hidden When

Jobs

Status is not "Unscheduled"

Status is "Unscheduled"

Estimates

Status is not "Draft"

Status is "Draft"

Invoices

Status is not "Draft"

Status is "Draft"

Inspections

Parent job status is not "Unscheduled"

Parent job is "Unscheduled"

Common Scenarios

Sharing the portal with a new commercial customer

After creating a customer record for Greenfield Property Management and adding their office manager Maria as a contact with her email address, send Maria the portal URL (cp.forz.io/your-subdomain) and let her know she can check job status and review estimates at any time. When Maria visits the portal and enters her email, she receives a verification code and gains access to all of Greenfield's jobs, estimates, and invoices.

A property manager with multiple buildings

River Valley Properties manages three apartment complexes. Their maintenance coordinator, James, is linked as a contact on all three customer records. When James logs into the portal, he sees a selection page listing all three properties. He picks "River Valley - Oakwood Apartments" to check on a recent HVAC inspection, then logs out and back in to view invoices for "River Valley - Elm Street Complex."

Customer reviewing and accepting an estimate

Coastal Electric sends an estimate for a panel upgrade to their customer, Seaside Restaurant. The restaurant owner opens the portal, navigates to Estimates, clicks the estimate number, reviews the line items and total, and accepts the estimate. Coastal Electric sees the status change to "Accepted" in Forz and can proceed with scheduling the work.

Troubleshooting

Problem

Solution

Customer sees "Email not found for this account"

Verify the customer has a contact record with that exact email address and that the contact is linked to a customer in your account. Check Customers > [Customer] > Contacts.

Customer sees "Account Not Found" page

The portal URL subdomain does not match your Forz account. Verify your subdomain in Settings > Company and confirm the customer is using the correct URL.

Customer does not receive the verification code

Check that the email address is correct and ask the customer to check spam/junk folders. The customer can click Resend Code after the 60-second cooldown. If the issue persists, verify the contact email in Forz matches what the customer entered.

Customer sees "Invalid or expired code"

The verification code expires after 15 minutes. Ask the customer to click Resend Code to generate a new code and enter it promptly.