Welcome to the InnSync User Guide – your essential companion for managing contacts and visitor information efficiently. Designed specifically for AirBnB owners.
In this comprehensive user guide, we will take you to experience a full journey with InnSync step by step.
InnSync is a desktop application designed specifically for managing contacts for AirBnB owners, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, InnSync can get your contact management tasks done faster than traditional GUI apps.
Key Features:
Technical Skills: InnSync is designed for users with basic command line experience and familiarity with file navigation.
Efficiency: Built for AirBnB owners, the tool prioritizes quick, streamlined workflows to manage visitor and contact information.
User-Friendly: Whether you're new to command line tools or an experienced user, InnSync’s design caters to a broad range of technical proficiencies.
This guide is crafted to help you fully leverage InnSync’s features. As an AirBnB owner, managing visitor details quickly and accurately is vital. This guide provides clear instructions, examples, and troubleshooting tips so you can optimize your workflow and focus on delivering a great visitor experience.
This section explains how to navigate the guide and locate the information you need.
Ensure you have Java 17 or above installed on your Computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for InnSync.
Open your command terminal, depending on what OS you use follow the instruction below.
Navigate to the folder by using cd into the folder you put the jar file in, and use the java -jar innsync.jar command to run the application.
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.

Type the command in the command box and press Enter to execute it. e.g. typing help and pressing Enter will open the help window.
Some example commands you can try:
list : Lists all contacts.
add n/John Doe p/+65 98765432 e/johnd@example.com a/John street, block 123, #01-01 : Adds a contact named John Doe to the Address Book.
delete 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts.
exit : Exits the app.
Refer to the Features below for details of each command.
If you are unsure about specific technical terms used in this guide, refer to the Glossary section for definitions.
dd-MMM-yy format, but inputted with yyyy-MM-dd.InnSync operates mainly through CLI commands. Before exploring to the specific features in details under the feature section. Let's try to familiarize ourselves with the basic components and formats to execute a command.
💡Tip: All the command words are case-sensitive!
addis different fromAdd
In InnSync, a parameter prefix acts as a delimiter for specifying different types of parameters in commands. Here's a reference table for all parameter prefixes and their corresponding parameters:
| Parameter Prefix | Corresponding Parameter |
|---|---|
n/ | NAME |
p/ | PHONE |
e/ | EMAIL |
a/ | ADDRESS |
b/ | BOOKING_TAG |
bp/ | BOOKING_PROPERTY |
bd/ | BOOKING_DATE |
t/ | TAG |
r/ | REQUEST |
r/ | REQUEST_INDEX |
m/ | MEMO |
In InnSync, a parameter represents a placeholder where users input data. Parameters typically follow immediately after their corresponding Parameter Prefixes. Essentially, they are to be supplied by the user.
📌Note: All user inputs, including parameters, will be trimmed (all leading and trailing whitespaces will be ignored).
| Parameter | Prefix | Description |
|---|---|---|
NAME | n/ | Specifies the name of a visitor. Requirements:
|
PHONE | p/ | Specifies the phone number of a visitor. Requirements:
Used in Commands: add, edit, and find |
EMAIL | e/ | Specifies the email of a visitor. Requirements:
Used in Commands: add, edit, and find |
ADDRESS | a/ | Specifies the address of a visitor. Requirements:
Used in Commands: add, edit, and find |
BOOKING_TAG | b/ | Specifies the booking tag of a visitor. Requirements:
Used in Commands: add, edit, tag and untag |
BOOKING_PROPERTY | bp/ | Specifies the booking property of a visitor for the feature find.Requirements:
Used in Commands: find |
BOOKING_DATE | bd/ | Specifies the booking date of a visitor for the feature find.Requirements:
Used in Commands: find |
TAG | t/ | Specifies the tag name of a visitor. Requirements:
Used in Commands: add, edit, tag, untag and find |
REQUEST | r/ | Specifies the request of a visitor. Requirements:
Used in Commands: add, edit, req, and deletereq |
REQUEST_INDEX | r/ | Refers to the index number shown in the Request panel. Requirements:
Used in Commands: mark and unmark |
MEMO | m/ | Specifies the memo of a visitor. Requirements:
Used in Commands: add, edit, memo and find |
INDEX | N/A | Refers to the index number shown in the List Panel. Requirements:
Used in Commands: edit, delete, req, deletereq, memo, tag, untag, mark, unmark, star and unstar |
To understand how a full command is interpreted, we will utilise the following example.
Example: add n/NAME p/PHONE e/EMAIL a/ADDRESS [t/TAG...] [b/BOOKING_TAG...] [r/REQUEST...]
💡Tip: You can add a visitor without specifying a tag, booking tag and request and that is why it has a bracket around it!
Structure of Command:
| Component | Description | |
|---|---|---|
add | Command | Executes Add Command to add a visitor. |
n/ | Parameter Prefix | Unique prefix to distinguish NAME from other prefixes. |
NAME | Parameter | Represents placeholder for name of the visitor. |
📌General Notes about InnSync:
A command can be categorized into three formats:
COMMAND+INDEXCOMMAND+PARAMETER_PREFIX+PARAMETERCOMMAND+INDEX+PARAMETER_PREFIX+PARAMETER
📌Notes about the command format:
Items in square brackets are optional.
e.g n/NAME [t/TAG] can be used as n/John Doe t/friend or as n/John Doe.
Items with ... after them can be used multiple times (including zero).
e.g. [t/TAG...] can be used as (i.e. 0 times), t/friend, t/friend t/family etc.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE_NUMBER, then p/PHONE_NUMBER n/NAME is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
| Action | Format and Examples |
|---|---|
| Add Visitor | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG...] [b/BOOKING_TAG...] [r/REQUEST...] [m/MEMO] e.g., add n/James Ho p/+82 22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend |
| Edit Visitor | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG...] [b/BOOKING_TAG...] [r/REQUEST...] [m/MEMO] e.g., edit 2 n/James Lee e/jameslee@example.com |
| List Visitor | list |
| Delete Visitor | delete INDEX e.g., delete 3 |
| Star Visitor | star INDEX e.g., star 1 |
| Unstar Visitor | unstar INDEX e.g., unstar 1 |
| List Starred Visitors | liststar |
| Tag Visitor | tag INDEX t/TAG [t/TAG...] e.g., tag 1 t/friend or tag INDEX b/PROPERTY from/yyyy-MM-dd to/yyyy-MM-dd [b/BOOKING_TAG...] e.g., tag 1 b/Hotel from/2025-10-10 to/2025-10-11 |
| Untag Visitor | untag INDEX t/TAG e.g., untag 1 t/friend or untag INDEX b/PROPERTY from/START_DATE to/END_DATE e.g., untag 1 b/Hotel from/2025-10-10 to/2025-10-11 |
| Add Request | req INDEX r/REQUEST [r/REQUEST...] e.g., req 1 r/a request |
| Mark Request | mark INDEX r/REQUEST_INDEX e.g., mark 1 r/1 |
| Unmark Request | unmark INDEX r/REQUEST_INDEX e.g., unmark 1 r/1 |
| Delete Request | deletereq INDEX r/REQUEST_INDEX e.g. deletereq 1 r/1 |
| Memo Visitor | memo INDEX m/[MEMO] e.g., memo 1 m/cool |
| Find | find [n/KEYWORD...] [p/KEYWORD...] [e/KEYWORD...] [a/KEYWORD] [t/KEYWORD...] [bp/KEYWORD...] [bd/KEYWORD...] [m/KEYWORD...]e.g., find n/john n/bob p/879294 |
| Clear | clear |
| Exit | exit |
| Undo | undo |
| Help | help |
Visitors are uniquely identified by a combination of their email and phone number. Duplicate visitor contact details are not allowed in the address book.
Suppose this contact exists in the address book:
John Doe, Email: john@example.com, Phone: +65 8888 8888, ...Then, suppose we would like to add these contacts to the address book:
John Lee, Email: john@example.com, Phone: +65 8888 8888, ...John Lee, Email: johnlee@example.com, Phone: +65 8888 8888, ...John Doe, Email: john@example.com, Phone: +65 9999 9999, ...John Lee, Email: johnlee@example.com, Phone: +65 9999 9999, ...When the program checks for duplicates,
📌Note: Two phone numbers are considered identical as long as they contain the same country code, and their numbers have the same digits in the same order. The position and number of whitespaces are not considered. i.e. +65 8888 8888 is considered the same as +65 88888888.
addAdds a visitor to the address book.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG...] [b/BOOKING_TAG...] [r/REQUEST...] [m/MEMO]
💡Tip: A visitor can have any number of tags or requests (including 0) and at most one memo.
💡Tip: If a visitor's name contains a prefix e.g. /, escape the prefix with $.
e.g. To add a visitor with the name "murthu a/p", use the command add n/murthu $a/p [...].
📌Notes:
alice@gmail.com and +65 87929460.Examples:
add n/John Doe p/+65 98765432 e/johnd@example.com a/John street, block 123, #01-01add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison p/+65 1234567 t/criminal t/offence r/cool r/beans m/handsomeeditEdits an existing visitor in the address book.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BOOKING_TAG...] [t/TAG...] [r/REQUEST...] [m/MEMO]
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.t/ without specifying any tags after it.b/ without specifying any tags after it.r/ without specifying any booking tags after it.m/ without specifying any memo after it.💡Tip: To edit a visitor's name to contain a prefix, escape the prefix with $.
e.g. To change the name of the first contact in the list to "murthu a/p", use the command edit 1 n/murthu $a/p [...].
Examples:
edit 1 p/+65 91234567 e/johndoe@example.com Edits the phone number and email address of the 1st visitor to be +65 91234567 and johndoe@example.com respectively.edit 2 n/Betsy Crower t/ Edits the name of the 2nd visitor to be Betsy Crower and clears all existing tags.edit 2 n/Betsy Crower b/ Edits the name of the 2nd visitor to be Betsy Crower and clears all existing booking tags.edit 2 n/Betsy Crower r/ Edits the name of the 2nd visitor to be Betsy Crower and clears all existing requests.edit 2 n/Betsy Crower m/ Edits the name of the 2nd visitor to be Betsy Crower and clears memo.listShows a list of all visitors in the address book. Starred visitors will be shown first, followed by unstarred visitors. Both groups will be sorted lexicographically within their respective groups.
Format: list
📌Note: Any additional text or parameters after the list command will be ignored.
💡Tip: Listing without any visitors added will recommend you to add some.
deleteDeletes the specified visitor from the address book.
Format: delete INDEX
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.Examples:
list followed by delete 2 deletes the 2nd visitor in the address book.find Betsy followed by delete 1 deletes the 1st visitor in the results of the find command.Starring a visitor allows you to mark them as important. Starred visitors will be shown first when listing all visitors.
starStars a visitor in the address book.
Format: star INDEX
💡Tip: Use this command to keep track of your favourite or important visitors!
unstarUnstars a starred visitor in the address book.
Format: unstar INDEX
liststarShows a list of only all starred visitors in the address book.
Format: liststar
tagAdds a booking tag into the visitor in the address book.
Format: tag INDEX b/PROPERTY from/START_DATE to/END_DATE
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.yyyy-MM-dd exactly.Examples:
tag 1 b/Hotel from/2025-10-10 to/2025-10-11 Adds the booking tag to the 1st visitor on the list.tag 1 b/Hotel from/2025-10-10 to/2025-10-11 Adding the same booking tag again will be rejected due to overlapping dates.tagAdds a tag into the visitor in the address book.
Format: tag INDEX t/TAG
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.📌Note: Tags are case-sensitive, so friend is different from Friend.
Examples:
tag 1 t/friend Adds the tag to the 1st visitor on the list.tag 1 t/friend Adding the same tag again will be rejected due to duplicate tags.untagRemoves a booking tag on the 1st visitor in the address book.
Format: untag INDEX b/PROPERTY from/START_DATE to/END_DATE
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.yyyy-MM-dd exactly.💡Tip: If you want to remove all booking tags from a visitor, use edit INDEX b/ where INDEX is the index of the visitor!
Examples:
untag 1 b/Hotel from/2025-10-10 to/2025-10-11 Removes the booking tag with matching booking tag on the 1st visitor in the list if they exist.untag 1 b/Hotel from/2025-10-10 to/2025-10-11 After running example above this line, it will throw an error saying this booking tag does not exist.untagRemoves a tag on the 1st visitor in the address book.
Format: untag INDEX t/TAG
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer💡Tip: If you want to remove all tags from a visitor, use edit INDEX t/ where INDEX is the index of the visitor!
Examples:
untag 1 t/friend Removes the tag with matching tag on the 1st visitor in the list if they exist.untag 1 t/friend After running example above this line, it will throw an error saying this tag does not exist.Adds a request to the visitor in the address book. Requests are used to keep track of what the visitor wants or needs. Each request can be marked as completed or incomplete.
reqAdds a request into the visitor in the address book.
Format: req INDEX r/REQUEST
INDEX. The index refers to the index number shown in the displayed visitor list. The index must be a positive integer.📌Note: Requests are case-sensitive, so want banana is different from want Banana.
Examples:
req 1 r/Want banana Adds the request to the 1st visitor on the list.req 1 r/Want banana Will be rejected due to duplicating request own by this visitor.markMarks a request as completed for a specific visitor in the address book.
Format: mark INDEX r/REQUEST_INDEX
REQUEST_INDEX for the visitor at INDEX as completed. The index refers to the index number shown in the displayed visitor list. The INDEX must be a positive integer. The request index refers to the index number of the request in the visitor's request list. The REQUEST_INDEX must be a positive integer.Examples:
mark 1 r/1 Marks the first request of the first visitor on the list as completed if it exists.mark 1 r/1 Marking the same request again will be rejected.unmarkUnmarks a previously marked request for a specific visitor in the address book.
Format: unmark INDEX r/REQUEST_INDEX
REQUEST_INDEX for the visitor at INDEX as not completed. The index refers to the index number shown in the displayed visitor list. The INDEX must be a positive integer. The request index refers to the index number of the request in the visitor's request list. The REQUEST_INDEX must be a positive integer.Examples:
unmark 1 r/1 Unmarks the first request of the first visitor on the list as not completed if it exists.unmark 1 r/1 Unmarking the same request again will be rejected.deletereqDeletes a request from a specific visitor in the address book.
Format: deletereq INDEX r/REQUEST_INDEX
REQUEST_INDEX for the visitor at INDEX. The index refers to the index number shown in the displayed visitor list. The INDEX must be a positive integer. The request index refers to the index number of the request in the visitor's request list. The REQUEST_INDEX must be a positive integer.Examples:
deletereq 1 r/1 Deletes the first request of the first visitor on the list.deletereq 1 r/1 If the visitor has no more requests, this command will be rejected.memoAdds a memo into the visitor in the address book.
Format: memo INDEX m/MEMO
INDEX. The index refers to the index number shown in the displayed visitor LIST. The index must be a positive integer.Examples:
memo 1 m/recurring customer Overwrites the memo of the 1st visitor on the list.💡Tip: You can remove a memo with
memo INDEX m/instead of using theeditcommand!
findAllows users to search for visitors whose details match the specified keywords.
Format: find [n/KEYWORD...] [p/KEYWORD...] [e/KEYWORD...] [a/KEYWORD...] [bp/KEYWORD...] [bd/DATE...][t/KEYWORD...] [m/KEYWORD...]
n/hans will match Hans).n/han will match Hans).n/john n/doe), visitors matching ANY of those keywords will be returned.n/john p/9123), visitors matching ANY of the specified fields will be returned.n/john doe will not match john or doe separately and will only match john doe as a whole).| Prefix | Field | What You’re Searching | What to Type (Format) |
|---|---|---|---|
n/ | Name | Contact names | Any value (up to 170 characters). In this system, names can contain any characters except $, including prefixes like a/ or e/. However, names containing prefixes, such as murthu a/p vara must be preceded by a $ to avoid the characters a/p from being interpreted as a prefix. All $ characters found in name parameters will be excluded. |
p/ | Phone | Phone numbers | Digits (0 - 9) with an optional + at the beginning |
e/ | Email addresses | Any value with letters, numbers, and special characters:@, ., _, -, +. | |
a/ | Address | Physical addresses | Any value (up to 500 characters). |
bp/ | Booking Property | Property names in bookings | Any value (up to 170 characters). |
bd/ | Booking Date | Dates in bookings | Use the format yyyy-MM-dd (e.g., 2025-01-15). |
t/ | Tag | Contact tags | Any value (up to 170 characters). |
m/ | Memo | Notes or comments | Any value (up to 500 characters). |
Searching by name:
find n/John - Finds contacts with "John" in their name
find n/Betsy n/muthu $a/p vara - Finds contacts with either "Betsy" or "muthu a/p vara" in their name
Searching by phone:
find p/9123 - Finds contacts whose phone numbers contain "9123"find p/+65 p/9123 - Finds contacts whose phone numbers contain either "+65" or "9123"Searching by email:
find e/@example.com - Finds contacts with email addresses containing "@example.com"find e/gmail.com e/yahoo.com - Finds contacts with email addresses containing either "gmail.com" or "yahoo.com"Searching by address:
find a/Clementi - Finds contacts with "Clementi" in their addressesfind a/Blk 123 a/Jurong - Finds contacts with either "Blk 123" or "Jurong" in their addressesSearching by tag:
find t/friend - Finds contacts with tags containing "friend"find t/friend t/family - Finds contacts with tags containing either "friend" or "family"Searching by memo:
find m/important - Finds contacts with "important" in their memosfind m/call later m/follow up - Finds contacts with either "call later" or "follow up" in their memosSearching by booking date:
find bd/2024-12-25 - Finds contacts with bookings that include December 25, 2024find bd/2025-01-01 bd/2025-02-14 - Finds contacts with bookings that include either January 1, 2025 or February 14, 2025Searching by booking property:
find bp/Beach House - Finds contacts with bookings at properties containing "Beach House"find bp/Villa bp/Resort - Finds contacts with bookings at properties containing either "Villa" or "Resort"Combining search fields:
find n/John t/friend - Finds contacts with either "John" in their name OR "friend" in their tagsfind n/Alice p/9123 e/example.com - Finds contacts with "Alice" in their name, "9123" in their phone number, or "example.com" in their emailclearClears all entries from the address book.
Format: clear
clear, the system will ask the user to confirm the action.y or Y will clear the address book, while any other input will cancel the command.exitExits the program.
Format: exit
undoUndoes the last modification to the address book, reverting it to its original state before the last modification.
Commands edit, add, delete, star, tag, untag, req, deletereq, mark, unmark, unstar, memo, and even another undo are all modifications that can be undone.
📌Note: Using the undo command after another undo command will undo the first undo.
Format: undo
helpShows a message explaining how to access the help page.
Format: help
InnSync's address book data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
InnSync's address book data is saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are welcome to update data directly by editing that data file.
⚠️Caution:
If your changes to the data file makes its format invalid, InnSync will discard all data and start with an empty data file at the next run. Hence, it is recommended to make a backup of the file before editing it.
Furthermore, certain edits can cause the InnSync to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
Q: How do I transfer my data to another computer?
A: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous InnSync home folder.
preferences.json file created by the application before running the application again.help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. The remedy is to manually restore the minimized Help Window.$ before the prefix to prevent it from being interpreted as a command prefix. For example, if you want to add a visitor with the name "murthu a/p", you would use the command add n/murthu $a/p [...].n/ is a prefix for the name of a visitor, p/ is a prefix for the phone number, and so on.add n/John Doe, John Doe is the parameter for the n/ prefix.