Blog
Daniel Høyrup
Daniel HøyrupAugust 4, 2026 · 6 min

One thread per customer — not one per channel

How the communications module in Clientflow thinks about a conversation, and why it matters when a customer texts, calls and emails in the same week.

When we started building Clientflow, I spent a week mapping how many places a typical service business kept its customer communication. I got to thirteen before giving up — the SMS app, the Gmail inbox, the phone's contact list, the call log, Messenger, WhatsApp, comments inside the booking tool, notes in the accounting software, and so on.

The hard question wasn't whether we could build another inbox. It was how to fold all those channels into the same thread without making a mess. That's what I want to explain here — how the communications module thinks about a conversation, and why it changes the shape of your day at the office.

What a conversation actually is here

The short answer: a conversation belongs to one customer and one inbox — not one channel. When Karen from Copenhagen texts you, calls, and emails five days later, all three messages sit in the same thread. We call the routing key conversation_id, and it's the only key we use to move messages through the system.

In the database this means each customer can have ONE open conversation in your primary inbox, and possibly another open conversation in a secondary inbox — say a dedicated one for complaints. But never two open conversations for the same customer in the same inbox. It sounds mundane until you've used a system where it doesn't work.

For the office it means one place to look when a customer calls and says "I wrote to you last week". No tab switching, no "who took the call", no messages lost between two systems.

A regular Tuesday with a customer

Let me make it concrete. Tuesday morning a cleaning company gets a text from a new customer: "Hi, can you come on Friday?" The message lands in the primary inbox and starts a new conversation — the contact is created automatically if the phone number isn't already on file.

Two hours later the customer calls. The call attaches itself to the same thread — you can see whether it was answered, how long it lasted, and who took it. In the afternoon the office sends a quote by email from the same screen. It goes out from your verified domain, and the customer's reply the next day lands right back in the same thread — not in a new one.

Friday, after the job, the technician adds an internal note in the thread: "stairs were slippery, customer wants a pressure washer next time". The customer never sees it, but the next time you open the contact, the whole history is right there.

The inbox that exists from day one

A detail I'm proud of: the day you create your Clientflow account, a primary inbox is already there. It has a temporary address on the clientflow.nu domain — never used externally — but it means texts, calls and notes have somewhere to land from the start, even before you've verified your own email domain.

The first time you verify a real sending domain — say info@yourcompany.com — the system promotes that same inbox and swaps the address. You don't end up with two. It sounds like a technical given, but it was one of the harder pieces to get right. Otherwise you're left with three half-empty inboxes after a week.

When a customer changes number or email

An annoying scenario in older systems: a customer gets a new number and writes to you from it. The system creates a new contact, and two years of history are gone — technically they still exist, but the new Karen doesn't know the old Karen.

We ask. When you edit a phone number or email on a contact, a small dialog appears: is this the same person with new details, or was it typed wrong originally? The answer decides whether the messages tied to the old number move with the contact or stay put as historic data. We ask once, not once per field — because it's one judgement about the person, not a separate one per channel.

How to get started

In practice it comes down to three things: create your account, set up your sending domain, and send your first message. All the plumbing around inboxes and conversations is handled for you. You'll only think about it again when you actually want an extra inbox — a dedicated one for subscriptions, say, or complaints.

If you're coming from Fenster, Minuba or Previsto, we move your contacts and history for free. That's also where we see the most aha-moments — when 400 scattered SMS threads and four years of email history end up neatly grouped under the right customer.

Want to see it in action?

Book a walkthrough and we'll show you a real customer thread.

Try demo