Inbox — Unified Conversation Thread Directions

Three styles for how calls (dialer / softphone / toll-free inbound) and blast SMS interleave with 1:1 SMS in the middle-pane thread. Each direction shows the same conversation slice. Picking one locks the visual contract for the rest of the spec.

Direction A — Compact inline row
Calls render as a slim one-line row between SMS bubbles. A coloured dot + uppercase source label classifies the call type at a glance. Inline play button reveals a tiny scrubber when clicked. Lowest visual weight — thread stays SMS-first.
Recommended for density
Steve Montgomery · +1 (303) 555-0142SALES · 5 events
Tuesday, May 6
Hi, saw your text — what's the listing price on the Aspen lot?
10:14 AM
Dialer ↗ Outbound 2:14 · Voicemail left 10:18 AM
Left you a quick voicemail with details. Best time to call back?
10:19 AM · Sarah K.
BLAST · spring-aspen-warmHey Steve — quick note that the lot tour next Saturday has 2 spots left. Want one?
2:30 PM · Auto blast
Wednesday, May 7
Softphone ↘ Inbound 5:42 · Qualified 9:02 AM
Thanks for the call — please send the appointment confirmation when you can.
9:11 AM
Inbound (tf) ↘ Voicemail 0:34 · Missed 3:47 PM
Source key
Dialer
Campaign dialer (CallSession)
Softphone
Personal call (PersonalCallSession)
Inbound (toll-free)
Pool / pickup line (InboundCall)
B
Blast SMS
Dashed border + campaign tag

Pros

  • Maximum density — long histories still scrollable
  • SMS remain the visual focus, calls feel like annotations
  • Source label always visible without colour-reliance

Cons

  • Inline player is cramped; full scrubber needs a hover/click reveal
  • Recording playback feels secondary, not first-class
  • Source dot + label combo is harder on colour-blind users without the label text
Direction B — Labeled call card with inline player
Each call is a small card with a pill-shaped source badge ("Dialer", "Softphone", "Inbound"), direction arrow, duration, disposition tag, and an inline RecordingPlayer with a real progress bar. Heavier on screen but recordings feel first-class.
Recommended overall
Steve Montgomery · +1 (303) 555-0142SALES · 5 events
Tuesday, May 6
Hi, saw your text — what's the listing price on the Aspen lot?
10:14 AM
Dialer ↗ Outbound 10:18 AM
2:14 Voicemail left Sarah K.
0:43 / 2:14
Left you a quick voicemail with details. Best time to call back?
10:19 AM · Sarah K.
BLAST · spring-aspen-warmHey Steve — quick note that the lot tour next Saturday has 2 spots left. Want one?
2:30 PM · Auto blast
Wednesday, May 7
Softphone ↘ Inbound 9:02 AM
5:42 Qualified Sarah K.
1:02 / 5:42
Thanks for the call — please send the appointment confirmation when you can.
9:11 AM
Inbound Voicemail 3:47 PM
0:34 No agent (after-hours)
0:00 / 0:34
Source key
Dialer
CallSession
Softphone
PersonalCallSession
Inbound
InboundCall (toll-free)
Voicemail
Stacked when no live agent answered
Blast SMS
Dashed border + campaign tag

Pros

  • Recording playback is first-class — real scrubber and timestamp
  • Source + voicemail + disposition all visible without click
  • Cards line up cleanly with SMS bubbles; thread reads like a story
  • Easy to add download button or share later

Cons

  • ~60–80px per call card vs ~28px row — fewer events per screen
  • Two long voicemails in a row visually dominate a short SMS exchange
  • Player widgets in a long thread may feel chrome-heavy
Direction C — Centred timeline marker
Calls render as centred chips on a horizontal divider, the way Slack shows "joined channel" or Stripe shows charge timeline events. Strong visual break from SMS — instantly clear "this is a non-SMS event". Playback opens an overlay player, not inline.
Alternate
Steve Montgomery · +1 (303) 555-0142SALES · 5 events
Tuesday, May 6
Hi, saw your text — what's the listing price on the Aspen lot?
10:14 AM
Dialer call ↗ 2:14 · Voicemail left 10:18 AM
Left you a quick voicemail with details. Best time to call back?
10:19 AM · Sarah K.
BLAST · spring-aspen-warmHey Steve — quick note that the lot tour next Saturday has 2 spots left. Want one?
2:30 PM · Auto blast
Wednesday, May 7
Softphone call ↘ 5:42 · Qualified 9:02 AM
Thanks for the call — please send the appointment confirmation when you can.
9:11 AM
Inbound (voicemail) ↘ 0:34 3:47 PM
Notes
Calls are visually between messages, not among them. Click play opens a modal player at the top of the pane so the thread doesn't reflow.

Pros

  • Strongest visual separation — never confuses a call with an SMS
  • Most compact when there are many calls in a row
  • Plays well at lower densities

Cons

  • Playback requires an extra click + modal — not first-class
  • "Between messages" implies the call isn't part of the dialogue, but it IS part of it
  • Less room for disposition / agent metadata

Notes baked in across all three directions: