Skip to content

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 identify per row); Events records something that happened (a track per 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.

One-time upload, up to 50 MB / 250,000 rows.

  1. Drag a .csv into the uploader (delimiter is detected automatically; a preview shows the first rows).

  2. Choose People or Events (for events, set the event name).

  3. Pick the identifier column and how to treat it (email / user ID / phone).

  4. 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.

A living import: pick a spreadsheet once, and Origamy re-syncs it on a schedule — perfect for lists a teammate maintains by hand.

  1. Click Authorize with Google. A popup asks you to sign in and approve access.

  2. Pick the spreadsheet with the Google file picker, then choose the worksheet tab.

  3. Map columns exactly like a CSV import (identifier, include/skip, trait names).

  4. Choose the sync schedule: every 15 minutes, hour, 6 hours, or daily.

Same flow as Sheets for .xlsx workbooks in OneDrive:

  1. 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.)

  2. Search and pick the workbook, choose the worksheet, map columns, set the schedule.

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.

For continuous, programmatic data:

  • Web SDK — the snippet + origamy.track() for sites and web apps.
  • Server SDKsNode.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.

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.