Most concepts listed below can define data schemas. For this the SDK uses Zod, a TypeScript-first schema validation library. These schemas allow for better IntelliSense for integration developers, autogenerated forms for bot developers in the Studio and validation of data at runtime
Configuration
Integrations can define a configuration schema. This dictates the structure of data that bot developers must provide when installing the integration. This schema is used to display the form bot developers see when installing the integration in the Studio. For example, you can define a schema that:- Requires users to supply their own API key (or other secrets)
- Provides additional configuration options for the integration
Example: Linear
Example: Linear
Here’s how the official Linear integration defines its configuration schema:And how the configuration schema is rendered in Botpress Studio:

Provide multiple schemas
Integrations can also provide multiple configuration schemas to support different use cases or environments. This allows bot developers to select the appropriate configuration method based on their needs.Example: GitHub
Example: GitHub
For example, here’s how the official GitHub integration defines its configuration schemas:And how they’re rendered in Botpress Studio:

Events
Integrations define events that represent activities within the external service. For example:- A Slack integration might define a
memberLeftChannel
event - A GitHub integration might define a
pullRequestOpened
event - A Dropbox integration might define a
fileUploaded
event
Actions
Integrations expose actions that bots can invoke to interact with the external service. For example:- Retrieving or updating information in external systems
- Performing operations on behalf of users
Channels
Integrations can define communication channels that represent different communication mediums within the integrated platform. For example:- Different channels might represent group chats, direct messages, or threads
- Each channel specifies the types of messages it can send and receive
- Channel definitions handle platform-specific message formatting and delivery
pullRequest
channel and an issue
channel, each with its own message format and delivery method.
States
Integrations can define states which are data structures attached to either a conversation, a user, or global to the whole bot. When defining a state, the integration must provide its schema, which describes the data structure of the state’s payload.Tags
Integrations can define tags that allow bot developers to add metadata to conversations, individual messages, or users. Only tags defined in the integration definition can be used at runtime. Just like states, tags can be used as a form of memory, enabling the integration to store and retrieve information. However, tags have key differences from states:- Tags values must be strings of less than 500 characters. This is to ensure that tags are lightweight and easy to manage.
- Tags can be used as filters for many list and get-or-create operations like
listMessages
andgetOrCreateUser
. - Tags are returned in the Botpress API with the entities they’re attached to. If you get a message, user or conversation, you will also get the tags attached to it without having to do a separate API call.