Setting up how changes push back to your source

Updated Markdown

Sync Changes pushes your edits back to Google Sheets, HubSpot, Notion, Salesforce or Attio. (Lists from Airtable and Pipedrive can be reloaded from their source, but not written back.) Before the first sync, Configure Sync Settings asks for two things: which field uniquely identifies each record, and what to do if the source changed a field you also edited.

The Primary Key Field#

ListPlus needs one field that uniquely identifies each record — usually an id field or an email address — to match a ListPlus row to the right record in the source. If the list was created by connecting that source, ListPlus tries to detect this field automatically from the import; it also offers common suggestions per service (for example id, email or hs_object_id for HubSpot). The dropdown offers the detected field first, then the usual key fields for that service. Pick a column with a unique value in every row.

Attio#

A list can be written back to Attio only when it was imported from Attio "People" or "Companies". A list imported from "A list" (the entries of an Attio list) cannot be written back, and the Changes panel does not offer Sync Changes for it. The key column is _attio_id, preselected in the sync settings.

ListPlus writes text, number, date and select fields; the name (also "First name" and "Last name" on their own); the first e-mail ("Email"), the first phone ("Phone") and the first domain ("Domain"); and the location parts "City", "State", "Postal code" and "Country". It does not write "Company" and other references, "Other emails", "Other phones", "Other domains", or fields Attio maintains itself (interaction dates, "Created at", connection strength). Rows added in ListPlus are not created in Attio.

Attio refuses some values: a select value must be an existing option in Attio, a phone number must start with "+" and the country code, and "Country" must be the two-letter code (for example DE). When Attio refuses one value, nothing of that record is written and the change stays open with Attio's reason. Fix the value and sync again.

Handling conflicts#

If the source's value for a field changed since you edited it in ListPlus, that field is a conflict. You choose how to handle these in Configure Sync Settings:

  • Keep source value (default) — your edit for that field is not pushed; the source's current value stays as is.
  • Keep my value — your edit is pushed and overwrites the source.
  • Ask me each time — the field is held back and not pushed.

With Keep source value or Ask me each time, conflicting fields are not pushed, and the sync result shows how many conflicts were detected. The Settings card summarises the choice as "Source wins", "List wins" or "Manual".

You can reopen these settings any time from Change Settings in the Settings card (Changes panel → Sync Changes), without losing anything you've already synced.

Only the workspace's owner and admins see Sync Changes, so only they can configure and run it; the changes are written under the login of the person who connected the account.

Related topics: sync-overview (which sources support sync back, updates existing records only, who can sync) · connect-crm-and-sheets.

For Google Sheets two checks protect your sheet: a cell that holds a formula is never overwritten (that change stays open and says so), and if rows were sorted or inserted while the sync was writing, the rows concerned are reported instead of counted as written — check them in the sheet.

FAQ#

How does ListPlus know which row matches which record when syncing back?#

You set a Primary Key Field in Configure Sync Settings — a field like the record's ID or email that uniquely identifies it in the source. ListPlus uses that field to match each ListPlus row to its record.

What happens if the source record changed since I edited it?#

You choose in Configure Sync Settings: Keep source value (the default), Keep my value, or Ask me each time. With Keep source value or Ask me each time, conflicting fields are not pushed, and the sync result shows how many conflicts were detected.

Does ListPlus suggest a primary key field for me?#

Yes — if the list came from a connected source, ListPlus tries to detect a unique field from the import and also suggests common options for that service, such as id or email. The dropdown lists the detected field first, followed by the usual key fields for that service (for example id or email).

If I choose "Keep source value", is my edit lost?#

No — not in ListPlus: your value stays in the cell. It just isn't pushed for that field, so the source keeps its current value; a later Reload would bring the source value into the list (see sync-overview). Non-conflicting fields are still pushed.

What does "Keep my value" do?#

It pushes your ListPlus edit and overwrites whatever value is currently in the source for that field, even though the source changed since you last saw it.

Where do I set the primary key and conflict handling?#

Open the Changes panel and click Sync Changes. In the Settings card, click Configure Sync Settings, then Save & Enable Sync; later the same card shows Change Settings to review or update them — this doesn't undo anything already synced.

Does Sync Changes push every field, or only the ones I changed?#

Only the specific fields you actually edited in ListPlus are compared and pushed; fields you never touched in that row are left alone in the source. Rows with an empty Primary Key Field value, and rows you added in ListPlus, are skipped.

Can I write my changes back to Attio?#

Yes, for lists imported from Attio "People" or "Companies" — the key column is _attio_id, preselected in the sync settings. A list imported from "A list" (the entries of an Attio list) cannot be written back.

Which Attio fields does Sync Changes write?#

Text, number, date and select fields, the name ("First name" and "Last name" too), the first "Email", "Phone" and "Domain", and the location parts "City", "State", "Postal code" and "Country". "Company" and other references, "Other emails", "Other phones", "Other domains" and fields Attio maintains itself (interaction dates, "Created at", connection strength) are not written; rows added in ListPlus are not created in Attio.

Why does an Attio change stay open instead of being written?#

Attio refused a value, so nothing of that record was written and the change stays open with Attio's reason. Common causes: a select value that is not an existing option in Attio, a phone number that does not start with "+" and the country code, or a "Country" that is not the two-letter code (for example DE). Correct the value and sync again.