VX Terminal Help

Import

Settings → Import loads records you already keep in a spreadsheet. Download the template, fill it in, check it, then import. Nothing is saved until you press Import, and rows that are already here are skipped, never changed.

There are eight types: Patents, Patent filings, Trademarks, Domains, Contracts, Legal entities, Employees and Customer accounts.

How an import works #

  1. What are you importing? Pick the type. The card says which screen the records go to.
  2. The template. The table lists every column, whether it is required, what goes in it and an example. Press Download template to get a CSV with just the header row.
  3. Your file. Choose your filled-in CSV file and press Check file. This is a dry run: every row is validated and checked for duplicates, and nothing is written. The Check report shows Rows read, Ready to import, Errors and Already here, then each row with what happened.
  4. Import. Press Import N rows. The rows that passed are created in one step; rows with errors and duplicates are skipped. If any row fails to save, nothing is saved.

After an import, Open … takes you to the screen where the records now show, and Import another file starts again.

Template tips #

Who can import #

Each type needs its engine's admin role (or founder): patents admin, legal admin, HR admin or customer success admin. Brand-scoped admins can import rows for their own brands; rows for other brands come back as errors, one by one.

Common errors #

MessageFix
"The file is empty. It needs the template's header row and at least one data row."Add your rows under the header.
"The file has a header row but no data rows."Add at least one row.
"Column … (header column …) isn't one the … import knows."Fix or remove that column. The message lists the template's columns.
"The header is missing required column…"Start from the downloaded template.
"This row has … cells but the header has …; a value is probably missing its quotes."Put double quotes around values that contain commas.
"A quoted value starting on line … is never closed"A " is missing. Fix that line.
"… must be a date written YYYY-MM-DD (e.g. 2026-03-31); got …."Reformat the date. Set the column's format to text in your spreadsheet if it keeps changing it.
"… must be one of: …; got …."Use one of the listed values.
"… must be a brand slug: lowercase letters, digits and dashes (e.g. northwind-coffee); got …."Use the slug, not the brand's name.
"You don't have admin access to brand …, so this row can't be imported."Ask for the admin role on that brand, or remove the row.
"This … is already recorded (same key), so this row is skipped."Nothing to do: the record exists. Imports never change existing records.
"The file is … MB; the limit is 2 MB. Split it into smaller files."Split the file.
"Row … now matches a record that was added after the check ran, so nothing was imported. Run the check again."Press Check file again, then import.

The columns, type by type #

Patents #

Template: vxt-import-patents.csv. Shows on the Patents screen. Needs patents admin. A re-import matches on internal_id (ignoring case). One row per invention. Import patents before their filings.

ColumnRequiredWhat goes in itExample
internal_idyesYour own reference for the invention; unique. A re-import matches on it.26-13-10
titleyesThe invention's title.Adaptive load shedding for edge gateways
lifecycle_stageyesWhere the invention stands. One of: drafted, briefed, writing, completed_unsubmitted, active, superseded, killed_consolidated, abandoned.active
short_descriptionnoOne or two sentences. Optional.Sheds load before the gateway saturates.
group_codenoYour grouping code (portfolio, family). Optional.26-13
domainnoTechnical domain, free text. Optional.networking
priority_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2026-04-01
parent_internal_idnointernal_id of the parent invention: one that already exists or appears earlier in this file. Optional.26-13-01
brandnoAttributes the patent to this brand (brand slug: lowercase letters, digits, dashes). Optional.northwind-coffee

Patent filings #

Template: vxt-import-filings.csv. Shows on the Patents screen. Needs patents admin. A re-import matches on serial_number (ignoring punctuation); without one, the patent + application type + filing date + label. Each filing belongs to a patent that must already exist: import patents first. The keep decision starts as pending, as on a hand-entered filing.

ColumnRequiredWhat goes in itExample
patent_internal_idyesinternal_id of an existing patent.26-13-10
application_typeyesThe kind of application. One of: provisional, nonprovisional, continuation, continuation_in_part, divisional, pct.provisional
statusyesThe filing's state. One of: provisional_filed_paid, provisional_filed_unpaid, lapsing_strategic, abandoned_strategic, abandoned_uspto_terminated, misfiled_pending_refile, superseded_by_refile, nonprovisional_filed, pct_filed, granted.provisional_filed_paid
serial_numbernoThe USPTO application number. A re-import matches on it. Optional.64/024,054
filing_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2026-04-01
filing_labelnoA short label such as original or refile. Optional.original
conversion_deadlinenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2027-04-01
uspto_correspondence_emailnoThe correspondence email on file with the USPTO. Optional.ip@northwind.example
notesnoFree text. Optional.

Trademarks #

Template: vxt-import-trademarks.csv. Shows on the Legal screen. Needs legal admin for each row's brand (rows without a brand need company-wide legal admin). A re-import matches on mark_text (ignoring case), or uspto_serial when given.

ColumnRequiredWhat goes in itExample
mark_textyesThe mark as filed or to be filed; unique. A re-import matches on it.NORTHWIND
statusyesWhere the mark stands. One of: cleared_unfiled, filed_pending, registered, blocked, dead, unknown.filed_pending
brandnoThe brand's slug: lowercase letters, digits and dashes (e.g. northwind-coffee). Optional.northwind-coffee
uspto_serialnoThe 8-digit USPTO serial number. Optional.90123456
classesnoNice classes 1-45, separated by semicolons (e.g. 9;42 or IC 009;IC 042). Optional.9;42
blocking_serialnoSerial number of a third-party mark that blocks this one. Optional.
priority_ranknoA whole number; 1 is most important. Optional.1
recommended_actionnoFree text, e.g. file_teas_plus. Optional.file_teas_plus
filing_fee_usd_per_classnoWhole US dollars per class. Optional.350
notesnoFree text. Optional.

Domains #

Template: vxt-import-domains.csv. Shows on the Legal screen. Needs legal admin for each row's brand (rows without a brand need company-wide legal admin). A re-import matches on domain_name (ignoring case).

ColumnRequiredWhat goes in itExample
domain_nameyesThe domain, e.g. northwind.example. Stored lowercase; a re-import matches on it.northwind.example
brandnoThe brand's slug: lowercase letters, digits and dashes (e.g. northwind-coffee). Optional.northwind-coffee
registrarnoWho the domain is registered with. Optional.cloudflare
expiration_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2027-06-30
dnssec_enablednotrue or false (yes/no and 1/0 also work). Blank means unknown.true
transfer_lockednotrue or false (yes/no and 1/0 also work). Blank means unknown.true
is_canonicalnotrue for the brand's main domain. Blank means false.false
notesnoFree text. Optional.

Contracts #

Template: vxt-import-contracts.csv. Shows on the Legal screen. Needs legal admin for each row's brand (rows without a brand need company-wide legal admin). A re-import matches on contract_type + counterparty_name (ignoring case) + effective_date + brand. A signed contract's signed time is set to the moment of import, as on a hand-entered contract.

ColumnRequiredWhat goes in itExample
contract_typeyesThe kind of agreement. One of: msa, nda, customer_agreement, pla, pilot, employment, vendor, partnership, other.msa
counterparty_nameyesThe other party's legal name.Acme Logistics LLC
statusyesWhere the contract stands. One of: draft, executed, expired, terminated, superseded.executed
brandnoThe brand's slug: lowercase letters, digits and dashes (e.g. northwind-coffee). Optional.northwind-coffee
effective_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2026-01-15
expiration_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2027-01-14
is_signednotrue or false (yes/no and 1/0 also work). Blank means false.true
is_paidnotrue or false (yes/no and 1/0 also work). Blank means false.false
file_pathnoWhere the signed copy lives (a path or link). Optional.
notesnoFree text. Optional.

Template: vxt-import-entities.csv. Shows on the Legal screen. Needs company-wide legal admin. A re-import matches on name (ignoring case).

ColumnRequiredWhat goes in itExample
nameyesThe entity's legal name; unique. A re-import matches on it.Northwind Trading Co.
entity_typeyesThe kind of entity. One of: parent, c_corp, llc, dba, holding_company, foundation, sub_entity.c_corp
state_of_formationnoe.g. Delaware. Optional.Delaware
formation_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2019-05-02
brand_assignmentnoThe brand's slug: lowercase letters, digits and dashes (e.g. northwind-coffee). Optional.northwind-coffee
parent_entity_namenoname of the parent entity: one that already exists or appears earlier in this file. Optional.
hq_addressnoFree text. Optional.
registered_agent_namenoFree text. Optional.
is_reg_cf_issuernotrue or false (yes/no and 1/0 also work). Blank means false.false
notesnoFree text. Optional.

Employees #

Template: vxt-import-employees.csv. Shows on the HR screen. Needs HR admin. A re-import matches on work_email (ignoring case). Imported employees start active. Leave principal_id blank for people who don't sign in to the terminal; it can be linked later.

ColumnRequiredWhat goes in itExample
display_nameyesThe person's name as it should appear.Dana Whitfield
work_emailyesTheir work email; a re-import matches on it.dana@northwind.example
hierarchy_levelyescommand = company-wide, core = one brand, bridge = a team or location within a brand, node = an individual contributor. One of: command, core, bridge, node.core
brand_scopenoThe brand slug they work in. Required unless hierarchy_level is command.northwind-coffee
location_scopenoTheir team or location, e.g. denver-hq. Required for bridge and node.
departmentnoFree text. Optional.Operations
job_titlenoFree text. Optional.General Manager
hire_datenoA date written YYYY-MM-DD (e.g. 2026-03-31). Leave blank if unknown.2024-02-19
reports_to_emailnowork_email of their manager: an existing employee or one earlier in this file. Optional.
principal_idnoTheir VX Terminal user id (a UUID), if they sign in. Blank = not linked.

Customer accounts #

Template: vxt-import-customer-accounts.csv. Shows on the Customer Success screen. Needs customer success admin for each row's brand. A re-import matches on brand + account_name (ignoring case). Each account is owned by a terminal user: principal_id when given, otherwise you.

ColumnRequiredWhat goes in itExample
account_nameyesThe customer's name.Bluebird Cafe Group
brandyesThe brand slug the customer buys from: lowercase letters, digits and dashes.northwind-coffee
statusnoBlank means prospect. One of: prospect, pilot, active, at_risk, churned.active
primary_contact_emailnoOptional.ops@bluebird.example
arr_usdnoAnnual recurring revenue in US dollars, e.g. 12000 or 12,000.50. Blank means 0.12000
started_atnoWhen they became a customer: YYYY-MM-DD, or a full timestamp. Optional.2025-11-01
notesnoFree text. Optional.
principal_idnoThe owning terminal user's id (a UUID). Blank = you.

All help topics