# Shared team SMS inbox with CRM context beside every thread

> Every customer text conversation in one place, with the customer's CRM record right next to it, so two reps never reply to the same person.

- Workflow type: app
- Services: ClickSend, HubSpot
- Categories: Customer Support, Sales
- Published: 2026-08-16

## What it does

- Every text your team sends or receives, grouped into one conversation per customer and sorted by most recent activity, with a badge on the threads still waiting for a reply.
- The full back and forth for whoever you pick, in order, with each outgoing message showing whether it actually landed on the phone, plus a reply box that posts your message straight into the thread.
- The customer's CRM record beside the conversation: name, company, lifecycle stage and owner, or a clear not in CRM state when the number is unknown.
- Team controls that a message log does not have on its own: claim a conversation as yours, leave internal notes the customer never sees, file the exchange to the CRM, and mark anyone who texts STOP as unsubscribed in one click.

## What you'll need

- A ClickSend account with a dedicated number set up to receive replies. Without one, outgoing texts still work but incoming replies never reach the inbox.
- A HubSpot login that can view contacts and add notes to them.
- Customer phone numbers stored in full international format, starting with a plus and the country code, so both halves of a conversation match to the same person.
- The reps who will work the inbox added to your workspace, since claiming a conversation and leaving internal notes are tracked per person.

## Prompt

Build me a shared team SMS inbox that my support and sales reps work out of all day, instead of squinting at the ClickSend message log. It is a three pane workspace: a thread list on the left, the selected conversation in the center, and CRM context on the right. This is a human workspace, not an automation. Nothing runs on a schedule; people read threads, claim them and reply by hand. The audience is support and sales reps plus their manager.

Left pane, the thread list. Build threads by merging ClickSend Get Inbound SMS with Get SMS History and grouping every message by the customer's phone number, so a single thread holds both directions of the conversation. Normalize numbers to E.164 with a leading plus before grouping, because any mismatch between the inbound and outbound representation will split one customer across two threads. Sort threads by most recent activity. Show a needs reply badge when the most recent message in a thread came from the customer, and show who currently owns the thread. Give me a filter across mine, unassigned and all.

Center pane, the conversation. Show the full back and forth for the selected number in time order, inbound and outbound interleaved, with clear visual separation between what the customer sent and what we sent. Attach per message delivery status to outbound messages using Get SMS Delivery Receipts so a rep can see whether a text actually landed on the handset. A reply box at the bottom sends through Send SMS, and the sent message should appear in the thread straight away rather than waiting for the next refresh.

Right pane, CRM context. Look the thread's phone number up in HubSpot with Search Contacts and display name, company, lifecycle stage and contact owner, resolving the owner id to a person's name with List Owners. When there is no match, show a clear not in CRM state rather than an empty panel. Add a Log to CRM action that writes the exchange onto the HubSpot contact timeline using Create Note, associated with the matched contact.

Team features backed by the app's own storage. ClickSend has no concept of thread assignment, so thread ownership, thread status and internal notes must persist in app storage, keyed by the normalized phone number. Each rep can claim a thread and release it again. Internal notes are visible to teammates inside the thread but are never sent to the customer, so render them visually distinct from real messages and make it impossible to confuse the two.

Opt-out handling. When an inbound message reads STOP, STOPALL, UNSUBSCRIBE or similar, flag that thread in the list and at the top of the conversation. Give me a one click action that marks the contact unsubscribed in HubSpot with Update Contact so the number stays out of future sends, and record in app storage that it was actioned so the flag resolves.

Setup nuance to handle gracefully: ClickSend only returns inbound messages when an inbound rule with the POLL action is configured in the ClickSend dashboard. If no inbound messages come back at all, show an empty state that explains a dedicated number needs to be set up to receive replies, rather than an inbox that silently looks broken.

Do not rebuild automated triage inside the app. A separate scheduled workflow already classifies inbound replies and routes them to Slack. The value here is the threaded conversation view, the CRM context and the assignment, so keep the app focused on a person reading, claiming and replying.

## How to customize

- Change what counts as needing a reply. The default is any conversation where the customer sent the last message.
- Adjust the filters and the CRM panel. You can add a team filter, or swap lifecycle stage for whatever your reps actually care about, like deal stage or last activity date.
- Edit the note that gets filed to the CRM, including how much of the conversation it captures and whether reps log it by hand or after every reply.

## FAQ

### Do all my reps need their own ClickSend login?

No. The app connects to ClickSend once for the whole team. Reps just open the inbox, claim conversations and reply, and everything sends from your business number.

### Can the customer see our internal notes?

No. Internal notes, thread ownership and status live inside the app, not in the text conversation. Only your teammates see them. The customer only ever receives the messages a rep types into the reply box.

### Why are incoming replies not showing up?

Incoming texts only reach the app if you have a dedicated ClickSend number set up to receive replies into your account. If your number has only ever been used for sending, replies stop at ClickSend and the inbox stays empty.

### Does this work with the free version of HubSpot?

Yes for the parts most teams need. Looking up a contact by phone number, seeing their company, lifecycle stage and owner, and adding a note to their record all work on the free CRM.

### What happens when someone texts STOP?

The conversation is flagged straight away so nobody replies to it by mistake, and you get a one click action that marks that person as unsubscribed in HubSpot so they are excluded from future sends.

Use this prompt in General Input: https://www.generalinput.com/prompts/shared-team-sms-inbox-with-crm-context-beside-every-thread