# build your bot

- [Conversation design](/buildabot/conversation-design.md): Conversation design is the action of creating and maintaining chatbots, or automated conversational agents. Chatlayer allows you to do that without any coding skills.
- [Plan your bot](/buildabot/conversation-design/getting-started.md): Before you start building your bot on Chatlayer, there are a few strategic steps to consider. From defining the use cases to crafting a bot personality – here's how to get started.
- [Conversation design workflow](/buildabot/conversation-design/conversation-design-workflow.md): Go over the bot design process step by step, from planning to publishing.
- [Flow logic](/buildabot/flow-logic.md): Any conversation flow on Chatlayer is made by components called blocks, linked together by connections called Go-to's.
- [Blocks](/buildabot/flow-logic/dialog-state.md): Blocks are the rectangles on your canvas that represent a certain place in the conversation.
- [Message](/buildabot/flow-logic/dialog-state/message-components.md): The Message block displays text in basic form or with special components like buttons or carousels.
- [Condition](/buildabot/flow-logic/dialog-state/plugins.md): A Condition block steers the conversation in a way or another if variables meet certain condition(s).
- [Collect input](/buildabot/flow-logic/dialog-state/user-input-bot-dialog.md): A Collect input block can be used to get information from the user. When the user gives information, the bot will first check if the info corresponds to an already known variable.
- [Action](/buildabot/flow-logic/dialog-state/action-bot-dialog.md): Action blocks are where 3rd-party, coding logic or special operations can be added to your bot.
- [Go-to connections](/buildabot/flow-logic/go-to-connections.md): On Chatlayer, a Go-to connection means that one block will happen in the conversation just after the other. Go-to connections can be established in multiple ways.
- [Emulator](/buildabot/emulator.md): Test your bot from your canvas to make sure it works as expected.
- [Tips & best practices](/buildabot/tips-and-best-practices.md): Creating an effective chatbot requires attention and best practices. By following these tips and best practices, you can create a robust and user-friendly chatbot.
- [Route your flow depending on the time](/buildabot/tips-and-best-practices/route-your-flow-depending-on-the-time.md): Some examples on how to use Get time step in your bot.
- [Improve the Not understood block](/buildabot/tips-and-best-practices/improve-the-not-understood-block.md)
- [How to create better not understood messages](/buildabot/tips-and-best-practices/improve-the-not-understood-block/intent-recognition-below-threshold.md): By creating specific not understood messages, the bot seems smarter and gives users a much better experience.
- [Not understood counter](/buildabot/tips-and-best-practices/improve-the-not-understood-block/not-understood-counter.md): A good 'not understood' handling is key to a good bot experience. Learn how to set up this counter in the article below.
- [Not understood Google search](/buildabot/tips-and-best-practices/improve-the-not-understood-block/not-understood-google-search.md)
- [Go to previous block](/buildabot/tips-and-best-practices/go-to-previous-bot-dialog.md)
- [Recognizing a returning user](/buildabot/tips-and-best-practices/how-to-recognize-a-returning-bot-user.md)
- [Skip introduction message](/buildabot/tips-and-best-practices/skip-introduction-message.md)
- [Route your flow depending on the channel](/buildabot/tips-and-best-practices/route-your-flow-depending-on-the-channel.md): Use a Condition block to route your flow depending on the channel that your customer is using.
- [Reuse flows](/buildabot/tips-and-best-practices/reuse-flows.md)
- [Connect two bots to each other](/buildabot/tips-and-best-practices/frequently-asked-questions.md)
