# Use cases and best practices

Which use case you decide to follow depends on whether you save the messages in your system or not.

## Saving messages in your system

If you decide to save the messages in your system, you can use the following flows:

* Property starts conversation flow.
* Guest starts conversation flow.


### Property starts conversation

If the property wants to start the conversation and you have the reservation id, follow these high-level steps:

1. [Retrieve the empty conversation by reservation id.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-a-specific-conversation-by-conversation-type-and-reference) 
In the response you can find the conversation id.
2. [Enable property to send message(s) to the guest.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Optional) [Add an attachment to the message.](/connectivity/docs/messaging-api/uploading-and-downloading-attachments)
3. [Periodically retrieve messages from the queue to enable property to see whether the guest has replied.](/connectivity/docs/messaging-api/managing-messages)
  * (Recommended) [Tag a message as read by property to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-messages-as-read)
4. [Enable property to reply to new messages if needed.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Recommended) [If a property does not require a reply from the guest or wants to inform the guest a reply is not needed, tag the conversation as no reply needed to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-a-conversation-as-no-reply-needed)


If the property wants to start the conversation and you do not have the reservation id, follow these high-level steps:

1. [Retrieve a list of all property conversations, which are in order of most recent activity.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-all-conversations-per-property)
2. [Retrieve the empty conversation by conversation id.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-a-specific-conversation-by-conversation-id)
3. [Periodically retrieve messages from the queue to enable property to see whether the guest has replied.](/connectivity/docs/messaging-api/managing-messages)
  * (Recommended) [Tag a message as read by property to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-messages-as-read)
4. [Enable property to reply to new messages if needed.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Recommended) [If a property does not require a reply from the guest or wants to inform the guest a reply is not needed, tag the conversation as no reply needed to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-a-conversation-as-no-reply-needed)


### Guest starts conversation

If the guest started the conversation, follow these high-level steps:

1. [Periodically retrieve messages from the queue to enable property to see whether the guest has sent a message.](/connectivity/docs/messaging-api/managing-messages)
  * (Recommended) [Tag a message as read by property to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-messages-as-read)
2. [Enable property to reply to the guest's message(s).](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Optional) [Add an attachment to the message.](/connectivity/docs/messaging-api/uploading-and-downloading-attachments)
3. [Enable property to reply to new messages if needed.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Recommended) [If a property does not require a reply from the guest or wants to inform the guest a reply is not needed, tag the conversation as no reply needed to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-a-conversation-as-no-reply-needed)


## Not saving messages in your system

If you decide not to save the messages in your system, you can use the following flows:

* Property starts conversation flow.
* Guest starts conversation flow.


### Property starts conversation

If the property wants to start the conversation, follow these high-level steps:

1. [Retrieve a list of all property conversations, which are in order of most recent activity.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-all-conversations-per-property)
2. [Retrieve the empty conversation by conversation id.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-a-specific-conversation-by-conversation-id)
3. [Enable property to send message(s) to the guest.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Optional) [Add an attachment to the message.](/connectivity/docs/messaging-api/uploading-and-downloading-attachments)
4. [Periodically retrieve conversation again to see whether guest has replied.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-a-specific-conversation-by-conversation-id)
  * (Recommended) [Tag a message as read by property to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-messages-as-read)
5. [Enable property to reply to new messages if needed.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Recommended) [If a property does not require a reply from the guest or wants to inform the guest a reply is not needed, tag the conversation as no reply needed to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-a-conversation-as-no-reply-needed)


### Guest starts conversation

If the guest started the conversation, follow these high-level steps:

1. [Retrieve a list of all property conversations, which are in order of most recent activity.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-all-conversations-per-property)
2. [Enable property to send message(s) to the guest using conversation id.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Optional) [Add an attachment to the message.](/connectivity/docs/messaging-api/uploading-and-downloading-attachments)
3. [Periodically retrieve conversation again to see whether guest has replied.](/connectivity/docs/messaging-api/managing-conversations/#retrieving-a-specific-conversation-by-conversation-id)
  * (Recommended) [Tag a message as read by property to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-messages-as-read)
4. [Enable property to reply to new messages if needed.](/connectivity/docs/messaging-api/managing-conversations/#posting-a-message-to-a-conversation)
  * (Recommended) [If a property does not require a reply from the guest or wants to inform the guest a reply is not needed, tag the conversation as no reply needed to inform the guest.](/connectivity/docs/messaging-api/managing-tags/#tagging-a-conversation-as-no-reply-needed)