The contract
Three guarantees hold for every connector, prebuilt or custom:- Read-only, always. No connector writes to a source system. See Security.
- Idempotent ingestion. Every record is deduplicated by content hash; re-running a sync never creates duplicates.
- Observable syncs. Every run produces a sync record with per-stage counters, visible on the connectorâs detail page.
| The connector supplies | Seyn guarantees |
|---|---|
| A stable record ID per item | Content-hash deduplication across every sync |
| The raw payload, verbatim | Verbatim preservation as the bottom of the provenance chain |
| A source timestamp | Event time = source time, not ingestion time |
| A mapping from payloads to events (who did what to which entity, when) | Actor identity resolution, the event store, extraction, querying |
Build your own
A custom connector is that contract, implemented by you, over the Ingestion API:- Register a source.
POST /v1/sourcesreturns asourceIdfor the system youâre bringing in. - Push records in batches.
POST /v1/ingesttakes records shaped as{ recordId, entityType, payload, sourceUpdatedAt }, up to 500 at a time. Full dumps work; incremental feeds (everything since a cursor) make re-syncs cheap, and content-hash dedup means re-sending an unchanged record is a no-op. - Seyn does the rest. Dedup, normalization into events, identity resolution, provenance linking, extraction, and querying treat your records exactly like records from a prebuilt connector. Same chain, same receipts.
Early access. The Ingestion API and the contract behind it are stable and are the same path our own connectors use, but ingestion requires an API key with the
ingest scope, granted per organisation during alpha. Request access and weâll enable a write-scoped key and onboard your source together.Prebuilt connectors
Prebuilt connectors add what generic ingestion canât know: each sourceâs auth flow, delta semantics, edit and delete behaviour, and quirks.| Connector | What it ingests | Auth | Sync model |
|---|---|---|---|
| SharePoint | Document libraries, with folder-level allow-list policies | Microsoft OAuth | Delta sync, per-drive checkpoint |
| Outlook | Email, optionally attachments | Microsoft OAuth | Delta sync, per-folder checkpoint |
| Outlook Calendar | Meetings, invites, and attendees | Microsoft OAuth | Delta sync |
| Microsoft Teams | Channel messages and replies; optional meeting transcripts In testing | Microsoft OAuth | Delta sync, per-channel checkpoint |
| Google Drive | Documents and shared drives | Google OAuth | Incremental change feed |
| Gmail | Email and threads | Google OAuth | Incremental history sync |
| Google Calendar | Meetings, invites, and attendees | Google OAuth | Incremental sync tokens |
| Slack | Channel messages and threads | Slack OAuth | Incremental |
| Document Inbox | Self-serve upload: loose files or ZIP archives | Upload, no credentials | On upload. See Documents |
How delta sync works
The Microsoft connectors use Graph delta queries: after the initial full sync, each run asks only âwhat changed since my last checkpoint?â- Atomic checkpoints, scoped small. The delta token is stored per drive, per channel, or per folder, and committed atomically with the records it covers. A crash mid-sync resumes from the last consistent point: never re-ingesting, never skipping.
- Failure isolation. One channel or drive failing doesnât abort the others; itâs recorded in the sync run and retried next time.
- Expired tokens self-heal. When the source invalidates a delta token, the connector transparently restarts a full enumeration, and content-hash dedup makes that resync cheap and duplicate-free.
- Edits and deletes propagate. Edited messages update their event in place; deletions soft-delete downstream events rather than breaking the provenance chain.
Honest limitations
- Teams: standard channels only. Private and shared channels sit behind different permission models we havenât validated yet.
- Teams replies have no delta endpoint (a Microsoft Graph limitation), so replies are re-pulled when their parent changes.
- Protected APIs. Some Teams data sits behind Microsoftâs Protected API approval. If a tenant lacks approval, the sync surfaces an explicit terminal status naming the admin action required. It doesnât silently return partial data.
- System messages are filtered. Joins, renames, and app-install notices are noise for process extraction and are dropped at ingestion.
Connector lifecycle
Planned: auto-sync. Per-connector schedules, opt-in post-sync knowledge rebuild, and staleness indicators are specified and coming. See Status.
Common mistakes
| Symptom | Cause | Fix |
|---|---|---|
| Synced data doesnât show up in chat | Sync landed raw records, but no extraction run has processed them yet | Walk the debugging order: sync â extraction â library â query |
| Teams sync ends in a terminal error mentioning consent | The tenant hasnât granted admin consent or Protected API approval | The error names the exact admin action; complete it in the Microsoft tenant and re-run |
| SharePoint sync ingests less than expected | Folder policies are an allow-list; paths outside it are skipped by design | Review the connectorâs folder policy configuration |
| Re-running a sync to âfixâ data created no new records | Content-hash dedup recognised everything. Thatâs correct behaviour | If source data changed, delta sync picks it up; if not, thereâs nothing new to ingest |
Related
Events
The common schema your records are normalized into.
Documents
The deepest connector: parsing, extraction, and the upload inbox.