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.
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.
What does this prompt do?
- 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 do I need to use this?
- 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.
How can I customize it?
- 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.
FAQs
Do all my reps need their own ClickSend login?
Can the customer see our internal notes?
Why are incoming replies not showing up?
Does this work with the free version of HubSpot?
What happens when someone texts STOP?
Related templates
Stop buying stale lists. Reps run a saved search, work the results like an inbox, and only the accounts they approve ever reach your CRM.
Pick a date, a starting point and a radius, then build a sequenced day of customer visits that lands straight on your calendar.
One screen where reps filter for companies that fit, see who is actually reachable at each account, and save only the addresses that verify.
See every competitor battlecard next to the number of open deals that name that competitor, so the cards carrying real pipeline get refreshed first.
Score every target account against the buying committee you actually need, see the exact holes, and have an assistant fill them in your CRM.
See open and pending conversations from all your Help Scout inboxes in one queue, sorted so the customers who have waited longest on you come first.
Stop working your texts out of a message log.
Give your reps one shared inbox where every customer conversation and the CRM record behind it sit on the same screen.