Import file format
Go to Settings → Data → Import data. You can upload a JSON file or paste a list. The importer identifies the format on its own.
You always see a preview first. Nothing is saved to your account until you confirm it.
Paste a list
You can paste plain text directly into the box, or upload a .txt or .md file.
## Birthday
- [Sony WH-1000XM5](https://www.amazon.de/dp/B09XS7JWHH)
- Wool blanket — https://shop.com/wool-blanket
- [x] Kettle
- A long walk with a friend
## Kitchen
- https://shop.com/p/9912
Each line creates one thing.
- A
##heading creates a new list. Items above the first heading go into the list you chose on the import page. [Name](link)uses the provided name and link.- Text before a link becomes the name. Trailing dashes, colons, and pipes are removed.
- A standalone link uses words from the address for its name, or falls back to the domain.
- A line without a link creates a thing with only a name.
- [x]marks the thing as owned.- Prefixes such as
-,*, and numbers are stripped. Blank lines are ignored.
Move from another app
Other wishlist apps use different export formats. An assistant such as ChatGPT, Claude, or Gemini can convert your export into the format Things To Have requires.
- Export your wishlist from your current app.
- Send the prompt below to the assistant, followed by your export, notes, or links.
- Save the response as a file ending in
.json. - Upload that file on the import page.
Turn my wishlist into a Things To Have import file. Follow the format documented at https://thingstohave.app/help/import-format exactly: one JSON object with "schemaVersion": 1, a "lists" array and a "things" array, where each list references its items by their ids in "thingIds". Reply with the JSON only.
Check the preview carefully before confirming. Assistants make mistakes, and nothing is added to your account until you approve it.
If you use Pinterest, see Move your wishlist from Pinterest.
Restore a Things To Have export
A file from Settings → Data → Export my data matches the JSON format below. It restores your lists, things, and original dates. Any thing without a list goes into the list you select on the import page.
Images, followers, and settings are not imported.
The JSON format
The file must contain a single JSON object with three keys:
schemaVersionmust be1. Files with any other version are rejected.listscontains the lists to create. It links to things by theiridvalues inthingIds.thingscontains the items to create. Any thing not listed inthingIdsgoes into the list chosen during import.
Fields
| Field | Where | Required | Notes |
|---|---|---|---|
id | both | yes | A number, unique within the file. Links lists and things. |
name | both | yes | Entries without a name are skipped. |
description | lists | no | Plain text. |
isPublic | lists | no | Set to true to make the list public. Defaults to false. |
defaultViewMode | lists | no | "list" or "grid". |
thingIds | lists | no | The ids of the things in this list. |
url | things | no | Web link starting with http or https. Stored as written. |
note | things | no | Plain text. |
price + currency | things | no | A number and currency code, or a single string like "120 USD". |
identifier | things | no | Reference code, such as a model number. |
isOwned | things | no | Set to true if you already own the item. |
createdAt | both | no | ISO date to preserve creation history. |
Prices require a currency. An entry with "price": 120 on its own is skipped. An entry with "price": 120, "currency": "USD" works.
Example file
{
"schemaVersion": 1,
"lists": [
{
"id": 1,
"name": "Birthday",
"description": "Things I would love",
"isPublic": true,
"defaultViewMode": "grid",
"thingIds": [1, 2]
},
{
"id": 2,
"name": "Kitchen",
"isPublic": false,
"thingIds": [3]
}
],
"things": [
{
"id": 1,
"name": "Sony WH-1000XM5",
"url": "https://www.amazon.de/dp/B09XS7JWHH",
"note": "Black, not silver",
"price": 379,
"currency": "EUR"
},
{
"id": 2,
"name": "Wool blanket",
"isOwned": true
},
{
"id": 3,
"name": "Kettle",
"url": "https://shop.com/p/9912",
"price": "49.90 USD",
"identifier": "KT-9912"
}
]
}
Import rules and limits
- Files must be
.txt,.json, or.md. - Imports are limited to 2 MB and 1,000 items per file.
- The importer does not remove duplicates. Repeated links in a file create multiple things, and existing things in your account are imported again.
- Items that fail to import appear on the results screen. You can download the failed rows, correct them, and upload them again.