Skip to main content

Search the archived conversation timeline for sales/support handover

Handovers fail in the same place everywhere: support solved the problem months ago, sales can’t find the thread, and the customer has to retell their story on the next call. Devotel Orbit’s searchable archive closes that gap on Support → Timeline — a free-text search over your workspace’s archived conversations, the permanent historical record, across every connected channel. Support finds the closed thread; sales walks in already oriented. Use this surface when a question reaches past the live queue:
  • “What did we promise this account during the outage in March?” — a message-body search over archived threads, not a contact-name lookup.
  • “Pull everything this customer ever told us before the renewal call.” — a filtered, archived-only slice, ready to export.
  • “Has anyone handled this case before, on any channel?” — archive search answers from the whole history, even threads closed or archived a year ago.
Open it from Support → Timeline in the dashboard sidebar. The same lookup is exposed over the API at GET /conversations/archive/search, so the exact search your team runs on-screen can be run by your own tooling. For the per-file exports this page leads into, see Export conversations as signed IETF vCon containers (the signed handover artifact) and Conversation archive (the CSV/JSON bulk export).

What the unified timeline shows

The archive timeline reads one consistent flow of conversation history: every thread your workspace has moved out of the live queue into the archive, on every channel — SMS, WhatsApp, email, RCS, Viber, Instagram, Messenger, LINE, Telegram, web chat, voice, video, and the AI-agent surfaces. Each result row carries the contact, the channel, the status, the last message snippet, and the timestamps your team uses to place the thread in time. Two properties make it the handover surface, not just a history viewer:
  • Archived only, enforced server-side. The search is confined to archived conversations no matter what non-archived status filter a client sends, so an open or merely closed thread can never masquerade as settled history on this surface.
  • Archive rows deep-link into the canonical inbox thread. The timeline is a reader. Select a result and the deep link opens the same conversation in the inbox (/inbox?id=<conversation id>), where the full transcript loads and the normal conversation tools apply. That is the orientation step in a handover: find it here, hand the link to the owner.

Searching archived conversations

Type the words you remember — no field prefixes, no quoting syntax, no case sensitivity to manage. Archive search matches two ways at once:
  • Message bodies — server-side full-text search over the complete message history, with per-term prefix matching. refund surfaces threads where any message on any channel used the word; a punctuated identifier such as a case id or an email address matches the tokens that were actually stored. Adding more words narrows the match.
  • Contact identity — the same text is matched as a substring against the contact’s name, phone number, and email address, so a phone prefix or an email domain finds their threads even when the messages themselves never mention it.
The accepted query is a natural-language term up to 200 characters. Send it as q; the legacy search alias does the same thing for older integrations, and q wins when both are present. On top of the free text, every filter axis the unified inbox list accepts narrows the archived slice — channel, date range, assignee, tags, segment, unread state, direction of the last message — applied on top of the archived confinement, never instead of it. A contradictory status=open on the request does not pierce the archive; the endpoint replaces it and still returns only archived threads.

Result shape

The response is cursor-paginated (limit 1–100, default 25). Follow pagination.cursor while has_more is true. Each item is one archived conversation row — contact, channel, status, timestamps, last message snippet — and pagination survives an archived thread whose last-message timestamp is empty, so a page boundary can never stall with has_more: true and a null cursor.

Handover workflow: support finds it, sales owns it

The repeatable loop between a support agent and a sales owner:
  1. Search. The support agent opens Support → Timeline and searches the archive with plain words: the customer’s company name, an order id, or a phrase from the original complaint. Result: the closed/archived thread, with its channel and timestamps.
  2. Verify. Select the result row — the deep link opens the same thread in the inbox with the full transcript, oldest first. Confirm this is the thread the handover is about; quote its reference when handing over.
  3. Orient. Share the deep link with the sales owner. The owner opens the identical thread directly — no re-searching, no screenshots, no “which ticket was it again.”
  4. Hand over. Decide the handover shape: drop the deep link into the CRM note for a quick orientation, or export the slice when the owner needs an artifact (below).
Because the same archive/search endpoint powers tooling, a step 2–3 that’s repeated often can be scripted: the CRM calls GET /conversations/archive/search?q=<account> itself and stores the conversation links against the account record.

Export interaction: when a search result becomes a signed vCon

A timeline search result and a handover export answer different questions — search finds the thread; export packages it. Reach for the artifact when the handover has to be proven, not just read:
  • CSV or JSON slice — when the owner needs the filtered result set as a file (CRM import, compliance summary, transcript pack), the archive export takes the same filters you’re looking at and downloads exactly that slice from GET /conversations/export. See Conversation archive.
  • Signed vCon — when one conversation must leave the workspace as a tamper-evident artifact — an external AI system, a carrier, a compliance archive — export it from GET /conversations/:id/vcon. The signed container binds the parties, dialog, attachments, and analysis, and any change to the bytes breaks verification. The decision guide is Export conversations as signed IETF vCon containers.
Rule of thumb: orient a colleague with a deep link; hand an external party a file; hand a party who must verify the file a signed vCon.

Example queries

Each request carries an X-API-Key header; live keys are prefixed dv_live_sk_. The endpoint is GET https://api.orbit.devotel.io/api/v1/conversations/archive/search. Find an account’s archived threads by a remembered phrase:
Everything archived from one contact, narrowed by channel and date:
Page through a longer history:
Same search, delivered as an export slice (CSV or JSON):
A search that returns nothing usually means the thread is still live — the archive only holds archived conversations. Re-run the same term against the unified inbox list, and the thread appears as soon as it’s archived.

Permissions and page states

  • Permissions: the archive search reads through the dashboard’s own conversation access, so any member who can read the inbox can search the archive — the page and the endpoint carry the same conversations:read gate the inbox and the export already use. Archive rows are restricted in exactly the way your inbox rows are; no extra role is introduced by this surface.
  • Empty result: a search over archived conversations returns an empty list when nothing in the archive matches — not an error. Clear the filter bar to reset, or widen the date range.
  • Further history: the archive is append-mostly — archived rows don’t change out from under a search, so cursor pages stay stable while you page through the older history.

See also