How syncing works
Your contacts are the users in your own database. Rowsend connects with a login that can only read, copies your users to your computer, and keeps that copy up to date. It never writes to your database.
Contacts only come from your database
Section titled “Contacts only come from your database”There’s no CSV import and no way to add a contact by hand. That’s on purpose:
- Every contact signed up for your product, so bought or scraped lists can’t hurt your sending reputation.
- The copy on your computer can always be rebuilt from your database. Losing a computer loses no contacts.
- Each teammate’s computer syncs its own copy, so contact data never passes through Rowsend Cloud.
To email someone, add them to your database.
What Rowsend reads
Section titled “What Rowsend reads”On SQL databases (Postgres, MySQL, MariaDB), Rowsend reads a view that you create with the setup SQL it gives you. The view must return three columns:
| Column | What it is |
|---|---|
id |
Your user’s id. Numbers and text both work. |
email |
Their email address |
updated_at |
When the row last changed. Each sync reads rows changed since the last one. |
These columns are optional and have their own place in Rowsend: name, created_at (signed up), last_sign_in_at and email_confirmed_at. Any other column becomes a custom field you can filter on and put in emails.
You don’t have to write the view yourself. The connect dialog lists your tables and columns so you can pick them, including a second table to join, such as a profiles table. It writes the SQL for you.
MongoDB and Firebase have no views. You pick the fields in Rowsend instead. See MongoDB and Firebase.
The login
Section titled “The login”Rowsend reads with a login that can’t change anything:
- On Supabase, Postgres, MySQL and MariaDB, the setup SQL creates a login called
rowsend_reader. The SQL contains only a hash of its password, never the password, so it’s safe to paste into an SQL editor or hand to a teammate. - On Neon, PlanetScale and MongoDB, you create a read-only login yourself and paste its connection string. Before connecting, Rowsend checks that the login can’t write, and refuses one that can.
Rowsend stores the login on your computer, encrypted with your system keychain.
When syncs happen
Section titled “When syncs happen”Rowsend syncs every connected project when it starts, then on a schedule, every 15 minutes by default. Sync now on the Contacts page syncs straight away.
- To change the schedule for every project, open Settings → Companion → Contact sync.
- To give one project its own schedule, or turn its syncing off, open Project settings → Database → Sync this project.
Choices run from every 5 minutes to once a day.
Rowsend has to be running to sync. Contacts deleted from your database disappear from Rowsend at the next sync.
Project settings → Database also shows the last 20 syncs, with how many contacts each one added or updated and removed, and any error.

Unsubscribes stay in Rowsend
Section titled “Unsubscribes stay in Rowsend”Unsubscribes, bounces and spam complaints live in Rowsend, not in your database, so a sync never undoes them. They’re kept by your user’s id: a contact who’s deleted from your database and later comes back with the same id is still unsubscribed.
Someone can unsubscribe from everything, or only from one topic, such as product updates. The Subscription column on the Contacts page shows where each contact stands. Click a contact to unsubscribe or resubscribe them yourself, from everything or one topic at a time.
Changing what Rowsend reads
Section titled “Changing what Rowsend reads”To add or remove a field, open Project settings → Database and click Edit view (or Edit fields for MongoDB and Firebase). On SQL databases you run the updated SQL yourself, the same way as when you connected. Rowsend keeps the same login and resyncs every contact. You don’t need to disconnect.
Disconnecting
Section titled “Disconnecting”Disconnect in Project settings → Database deletes Rowsend’s copy of your contacts from this computer and forgets the login. Nothing in your database changes. To remove the login too, delete it in your database: drop role rowsend_reader; on Postgres, or drop user 'rowsend_reader'@'%'; on MySQL and MariaDB.
Can we count your visit?
Google Analytics shows us which pages help. It only sets cookies if you allow it. Privacy policy