Skip to main content

Deep Links and Sharing

The dashboard has a small, predictable URL grammar. Once you know the patterns, you can construct, share, and bookmark links that land readers exactly where you want them — on a specific job, a specific tab, or even a specific daily report date.

This page does two things: it documents the URL patterns the app understands, and it explains the Copy Link button on Job Detail — including the one important limitation that catches people.


Sharing a tab- or date-specific link

Copy the URL from your browser's address bar rather than clicking Copy Link. Copy Link only copies the canonical job-level URL; the address bar carries the tab and sub-tab and date you're actually looking at.


URL pattern reference

Every URL on the dashboard starts with the host followed by /#/. The hash is required — see the next section — and everything after it picks the page.

PatternWhat it opensNotes
/#/queueAction QueueThe default landing page for PMs.
/#/jobsAll Jobs pageDefault landing page for non-PMs.
/#/jobs/<jobNumber>Job Detail (Spend Analytics tab)Default tab when ?tab= is omitted.
/#/jobs/<jobNumber>?tab=<key>Job Detail on a specific tabTab keys: analytics, categories, pos, fielddata, budget.
/#/jobs/<jobNumber>?tab=fielddata&sub=<key>Field Data on a specific sub-tabSub-tab keys: cost-codes, equipment, fleet, subs, crew, daily-reports, weather.
/#/jobs/<jobNumber>?tab=fielddata&sub=daily-reports&date=YYYY-MM-DDField Data → Daily Reports, scrolled to a specific dateThe date= parameter is only honored inside sub=daily-reports.
/#/analyticsAnalytics pagePortfolio view.
/#/loginLogin pageNormally only reached by signing out.

For what each tab and sub-tab actually shows, see Job Detail Overview, Field Data tab, and Daily Reports.


The hash is required

The dashboard uses a hash-based router, so every URL must include /#/ after the host. A link written as /jobs/5146 (without the hash) will not resolve.

✓ Works✗ Does not work
https://dash.precisionsiteservices.com/#/jobs/5146https://dash.precisionsiteservices.com/jobs/5146
https://dash.precisionsiteservices.com/#/queuehttps://dash.precisionsiteservices.com/queue

This is the single most common deep-link mistake. If a teammate pastes a link and it lands them on the All Jobs page instead of the job they expected, the missing hash is almost always the cause.


Field Data tab key has no hyphen

The main tab key is fielddata — one word, no hyphen. Sub-tab keys like daily-reports and cost-codes are hyphenated. The inconsistency is real; if your link reads ?tab=field-data it will silently fall back to the default Spend Analytics tab.


Every Job Detail page has a Copy Link button at the top, in the action bar between the Job Selector and the Export button. By default it shows 🔗 Copy Link.

JCI Dashboard Job Detail action bar zoomed to the right side, showing the Copy Link button labeled 🔗 Copy Link in default state next to the Export button

Click it, and the canonical job URL — https://dash.precisionsiteservices.com/#/jobs/<jobNumber> — is copied to your clipboard. The button briefly shows ✓ Copied for two seconds before returning to its default label.

If your browser blocks clipboard access — rare, but it can happen inside iframes or non-HTTPS contexts — the button shows Copy failed instead. In that case, copy the URL from the address bar manually.

For more on the Copy Link affordance and when to reach for it versus other sharing options, see Copy Link.

Copy Link copies the job-level URL only

Copy Link does not include ?tab=, ?sub=, or ?date=. So if you're looking at a job's Daily Reports for April 15 and you click Copy Link, the link you share will take the recipient to that job's default Spend Analytics tab — not to Daily Reports. To share a deeper link, copy from the browser's address bar instead.

This is a real, non-obvious gap. The Copy Link button always rebuilds the canonical job URL from scratch. If the link you want to share needs to point at a tab, a sub-tab, or a specific date, the address bar is the source of truth.


Worked examples

A few realistic links you might want to send.

"Look at this job" — canonical share

Use Copy Link, or hand-type:

https://dash.precisionsiteservices.com/#/jobs/5146

Lands the recipient on job 5146's Spend Analytics tab (the default).

"Look at this job's PO Detail tab"

Copy the URL from the address bar after navigating to PO Detail:

https://dash.precisionsiteservices.com/#/jobs/5146?tab=pos

"Look at this job's Daily Report for April 15"

Navigate to Field Data → Daily Reports → that date, then copy from the address bar:

https://dash.precisionsiteservices.com/#/jobs/5146?tab=fielddata&sub=daily-reports&date=2026-04-15

The recipient lands directly on that specific date inside Daily Reports.

"Open the Action Queue"

https://dash.precisionsiteservices.com/#/queue

Three scenarios cover almost everything.

Already signed in

The dashboard loads, the link resolves, the recipient lands on the deep-linked tab/sub-tab/date. Same as if they'd navigated there themselves.

Not signed in

The app redirects to the sign-in page, but it remembers the link they were trying to open. After a successful sign-in, the recipient is forwarded to that exact deep link — they don't have to re-paste it. See Signing In for the sign-in flow.

Wrong domain

Sign-in is restricted to a small set of authorized Google Workspace domains. Anyone outside those domains is blocked at the sign-in step regardless of what link they pasted. See Companies and Access.

Recipient is signed out? Forwarding is automatic

The app holds onto the URL they were trying to open and forwards them there after sign-in. You don't need to re-send the link.


Deep links are URL-based, so they only carry what's in the URL. Several pieces of state — the things that make your dashboard yours, in the moment — do not travel with the link.

Not carriedWhat that means for the recipient
Filter chip state (Company, PM, etc., on Analytics or All Jobs)Recipients see no chips applied. Your chips are session state, not URL state.
Recent JobsRecipients see their own Recent list, not yours.
Widget pin / hide / order preferencesEach user's widget layout is their own.
Sort and page-size on the PO Detail tableRecipients see the table's defaults.

So a deep link is good for "land here on this job at this tab" — it's not a full screen capture of what you're seeing.

For intra-session filter chip behavior — chips DO carry across pages within your own session, just not across users — see Drilling Into a Job.

Deep links are not a permission boundary

Every signed-in user can see every job across all eight operating companies. There is no per-company access control. If you wouldn't want a cross-company viewer to see something, a deep link does not protect it.


A few smaller rules

These come up rarely, but knowing them prevents head-scratching.

  • ?date= only does anything inside ?sub=daily-reports. Switching to any other sub-tab clears date= automatically. So a link like ?tab=fielddata&sub=cost-codes&date=2026-04-15 will silently drop the date.
  • Switching tabs clears the sub-tab and date params. So a link like ?tab=pos&sub=daily-reports is silently rewritten by the app to ?tab=pos. The sub-tab and date params only make sense inside tab=fielddata.
  • Default tab fallback is Spend Analytics. When ?tab= is missing or contains an unknown value, the page lands on the Spend Analytics tab. If your link reads ?tab=overview or ?tab=field-data (with the hyphen), it will fall back to Spend Analytics.
  • URLs use the human-readable job number. Always say "job 5146," not the dashboard's internal identifier. Job numbers are what the URL grammar expects.
  • Bookmarks work fine. Browser bookmarks save the full URL including /#/... and resolve correctly on reopen. Bookmark-as-you-go is a perfectly good way to keep a few jobs handy without filling up your Recent Jobs list (which is per-session — see Recent Jobs).

Sharing best practices

A short checklist for "I want to send someone a link right now."

  1. Decide the depth you need. Job-level? Use Copy Link. Tab- or date-specific? Use the address bar.
  2. Test the link yourself in a private/incognito window. This proves both the URL and the sign-in forwarding work end-to-end.
  3. Mention what you want them to look at in the message — deep links don't carry chip state, so a "look at the BENT chip filter" comment in chat doesn't survive the trip.
  4. For very specific date references, paste the address-bar URL alongside a one-line description ("Daily Report — 2026-04-15"). The URL alone is unambiguous, but readers appreciate the human label.