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.
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.
| Pattern | What it opens | Notes |
|---|---|---|
/#/queue | Action Queue | The default landing page for PMs. |
/#/jobs | All Jobs page | Default 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 tab | Tab keys: analytics, categories, pos, fielddata, budget. |
/#/jobs/<jobNumber>?tab=fielddata&sub=<key> | Field Data on a specific sub-tab | Sub-tab keys: cost-codes, equipment, fleet, subs, crew, daily-reports, weather. |
/#/jobs/<jobNumber>?tab=fielddata&sub=daily-reports&date=YYYY-MM-DD | Field Data → Daily Reports, scrolled to a specific date | The date= parameter is only honored inside sub=daily-reports. |
/#/analytics | Analytics page | Portfolio view. |
/#/login | Login page | Normally 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/5146 | https://dash.precisionsiteservices.com/jobs/5146 |
https://dash.precisionsiteservices.com/#/queue | https://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.
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.
The Copy Link button
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.
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.
What Copy Link does NOT capture
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
What happens when a recipient opens a deep link
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.
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.
What a deep link does NOT carry
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 carried | What 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 Jobs | Recipients see their own Recent list, not yours. |
| Widget pin / hide / order preferences | Each user's widget layout is their own. |
| Sort and page-size on the PO Detail table | Recipients 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.
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 clearsdate=automatically. So a link like?tab=fielddata&sub=cost-codes&date=2026-04-15will silently drop the date.- Switching tabs clears the sub-tab and date params. So a link like
?tab=pos&sub=daily-reportsis silently rewritten by the app to?tab=pos. The sub-tab and date params only make sense insidetab=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=overviewor?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."
- Decide the depth you need. Job-level? Use Copy Link. Tab- or date-specific? Use the address bar.
- Test the link yourself in a private/incognito window. This proves both the URL and the sign-in forwarding work end-to-end.
- 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.
- 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.
Related pages
- Global Search — picking a job from search resolves to a job-level deep link.
- Recent Jobs — Recent Jobs is per-session; deep links cannot share it.
- Keyboard Shortcuts — there is no keyboard shortcut for Copy Link.
- Copy Link — the broader "copy link" affordance and when to use it.
- Signing In — for the sign-in flow that intercepts a deep link from a signed-out browser.
- Companies and Access — for the sign-in domain rules.
- Job Detail Overview — for what each tab on a job actually shows.
- Field Data tab — for what the Field Data sub-tabs are.
- Daily Reports — for what
?date=lands on inside Daily Reports. - Drilling Into a Job — for intra-session filter chip carry-over (which is NOT URL-based).