the three-tab problem
running outreach across email, Instagram, and Twitter usually means three tabs, three notification streams, and three different mental models for "what's the state of this conversation."
the moment a thread crosses channels - they DM'd back, then asked you to email, then followed up on Twitter a week later - the trail breaks. you're rebuilding context every time you open a tab.
one conversation per contact
iris keys conversations to the contact, not the channel. a reply on Instagram, an email back, a Twitter DM later all attach to the same thread. you see the full back-and-forth in order, regardless of which channel each message came in on.
replies route in automatically: email replies thread to the originating campaign, Instagram DMs match by handle, Twitter DMs match by user ID. nothing for you to wire up.
what shows up in the inbox
each conversation row shows:
- the contact and which campaign they're part of
- the channel of the latest message and whether it was inbound or outbound
- delivery and read state where the channel supports it
- iris's drafted follow-up, if one is queued
you can filter by campaign, channel, status, or just type a name. the contact view rolls up every conversation that contact has ever had with you across every campaign - useful when someone replies six months later and you need the full history.
human in the loop, by default
iris drafts the next message, but it doesn't send it on its own. every reply gets a suggested follow-up that you read, edit, or discard. the inbox is built around approval - iris does the typing, you do the choosing.