An inbound message whose sender matches no contact is still stored, with match_status 'unmatched'. Because it hangs off no contact it would appear in no row, so a dedicated Unassigned tab lists them with the raw sender, the body, any photo, and a searchable contact picker to attach it.
Also called: unknown number texted me · message from a number not in my contacts · unassigned inbox
- 1recordInbound stores the message first and attempts contact matching afterwards
- 2Unmatched rows come back from fetchInboundIndex in a separate 'unassigned' list
- 3The Unassigned tab badges the unread count and renders each message with a searchable 'Attach to contact…' selector
- 4Attaching writes contact_id and flips match_status to 'matched', and the message joins that person's thread
A text or email from a number nobody had saved belonged to no contact, so it appeared in no row — stored, but invisible, which to the person waiting on a reply is indistinguishable from lost. Unrecognised senders now collect in their own tab, where one click attaches the message to a contact and it joins that person's thread. Nothing is auto-created into the pipeline; a real person decides who the message belongs to.
- Inbound messages from unknown senders silently vanishing
- No way to file a message against the right person after the fact
See it on your own jobs
Twenty minutes, your numbers, no slide deck. We’ll build one of your real buildings in front of you and send you the estimate link at the end — yours to keep either way.
or keep browsing features →