## How To Collaborate In NarrativeFlow
<a href="https://www.youtube.com/watch?v=Q8X9Y8fP9vA" target="_blank">
<img src="https://narrativeflow.dev/DocsImages/Collaboration%20and%20Importing%20Projects%20Video%20Thumbnail.webp" alt="Walkthrough Part 3 Video Thumbnail">
</a>
The ability to import projects in NarrativeFlow is what makes collaboration possible on your terms.
The ideal way to collaborate on a project in NarrativeFlow is for there to be a "master" project, collaborators make edits to that master project, and then those edits are imported back into the master project.
For example, let's say you have a NarrativeFlow project called "Gan-shine Impacked" (Yes, I know how terrible that fake name is. It's a joke. Laugh).
Let's say the file is called `Gan-shine Impacked - Master.narrativeproj`
All collaborators get a copy of the most recent version of that "master" project file and make their edits and additions.
Perhaps one collaborator is in charge of writing the main story, another some side quests, and another is writing descriptions for weapons, characters, etc.
At various intervals, such as at the end of the day, the week, or simply when a collaborator has finished their assigned work, they save their projects, perhaps naming them something like this:
- `Gan-shine Impacked - Evelyn 2025-07-29 - Main Story.narrativeproj`
- `Gan-shine Impacked - Quinn 2025-07-29 - Side Quests.narrativeproj`
- `Gan-shine Impacked - Astra 2025-07-29 - Item Descriptions.narrativeproj`
Then, all of those projects will be merged into the master project, `Gan-shine Impacked - Master.narrativeproj`, through the "Import Project Modal".
After all edits have been merged into the master project, all collaborators would then get the most up-to-date version of the master project to make their next additions or changes to.
```mermaid
flowchart TD
Master["Master Project"]
Import["Import into Master"]
Master --> Evelyn["Evelyn"]
Master --> Quinn["Quinn"]
Master --> Astra["Astra"]
Evelyn --> EvelynStory["Main Story"]
Quinn --> QuinnSide["Side Quests"]
Astra --> AstraItems["Item Descriptions"]
EvelynStory --> Import
QuinnSide --> Import
AstraItems --> Import
Import --> Master
```
## How To Import/Merge Projects In NarrativeFlow
To import a project into the currently open project (such as your master project), simply click the "Import" button in the top right of the menu bar, right next to "Compile".
When you click that, the "Import Project Modal" will open.
You'll see a message telling you a bit about the import process, as well as a reminder to:
***BACKUP YOUR PROJECT BEFORE IMPORTING ANYTHING!!!***
Neither you or I want you to lose any data, so please backup your project(s) before importing anything.
I've done my best to ensure that no data is lost. Things happen though, even with the most competent and well-tested software.
Thank you for understanding. And if you ever have an import issue or encounter a breaking bug, please [reach out to me here](https://narrativeflow.dev/lets-talk).
Simply click the "Select Project" button in the top left of the Import Project Modal, and you'll be asked to choose the project file on your computer that you want to import.
Once you choose the project you want to import, NarrativeFlow will check if there are any conflicts between the currently open project and the project to be imported, as well as any new items.
If there are any conflicts or new items, they will be displayed, along with information about each item and the item(s) it conflicts with, so you can make decisions on which items to import or not.
Note that choosing to keep an imported item—as opposed to keeping both the imported and original(s)—when it conflicts with multiple existing items will remove ALL of the items the imported item conflicts with.
I.e. if an imported item conflicts with three existing items and you choose "import" instead of "both" (or "both" isn't an option due to the conflict type), all three of those existing items will be removed and the imported item added.
Many items have one or more "buttons" to the right of it with the type of conflict(s) that the imported item has.
You can hover your cursor over those "buttons" and a tooltip will display with information about what existing item(s) conflict with the item being imported.
Node Presets and Bookmarks also have a "button" you can hover over to see the Node Data they contain/point to.
When you've made your import choices, simply click "Import" in the top right of the Import Project Modal and the items you chose to import will be merged into the currently open project.
Below is a list of all the import items and "categories" that can display when importing a project, as well as information about each "type" of conflict that an item can have.
### New Experiences
The Experiences listed here are new and have no conflicts with your existing Experiences.
You can skip importing an Experience if you don't need it.
Note that not importing an Experience that a Teleport Node links to will cause that Teleport Node to clear its Destination Experience and Destination Start Node.
### Conflicting Experiences
The Experiences listed here have the same names as existing Experiences but different Node layouts or content.
For each, you can either keep the original, the imported, or both. Choosing to keep both will simply rename the imported Experience.
### Moved Experiences
The Experiences listed here are identical to your existing Experiences but have a different folder location.
For each, you can either keep the original location or use the imported location.
### Experience Notes Conflicts
The Experiences listed here have identical content but different notes.
For each, you can either keep the original notes or use the imported notes.
### New Folders
The folders listed here are new and have no conflicts with your existing folders.
If you choose to not import a folder that an imported Experience or folder was originally inside, that item will simply be moved to the root (i.e. not inside any folder).
### Moved Folders
The folders listed here have a different location compared to existing identical folders.
For each, you can either keep the original location or use the imported location.
### New Variables
The variables listed here are new and have no conflicts with your existing variables.
If the variable group that an imported variable is in doesn't yet exist, it will be created.
### Variable Conflicts (Can Keep Both)
The variables listed here have conflicts that allow keeping both the original and imported items.
Choosing to keep both will simply rename the conflicting part (i.e. it's label) to avoid conflicts.
If the variable group that an imported variable is in doesn't yet exist, it will be created.
Conflict types that cause a variable to appear here:
- **Label Conflict**: The imported variable is different yet has the same label as an existing one
### Variable Conflicts (Choose One)
The variables listed here have conflicts that require choosing to keep either the original variable(s) or the imported one.
If the variable group that an imported variable is in doesn't yet exist, it will be created.
Conflict types that cause a variable to appear here:
- **Name Conflict**: The imported variable is different yet has the same name (not label) as an existing variable
- **Different Group**: The imported variable is the same as an existing one yet is in a different group
- **Different Value**: The imported variable is the same as an existing one yet has a different value
### New Data Table Items
The Data Table items listed here are new and have no conflicts with your existing Data Table items.
If the Data Table group that an imported item is in doesn't yet exist, it will be created.
### Data Table Conflicts (Can Keep Both)
The Data Table items listed here have conflicts that allow keeping both the original and imported items.
Choosing to keep both will simply rename the conflicting part (i.e. it's name) to avoid conflicts.
If the Data Table group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Name Conflict**: The imported item is different yet has the same name as an existing one
- **Different Value**: The imported item is different yet has the same value as an existing one
### Data Table Conflicts (Choose One)
The Data Table items listed here have conflicts that require choosing to keep either the original item(s) or the imported one.
If the Data Table group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Different Group**: The imported item is the same as an existing one yet is in a different group
### New Text Styles
The Text Styles listed here are new and have no conflicts with your existing Text Styles.
If the Text Style group that an imported item is in doesn't yet exist, it will be created.
### Text Style Conflicts (Can Keep Both)
The Text Style items listed here have conflicts that allow keeping both the original and imported items.
Choosing to keep both will simply rename the conflicting part (i.e. it's label) to avoid conflicts.
If the Text Style group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Label Conflict**: The imported item is different yet has the same label as an existing one
### Text Style Conflicts (Choose One)
The Text Style items listed here have conflicts that require choosing to keep either the original item(s) or the imported one.
If the Text Style group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Different Group**: The imported item is the same as an existing one yet is in a different group
- **Different CSS**: The imported item is the same as an existing one yet has different CSS rules
- **Tag Conflict**: The imported item is different yet has the same tags as one or more existing Text Styles
### New Quick Access Items
The Quick Access items listed here are new and have no conflicts with your existing Quick Access items.
If the Quick Access group that an imported item is in doesn't yet exist, it will be created.
### Quick Access Conflicts (Can Keep Both)
The Quick Access items listed here have conflicts that allow keeping both the original and imported items.
Choosing to keep both will simply rename the conflicting part (i.e. it's label) to avoid conflicts.
If the Quick Access group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Name Conflict**: The imported item is different yet has the same name as an existing one
- **Different Value**: The imported item is different yet has the same value as an existing one
### Quick Access Conflicts (Choose One)
The Quick Access items listed here have conflicts that require choosing to keep either the original item(s) or the imported one.
If the Quick Access group that an imported item is in doesn't yet exist, it will be created.
Conflict types that cause an item to appear here:
- **Different Group**: The imported item is the same as an existing one yet is in a different group
### New Node Presets
The Node Presets listed here are new and have no conflicts with your existing Node Presets.
### Node Preset Name Conflicts
The Node Presets listed here have the same name as existing presets but different Node data.
For each, you can either keep the original, the imported, or both. Choosing to keep both will simply rename the imported preset.
### Node Preset Data Conflicts
The Node Presets listed here have the same Node data as existing presets but different names.
Since presets do not need to be unique, this isn't a conflict and you can safely keep both.
### New Node Bookmarks
The Node Bookmarks listed here are new and have no conflicts with your existing Node Bookmarks.
After importing the project, if the Node that a bookmark points to no longer exists or wasn't imported, that bookmark will be removed.
### Node Bookmark Name Conflicts
The Node Bookmarks listed here have the same name as existing bookmarks but point to different Nodes.
For each, you can either keep the original, the imported, or both. Choosing to keep both will simply rename the imported bookmark.
If you choose to keep both Experiences when importing a conflicting Experience, the bookmarks you choose to import here will point to the renamed imported Experience. Otherwise, any bookmarks you chose to import here may be duplicates of existing bookmarks.
After importing the project, if the Node that a bookmark points to doesn't exist or wasn't imported, that bookmark will be removed.
### Node Bookmark Data Conflicts
The Node Bookmarks listed here point to the same Nodes as existing Node Bookmarks yet have a different label.
Since Node Bookmarks don't have to be unique, you can choose to keep the original, the imported, or both.
If you choose to keep both Experiences when importing a conflicting Experience, the bookmarks you choose to import here will point to the renamed imported Experience. Otherwise, any bookmarks you chose to import here may be duplicates of existing bookmarks.
After importing the project, if the Node that a bookmark points to doesn't exist or wasn't imported, that bookmark will be removed.
### Same Node Bookmarks
The Node Bookmarks listed here point to the same Nodes as existing Node Bookmarks. They are the same bookmark.
If you choose to keep both Experiences when importing a conflicting Experience, the bookmarks you choose to import here will point to the renamed imported Experience. Otherwise, any bookmarks you chose to import here will be duplicates of existing bookmarks.
After importing the project, if the Node that a bookmark points to doesn't exist or wasn't imported, that bookmark will be removed.