Import and sync data sources
Sources bring people and events into your workspace. Some are one-time imports (CSV), some sync on a schedule (Google Sheets, Excel), some stream continuously (SDKs, webhooks, databases). Create any of them under Sources → New source in the dashboard.
Two ideas every import shares:
- Import as People or Events. People updates profiles (an
identifyper row); Events records something that happened (atrackper row, with an event name you choose). - The identifier column. Pick which column identifies the person — an email, a user ID, or a phone number — and Origamy merges rows into the right profiles instead of creating duplicates.
CSV import
Section titled “CSV import”One-time upload, up to 50 MB / 250,000 rows.
-
Drag a
.csvinto the uploader (delimiter is detected automatically; a preview shows the first rows). -
Choose People or Events (for events, set the event name).
-
Pick the identifier column and how to treat it (email / user ID / phone).
-
Include or skip each column and rename the traits it maps to, then import.
The file uploads directly from your browser to storage — it never sits on a shared server unencrypted.
Google Sheets
Section titled “Google Sheets”A living import: pick a spreadsheet once, and Origamy re-syncs it on a schedule — perfect for lists a teammate maintains by hand.
-
Click Authorize with Google. A popup asks you to sign in and approve access.
-
Pick the spreadsheet with the Google file picker, then choose the worksheet tab.
-
Map columns exactly like a CSV import (identifier, include/skip, trait names).
-
Choose the sync schedule: every 15 minutes, hour, 6 hours, or daily.
Microsoft Excel (OneDrive)
Section titled “Microsoft Excel (OneDrive)”Same flow as Sheets for .xlsx workbooks in OneDrive:
-
Click Authorize with Microsoft and approve the popup. (On a company tenant your Microsoft 365 admin may need to grant consent — the wizard surfaces Microsoft’s exact message if so.)
-
Search and pick the workbook, choose the worksheet, map columns, set the schedule.
WhatsApp replies
Section titled “WhatsApp replies”Turns inbound WhatsApp messages into track events on the sender’s profile — so replies can
drive journeys, segments, and follow-ups.
Prerequisite: a connected WhatsApp provider (Twilio or Meta). There is nothing to configure beyond that — creating the source switches capture on, and replies to your WhatsApp number start appearing as events within seconds.
Developer sources
Section titled “Developer sources”For continuous, programmatic data:
- Web SDK — the snippet +
origamy.track()for sites and web apps. - Server SDKs — Node.js, Go, PHP.
- HTTP API — send events from anywhere with the Ingestion API.
- Webhook source — give any third-party system a URL to POST events to. Pick a path when creating the source; the source page then shows the full URL to paste into the sending system. Set a signing secret if the sender supports HMAC-SHA256 signatures — Origamy rejects deliveries that don’t match.
Database CDC
Section titled “Database CDC”Stream row changes from your database as events. Each engine needs a little server-side preparation before connecting:
PostgreSQL (logical replication) — set wal_level = logical (on RDS:
rds.logical_replication = 1) and restart if it changed; connect with a user that has the
REPLICATION attribute plus SELECT on the streamed tables; create a publication matching the
name you enter in the form (e.g. CREATE PUBLICATION origamy_publication FOR ALL TABLES;).
Connection string: postgresql://user:pass@host:5432/dbname.
MySQL (binlog) — set binlog_format = ROW and binlog_row_image = FULL; grant the user
REPLICATION SLAVE, REPLICATION CLIENT, and SELECT. DSN: user:pass@tcp(host:3306)/dbname.
Snapshot mode Initial reads existing rows once before streaming; Never starts from the
current binlog position. Keep binlog retention longer than any expected downtime — if the binlog
rotates past the stream position, the connector cannot resume.
MongoDB (change streams) — requires a replica set or Atlas; a standalone mongod does
not support change streams (for dev, convert to a single-node replica set). A user with the
read role on the database is enough. Leave Collection empty to stream every collection.
