Settings
Import / export
Bulk Excel import and export for every entity, plus per-entity CSV / JSON export.
The Import / Export section is where you bulk-move data into or out of ProductOS. One Excel workbook is both the import template and the export format, so an export can be edited and re-imported.
The workbook
- One tab per entity. Feedback, Themes, Features, External Links, Initiatives, Releases, Outcomes, Outcome Metrics, Accounts, Personas, Products, Modules, Teams, Team Members, Vision & Mission, Objectives, Key Results, SWOT, Positioning, Pricing Tiers, Competitors, Market Trends, Market Signals, Channels, Messaging Frameworks, Launch Plans, Deal Blockers, Win-Loss Records, Battle Cards, DS Components, DS Patterns, DS Tokens. The first tab, Instructions, lists every allowed value.
- Links live in columns, not tabs. Golden Thread links are semicolon-separated names in columns such as
Linked Themes,Linked Features,Assigned MembersandDepends On. They resolve by exact title or name on import, so a misspelled title silently drops the link. - Releases list shipped features by title in
Linked Features.Itemsholds the other release lines that are not features. - Outcomes list the features linked to them directly by title in
Linked Features. Features an outcome only reaches through its initiative are not repeated there. - Outcome Metrics (measured outcomes, a preview) hold an outcome's guardrails, supporting metrics and measured primary. Each names its outcome by the
IDon the Outcomes tab of the same file, because outcomes have no unique name. A metric measured from Amplitude comes in with its event and windows; its numbers are fetched again once Amplitude is connected in the workspace you import into. - Objectives list the initiatives that serve them by title in
Linked Initiatives, which fills the objective'sinitiative_idson import. A title that matches no initiative drops that one link. - Team Members never carries who is a signed-in user versus a roster-only placeholder; that link (a team member's account) isn't a portable file value. Replace all data preserves it anyway: before wiping, ProductOS remembers each linked member's email, and reconnects the freshly-imported row with the same email to the same account. A row whose email matches more than one imported row is left unlinked rather than guessing.
- External Links is the exception: one row per link attached to a feature (GitHub PR, issue or branch, Claude Code session, Notion page, Figma file, pinned repo path).
Featureis the feature's title,Kindis one of the seven kinds,URLis required, andMetadatais the link's JSON as exported. LeaveMetadatablank when adding links by hand. - Is Draft appears on every tab except Teams, Vision & Mission and External Links. Exports write
truefor drafts so they come back as drafts. Blank means published. - IDs are file-local. The
IDcolumn (FEAT-000001,LINK-000001) numbers rows within the file. It is ignored on import, and the app assigns its own numbers, so an export does not preserve theFEAT-42style references you see in the app. - The template is workspace-aware. Enum columns carry in-cell dropdowns, and the Features tab's
Typedropdown lists your Work-Item Types, including custom ones. Re-download the template after adding types.
Import
- Owner only. The Import panel (both modes below) appears only for the workspace owner. Admins and members can export and download the template, but not import.
- Drag and drop a
.xlsxor.xlsfile. The preview shows row counts and validation problems per tab before anything is written. Rows that still fail on the server (an unknown feature title on External Links, for example) are skipped rather than failing the import. - Add to existing data inserts everything in the file alongside what is already there. Nothing is de-duplicated, so importing the same file twice creates duplicates.
- Replace all data deletes the workspace's entity data first, then imports. Confirmed in a dialog, and irreversible. Export first.
- All or nothing. If any tab fails to insert, the import is rolled back and the error names the tab.
- Sprints import by reference. The Features tab's
Sprintcolumn accepts a label or number (Sprint 12or12). Sprints are computed from your Sprint Cadence rather than stored, so the importer writes that sprint window's midpoint as the Target Date when Target Date is blank. Exports fill the column with the computed label, so round-trips preserve sprint placement. - Align the cadence anchor before importing sprint references. Sprint numbers are relative to your workspace's anchor date. If the file was numbered for another system, the preview warns you with both numbers before you commit. Fix the Sprint Cadence anchor, then re-upload the same file.
- Per-integration import (Linear backfill, Intercom history and so on) lives under Integrations, not here.
There is no JSON import surface.
Export
- Export all data downloads a timestamped workbook with every tab filled from your workspace. It uses the same columns as the template, so it re-imports cleanly.
- The Trash is not exported. Restore an item first if it belongs in the file.
- Not yet included: custom field values, comments, roadmap curation, battle card scorecard ratings, and Claude Code session transcripts. The audit log and integration settings are never part of the workbook.
- From Claude. A Claude client connected to ProductOS can ask for the same workbook with the
export_workspaceMCP tool. It returns a download link that works for 15 minutes without signing in, so treat it like a password. Disconnecting that Claude connection, or leaving the workspace, stops the link early. The file is built when the link is opened, and its timestamp is in UTC. - Per-entity export is available on each entity's list page as CSV or JSON, served by
GET /api/v1/{entity}/export?format=csv|json.
Exports are not scheduled by ProductOS. For regular backups, call the export endpoint from a cron in your own infrastructure.
Common pitfalls
- Each tab's first data column (
Title,Name,Version,Feature) is required. Rows without it are flagged in the preview. - Enum values are lowercase (
newworks,Newfails). The Instructions tab lists them all. - The sample row on each tab is removed automatically. A real row is only dropped if every one of its cells matches the sample.
- Links resolve by name, so two features with the same title (or two members with the same name) collapse into one target on import. Give entities distinct titles before exporting if their links matter.
- Links resolve by exact title. Rename an entity in the file and every column that referenced the old title stops resolving.
Related
- Work-Item Types: the Features tab's
Typecolumn - Pagination: how the per-entity export endpoint paginates