When you have a lot of data to add at once — a spreadsheet of holdings, a year of activity, a price history — you don’t have to type it in record by record. Trac’s batch import reads a spreadsheet, checks it against the fields it expects, lets you fix anything that doesn’t line up, and then creates (or updates) all the rows in one go.

This guide walks through importing data from a spreadsheet. To attach documents (PDFs, statements, images) to a holding instead, see Adding Your Data, which covers individual and batch file uploads.

If the data lives at a bank or brokerage you can sign in to, you may not need a file at all: Connections links the institution so its accounts and transactions arrive on their own. Importing is for the history and the holdings no connection can reach.


Before you start#

Batch import is an admin feature. You bring your data in as a spreadsheet:

  • CSV for a single kind of data (one record type per file).
  • Excel workbook (.xlsx) when you’re importing Activities or several kinds of data together in one file (the Multi option, below).

The safest way to get the columns right is to download a template for the kind of data you’re importing — the import screen offers one — and fill in your data underneath the supplied headers.


Open the import screen#

  1. Go to the To Review screen (the app’s home/dashboard).
  2. Tap the Tools button.
  3. In the Tools dialog, under Import, tap Import Data.

This opens the batch-import screen and pops up the Import dialog where you choose what you’re importing.

(The Import Files button next to it, also under Tools, is for uploading documents to review, not for spreadsheet data.)


Choose what to import#

The Import dialog has a “What do you want to add?” dropdown. Pick one:

  • Portfolio Items — your holdings (assets, cash accounts, liabilities, brokerage accounts).
  • Activities — the money activity on your holdings (buys, sells, dividends, and so on), with their postings and lot activities (see Activities).
  • Price Updates — recorded prices for your holdings.
  • Owners — the people and legal entities that hold your assets.
  • Updates — narrative or sentiment updates on a holding.
  • Metrics — named numeric values recorded against a holding over time.
  • Multi — several of the above at once, from a single Excel workbook.

What you choose changes the rest of the dialog: most types take a CSV file, while Activities and Multi take an Excel workbook.


For every type except Multi, the dialog shows a Download Template button. The template has exactly the column headers Trac accepts, so filling it in is the surest way to avoid header problems later.

Two notes appear above the button for the single-type imports:

  • * denotes a required field — columns marked with an asterisk must have a value in every row.
  • “Add an Update ID column if you want to update instead of create new” — see Updating existing records below.

The required columns for each type are:

  • Portfolio Items — Name is required. Other accepted columns include Type, Description, Parent ID, Commitment, Ownership, Tags, Links, Attributes, and more.
  • Price Updates — As of Date, Source Type, and Price are required, plus a Parent ID (the holding the price is for).
  • Owners — Type and Name are required. Other accepted columns include Description, Account Number, and Parent ID.
  • Updates — Parent ID and As of Date are required, plus optional Description and Sentiment.
  • Metrics — Parent ID, As of Date, Name, and Value are all required.

For Activities, the Download Template button gives you an Excel workbook with the sheets the bundle expects (see the next section).


Importing Activities#

Choose Activities and the dialog asks for an Excel workbook with sheets named exactly:

  • Activities
  • Postings
  • Lot Activities

Postings and Lot Activities are optional — you can import envelope-only events with just an Activities sheet. Within the workbook, Postings and Lot Activities reference their Activity by the value in that event’s ID column; Trac links them up for you after the events are created.

Required columns:

  • Activities — Activity and Trade Date.
  • Postings — Activity ID, Account ID, Amount, and Direction.
  • Lot Activities — Activity ID, Activity Type, Portfolio Item ID, and Lot ID.

Importing several types at once (Multi)#

Choose Multi to import a whole workbook in one pass. Trac reads only sheets named exactly:

  • Portfolio Items
  • Children
  • Price Updates
  • Owners
  • Updates
  • Metrics
  • Activities
  • Postings
  • Lot Activities

Sheets with any other name are ignored. Use the per-type templates as a guide for each sheet’s columns.


Provide the data#

For a single CSV type, you can either:

  • Upload a file with the file picker, or
  • Paste from Clipboard — paste rows copied straight out of a spreadsheet into the text box.

For Activities and Multi, upload the .xlsx workbook with the file picker.

Once you provide a file (or pasted text) and confirm, Trac reads the data and moves you into the review table.


Fix headers Trac doesn’t recognize#

If your spreadsheet has a column header Trac doesn’t know, a Fix Headers dialog appears: “You have unrecognized headers. Please map them to an existing column.”

For each unrecognized header you can:

  • Map it to one of Trac’s accepted columns using the dropdown next to it, or
  • Drop it with the trash icon, so that column is ignored on import.

You have to resolve every unrecognized header before continuing. Starting from a downloaded template avoids this step entirely.


Fix values Trac doesn’t recognize#

After headers, Trac checks the values. If a field expects one of a set of known values and finds something else, a Fix Values dialog appears: “You have unrecognized values. Please map them to an existing accepted value.”

For each unrecognized value you can:

  • Map it to a valid option from the dropdown, or
  • Use the trash icon to apply a sensible fallback (for example, 0 for a required number, or today’s date for a required date).

Empty cells show up as (empty) so you can decide what they should become.


Review and edit before saving#

Your rows now appear in a table, one row per record:

  • Rows with problems (a missing required value, a number that isn’t a number, a date that won’t parse) are flagged with an error message so you can find and fix them.
  • You can edit a cell directly, delete a row with its trash icon, or select several rows and use Batch Change to set a field the same way across all of them.

For Activities and Multi imports, the table has a tab per sheet at the top; switch tabs to review and fix each sheet.


Save the import#

When the table looks right, tap Save. Trac creates your records and shows a confirmation with how many rows were saved.

Partial save. If some rows are still invalid, Trac saves the valid ones and keeps the problem rows on screen so you can fix and save them separately — one bad row doesn’t block the rest. You’ll see a message such as “Saving N valid row(s); skipped M blocked row(s).”


Updating existing records instead of creating new#

By default, every row creates a new record. To update existing records instead, add an Update ID column and put the existing record’s ID in it. Rows with an Update ID change the matching record rather than creating a duplicate. This works for every import type.


A note on grouping and provenance#

The Activities import dialog repeats this note, and it’s worth knowing before you build the workbook: Trac groups imported rows by their Activity ID, and Source Upload ID records which uploaded document a row came from. The legacy transaction Source ID is not an accepted import field — older templates may still carry a “Source ID” column, but use Activity ID for grouping and Source Upload ID for upload provenance.


Troubleshooting#

  • “You have unrecognized headers.” A column header doesn’t match what Trac expects. Map each one in the Fix Headers dialog, or download a template and copy your data under its headers.
  • “You have unrecognized values.” A field got a value outside its known set. Map each value in the Fix Values dialog, or trash it to apply the default.
  • A row is flagged with an error. Check that all *-required columns are filled, that numbers are numbers (currency symbols and commas are accepted), and that dates are real dates. Fix the cell and save again.
  • A Parent ID / Update ID isn’t found. IDs must point at records that already exist, or at rows being created in the same import. Confirm the ID is correct.
  • Only some rows saved. That’s a partial save — the valid rows went in and the flagged rows stayed behind for you to fix.
  • Activities workbook rejected. Check that the sheet names are exactly Activities, Postings, and Lot Activities, and that the Activities sheet has Activity and Trade Date in every row.

Exporting#

To get data back out of Trac — as CSV or PDF — see Exporting data.