Feature · Communication

Per-Job Team Chat for Construction Crews

One thread per job. The office sees everything, employees see their assigned jobs, subs see only their scope. Photos inline. One-tap English, Spanish, and Portuguese translation. Pinned messages, push notifications grouped per job, offline send. The construction app chat that replaces 87 group texts with one organized place per build.

Get Workhand free See pricing
Quick answer: Every job in Workhand gets its own chat with role-scoped channels. Office and crew use the team channel, subs see only their own channel, no sub sees another sub's messages. Photos inline. One-tap translation between English, Spanish, and Portuguese. Pinned messages, push notifications grouped per job, offline send. Realtime delivery without carrier SMS fees. Included on every plan including Free. iOS and Android.

The problem this solves

Three months into a pool build. The customer asks about a change to the coping color they "approved last Tuesday." You scroll through 87 unread group texts looking for it. You find a photo of a tile sample, a "looks good" from the customer, no date, no context, no idea if that was the change or a different one. The customer is mad because what you installed is not what they remember saying yes to. You eat the change.

Same week. Your plumbing sub texts the group thread about a leak he found. The screen sub sees the message and freaks out because he thinks his enclosure is leaking. Now you are putting out a fire that was not there.

Group texts are the wrong shape for construction. Too many people, no separation by job, no separation by role, no search, no pinning, no photo organization. The data is there somewhere, but reconstructing what happened six months later is a hunt through 14,000 messages.

How Workhand handles it

Each job gets its own chat with three channels inside it. The team channel is for office, foreman, and employees. The bids channel is for sub coordination on bid scope and pricing. Each sub gets their own private sub channel where they only see messages on their scope.

A sub on the same job cannot see another sub's channel. The team channel is invisible to all subs. This is enforced in the database row-level security policies, not hidden in the UI. So the plumbing sub mentioning a problem stays in the plumbing sub channel until you decide to escalate it.

Photos render inline. Messages are searchable per job. Pin the change-order approval to the top of the team channel so it stays visible. Push notifications group by job and by category so the right people get pinged without the noise of a global blast.

Six months later when the customer asks about the coping color, you open the Smith job, scroll to the pinned change-order message with the photo and the customer's "looks good," and the conversation is over.

What you getHow it works
One thread per jobEvery job has its own chat. Messages about Smith pool stay separate from Garcia patio.
Role-scoped channelsTeam, bids, and per-sub channels. Database-enforced privacy. No sub sees another sub.
Photo attachments inlineTake or attach photos that render directly in the thread. Auto-link to the job's media library.
One-tap translationEnglish, Spanish, and Portuguese. Set preferred reading language once. Translate button appears on messages in other languages.
Pinned messagesPin the change-order approval, gate code, or homeowner work hours so they stay on top.
Grouped push notificationsNotifications group by job and category so notifications about chat stay separate from estimates, bids, and invoices.
Offline sendMessages queue locally without signal and propagate to the thread when connection returns.
SearchFind any message on a job by keyword without scrolling through six months of history.
Realtime deliveryWebsocket-based delivery. No carrier SMS fees, no per-message charges.

Why per-job beats global team chat

Slack, Microsoft Teams, and WhatsApp all do team chat. Workhand is intentionally not those tools. Three differences matter for contractors.

  1. The thread is the job, not the team. When the conversation lives inside the job, the next person to open that job in six months sees the conversation as context. In Slack, a message from October about the Smith pool is buried in #general next to a thousand unrelated messages.
  2. Subs are first-class but scoped. Slack does not have a model where a vendor can be on the channel but only see their scope. Workhand does. The plumbing sub has access to the job's plumbing channel and that is it.
  3. Translation is built in, not a paid plugin. Most chat tools require a paid translation integration. Workhand ships English, Spanish, and Portuguese translation on every plan including Free.

Who this is built for

Try Workhand free

Free plan includes per-job chat with photo attachments, pinning, and translation on 1 active job. Upgrade to Pro at 34.99 per month for unlimited jobs, or Team at 89.99 per month for up to 15 users. 14-day free trial on paid plans.

Get the app See pricing

Common questions

How is per-job chat different from group texts?

A group text is one giant thread for everything across every job and customer in your life. Chat in Workhand starts a new thread inside the specific job, so the message about Wednesday's pour on the Smith pool stays separate from the Garcia patio bid. Messages are searchable, photos render inline, and messages are organized by role so subs do not see the team's internal chat or other subs' messages. Six months later you can still find what the homeowner said on the change order.

Can subs see what the team is saying in chat?

No. Each job has separate channels for team, bids, and sub conversations. Subs see only the channel that includes their scope. The team channel where the office, foreman, and employees coordinate is invisible to subs. Subs on the same job cannot see each other's channels either. This is enforced at the database row level (RLS), not hidden in the UI, so there is no way around it.

Does the chat work for a solo contractor with no crew?

Yes. The most underrated use of per-job chat for solo operators is logging notes to yourself on a specific job. Tap into the Smith job's chat, post a message about the change order the homeowner verbally approved, attach a photo. Six months later when the customer asks about that change, you have the exact message with the timestamp and the photo. Solo contractors use it as a job journal that doubles as a customer-conversation record.

Can I attach photos to chat messages?

Yes. Take a new photo from inside the chat box or attach one from your camera roll. The photo renders inline in the conversation. Photos taken in chat also auto-link to the job's media library so foremen pulling up the job later can see all the visuals in one place. Photo attachments work offline and upload when signal returns.

How does the one-tap English/Spanish translation work?

Each user sets their preferred reading language once. When a message arrives in another language, a Translate button appears next to it. Tap and the message renders in your language. Your reply goes out in your language. Their app shows the Translate button to flip it back. English, Spanish, and Portuguese are supported. Saves the daily Google Translate tab dance on every jobsite that runs bilingual.

Does chat work offline?

Yes. Outgoing messages send offline and queue locally until signal returns. The message appears in the thread immediately on the sender's side so the conversation does not feel broken. When signal comes back, the queued message lands on the server and propagates to everyone else on the job in realtime. Photo attachments queue the same way.

Can I pin a message to the top of the thread?

Yes. Pin the change-order approval, the gate code, the homeowner's preferred work hours, or whatever you do not want to scroll for. Pinned messages show at the top of the job's chat regardless of how new messages push them down. Owners and admins can pin. Subs can read pins but cannot create them so the pinboard stays under your control.

Does the chat send carrier SMS or notifications only?

Chat is delivered over realtime websockets and push notifications, not carrier SMS. No SMS surcharges, no carrier deliverability issues, no separate phone number to manage. Push notifications grouped per job so the right people get pinged about the right work, without the noise of a single group text that buzzes every employee about every job.