# Shared WhatsApp inbox with a 24 hour reply window countdown

> Work every open WhatsApp chat from one board, sorted by how long you have left to reply for free, with claims so two people never answer the same customer.

- Workflow type: app
- Services: Kapso, HubSpot
- Categories: Customer Support
- Published: 2026-08-31

## What it does

- Puts every open WhatsApp conversation on one board, sorted so the chats closest to losing their free reply window sit at the top, each row showing the customer name, how long they have been waiting, and who on the team has claimed it
- Opens the full message thread next to a context panel with that person's CRM record, so whoever picks up the chat can see the history instead of asking the customer to repeat themselves
- Lets your team reply directly from the app, and switches to your approved templates automatically once the free reply window has closed
- Shows claims to everyone in real time, so two people never answer the same chat, and logs what was resolved back onto the customer's CRM record

## What you'll need

- A Kapso account with a connected WhatsApp Business number
- A HubSpot login with access to your contacts
- At least one WhatsApp message template already approved, so your team can still reach people after the free reply window closes
- Customer phone numbers stored on your HubSpot contacts, so the app can match a chat to the right record

## Prompt

Build me a shared WhatsApp inbox that my support team works out of all day, on top of Kapso and HubSpot. Several people use it at the same time, so anything one person does needs to be visible to everyone else right away.

The main view is a board listing every open WhatsApp conversation, loaded with the Kapso List Conversations operation. Sort it by how much time is left in the 24 hour reply window, ascending, so the conversations about to expire sit at the top. Compute the window as 24 hours from the most recent inbound message from the customer, not from when the conversation started, so I need the latest inbound timestamp per conversation. Each row shows the customer name, how long they have been waiting since that last inbound message, the remaining window as a live countdown like "3h 12m left", a preview of the last message, and who on my team has claimed it. Color the countdown so rows getting close to expiry read as urgent, and show conversations whose window has already closed in their own state labeled "Window closed" rather than hiding them. Give me filters for unclaimed only, mine only, and window closed.

Clicking a row opens a detail view split into two halves. The left half is the full message thread for that conversation, pulled with the Kapso List Messages operation filtered to that conversation, rendered as a chat transcript with inbound and outbound messages visually distinct and timestamps on each. Use Get Conversation Details for conversation metadata and the Kapso Get Customer operation for the WhatsApp profile details of the person, and show those at the top of the thread.

The right half is a context panel showing that person's HubSpot record. Look them up with the HubSpot Search Contacts operation, matching on the phone number from the WhatsApp conversation. Normalize before searching, since WhatsApp gives numbers in E.164 form and HubSpot may store them with spaces, dashes, or no country code, and check both the phone and mobile phone properties. Show name, email, company, lifecycle stage, and owner. Also pull that contact's recent support tickets with Search Tickets so whoever picks the chat up can see what else is open. When no contact matches, say so clearly in the panel and fall back to the WhatsApp profile details, and offer a button to open the thread anyway. Never block replying just because there is no CRM match.

Under the thread there is a reply box. While the conversation is still inside its 24 hour window, typing a message and hitting send posts it with the Kapso Send a Message operation and appends it to the thread immediately. Once the window has expired, swap the free text box for a template picker: load the approved templates with the Kapso List Message Templates operation, let the agent choose one, fill in any variables it needs, and send it with the Kapso Send a Marketing Message operation. Make the state of the window obvious right above the composer so nobody types a long reply only to discover they cannot send it.

Claiming is the core of the shared part. Any viewer can claim a conversation from the board or the thread view, and the claim is stored in shared app state so every other viewer sees it, along with who claimed it and when. Let people release a claim or hand it to someone else. If a conversation is claimed by a colleague and I open it, warn me before I send anything. This exists to solve the duplicate reply problem where two agents see the same message and both answer it.

Add internal notes on each conversation, stored in the app and visible to the whole team but never sent to the customer. These are for handoffs, so context does not fragment when a chat moves between agents. Render them inline in the thread but styled clearly as internal, not as customer messages.

When a conversation is resolved, let the agent mark it done and write a short summary of what was fixed. Log that onto the customer's CRM record with the HubSpot Create Note operation, associated to the matched contact, including the customer name and the resolution summary. If there was no contact match, skip the note and tell the agent why instead of failing silently.

Add a "draft a reply" button on the thread view that kicks off a background agent. That agent reads the full message thread with List Messages, pulls the customer's HubSpot history with Search Contacts and Search Tickets, and writes a suggested response back into the app, where it lands in the reply box for the agent on duty to edit and send. It must never send anything itself. Show a clear pending state on the conversation while the draft is being written, since it runs in the background and the person may go work another chat meanwhile, and show which teammate requested the draft.

Refresh the board regularly so countdowns stay accurate and new inbound messages appear without a manual reload, and make the whole thing comfortable to keep open on a second monitor all day.

## How to customize

- Change what counts as urgent, so rows turn red at two hours left instead of four
- Choose which CRM details show in the context panel, such as lifecycle stage, open tickets, or account owner
- Adjust what the draft assistant sounds like, from a short factual reply to a warmer branded tone
- Decide whether closing a chat always writes a note back to the customer record or only when someone adds a summary

## FAQ

### What is the 24 hour reply window?

WhatsApp only lets you reply freely for 24 hours after a customer's last message. Inside that window every reply is free, no matter how many people on your team handle the chat. Once it closes you can only reach that person with a template WhatsApp has already approved. That is why the board sorts by time left rather than a normal response timer: missing this cutoff does not just breach a target, it takes away your ability to reply at all.

### How does it stop two agents replying to the same customer?

Anyone can claim a conversation, and the claim is visible to the whole team the moment it happens. Rows show who is handling each chat, so nobody opens a thread someone else is already answering. If a colleague has claimed it, the app warns you before you send.

### Can we still message someone after the window closes?

Yes. When a chat's window has expired the reply box switches to your approved templates, so your team picks one from a list and sends it without leaving the app. The board makes it obvious which chats are in that state.

### Will this work if our contacts are not all in HubSpot?

Yes. The app matches chats to contacts by phone number, and when there is no match the context panel says so and falls back to the WhatsApp profile details. Your team can still read and answer the conversation normally.

### What does the draft reply button actually do?

It kicks off a background assistant that reads the whole thread, pulls that customer's history from your CRM, and writes a suggested response back into the app. Nothing is sent automatically. The suggestion lands in the reply box for the person on duty to edit, approve, or throw away.

### Can we leave notes for each other without the customer seeing them?

Yes. Internal notes sit alongside the thread and are only visible to your team, so context stays with the conversation instead of scattering across chat apps when a chat changes hands.

Use this prompt in General Input: https://www.generalinput.com/prompts/shared-whatsapp-inbox-with-a-24-hour-reply-window-countdown