Past conversations and privacy
Owners want their insight boards to explain the business from day one, including chats from before Oqim or before the AI was switched on. Oqim can analyse those past conversations — and does it without ever letting an imported message cause a reply. This page covers what is imported, what is deliberately left out, and what leaves the platform.
Where past conversations come from#
- Conversations Oqim already stored — an account that has been sending campaigns for a year, with the AI switched on only now.
- History imported from the platform — messages from before the account was connected. Telegram through the account's own session, Instagram and Facebook through Meta's Conversations API.
Both are analysed the same way as live ones, and both are inert: reading them changes nothing about whether a reply may be sent. The analysis itself is described under Business insights.
Importing history#
An import never touches a chat's read state on the platform — importing is not reading. Progress lives in one shape on every channel: status (IDLE, RUNNING, DONE, FAILED, CANCELLED), since, chats_found, chats_imported, chats_skipped_personal, messages_imported, start and finish times, and the error when there is one. On Instagram and Facebook chats_skipped_personal is always zero — those channels have no contact list to exclude.
The console has an “Import past chats” section on a Telegram account, and a history import on a connected account's page, with progress and a cancel.
Imported history stays inert#
An imported message is stored with the platform's own timestamps and marked as imported. It is never live again: it is history Oqim can analyse, and nothing more.
- Opt-outs found in history still count. This is the one deliberate exception, and it is conservative: an opt-out request found in imported messages marks the conversation opted out, because honouring a stop request late is better than ignoring it.
- Duplicates are dropped. Messages are matched by the platform's own message id, so importing the same period twice only adds what was missing.
- A finished import is a signal, not a send.
channels.history.importedcarries the account, the channel and the counts of chats and messages imported, and it is what starts the analysis of those past conversations.
Personal chats#
A business's Telegram account is also somebody's phone. Personal chats — family, friends, suppliers — are never imported, never answered and never analysed, and they are never sent to a model.
PUT /ai/conversations/{id}/personal takes {personal: true|false} and marks a single conversation. A personal conversation is hidden from the AI, the analysis and the boards, is excluded from the Seller entirely, and loses the analyses it already had. Its messages stay unless somebody deletes them. The inbox still shows it — to owners and admins only, never to other roles, and never to the AI.
What the AI is allowed to see#
Analysis covers the private chats of accounts that have analysis switched on. It never covers groups, and never a conversation marked personal. The same scope governs the Seller, the conversation intelligence and the case analysis — they read one flag, so they cannot disagree about which chats are in play.
At rest
- Message bodies are sealed with the application key and bound to their conversation, so a copied row is useless in another organization or another thread. Only the API and the worker hold the keys.
- Board narratives and conversation explanations — the text written from message content — are sealed the same way.
- Metadata (direction, timestamps, platform ids, lengths) stays in the clear, because the boards count and group by it and it says nothing about what was written.
To JEV
- Sharing data with TypeSafe is an opt-in per organization, disclosed on the JEV settings screen. Without it, Oqim does not call JEV at all.
- What JEV receives is masked text and a minimal structured state: the current message, a short summary, the current stage and the known needs — never the whole history. Names, phone numbers and handles are masked by the JEV package before the request leaves.
- Case analysis and comment classification follow the same rule: JEV is given masked text, never an archive.
To your own model
- The reply is written by the provider you connect, under your provider's terms. What reaches it is the material the reply needs: the recent messages, the summary, the retrieved knowledge, the identity and profile settings, and the offer catalog.
- Analytics, scores, flags, other conversations and other organizations are never part of that request. Nothing about a personal chat is either.
- The companion feature, the AI writing assistant, is stricter still: it sends only the brief or the message text you are editing, and never recipient data.
Disconnecting and deleting#
- Disconnecting an account unsubscribes its webhooks, drops its tokens and marks it disconnected. Conversations and imported history stay, and remain subject to the rules above.
- Meta's callbacks are honoured. A deauthorize request, or a data-deletion request that Meta signs, disconnects the account; a data-deletion request also deletes that person's messages and profile data and answers Meta with a confirmation code and a status URL.
- Nothing is re-routed. A restricted account stops everything, the Seller included; Oqim does not move a conversation to another account to keep it going.
The short version#
- Imported history is analysed and never answered.
- Opt-outs found in it are honoured anyway.
- Personal chats are never imported, answered or analysed.
- Reading in Oqim never marks anything read on the platform.
- Message text is sealed at rest, masked before it reaches JEV, and sent to your model only as much as a reply needs.
- No account ever writes to somebody who did not write first — see Channels.