Skip to main content

Configuration

note

The easiest way to get started with Typebot is with the official managed service in the Cloud. It takes 1 minute to try out the tool for free. You'll have high availability, backups, security, and maintenance all managed for you by me, Baptiste, Typebot's founder.

That's also the best way to support my work, open-source software, and you'll get great service!

When running Typebot on your machine, the following configuration parameters can be supplied as environment variables.

Typebot is composed of 2 main applications:

  • The builder, where you build your typebots
  • The viewer, where your user answer the typebot

Both apps have their own environment config files. Here is an exhaustive list of all the parameters you can set:

Builder

ParameterDefaultDescription
DATABASE_URLpostgresql://postgres:typebot@db:5432/typebotThe database URL
ENCRYPTION_SECRETSgVkYp2s5v8y/B?E(H+MbQeThWmZq4t6A 256-bit key used to encrypt sensitive data. It is strongly recommended to generate a new one. The secret should be the same between builder and viewer.
ADMIN_EMAIL--The email that will get a "Pro" plan on user creation
NEXTAUTH_URLhttp://localhost:3000The builder base URL. Should be the publicly accessible URL (i.e. https://app.typebot.io)
NEXT_PUBLIC_VIEWER_URLhttp://localhost:3001The viewer base URL. Should be the publicly accessible URL (i.e. https://typebot.io)
NEXTAUTH_URL_INTERNAL--The internal builder base URL. You have to set it only when NEXTAUTH_URL isn't publicly accessible

Email (Auth, notifications)

Used for sending email notifications and authentication

ParameterDefaultDescription
SMTP_USERNAME--SMTP username
SMTP_PASSWORD--SMTP password
SMTP_HOST--SMTP host. (i.e. smtp.host.com)
SMTP_PORT25SMTP port
NEXT_PUBLIC_SMTP_FROM-From name and email (i.e. "Typebot Notifications" <notifications@typebot.io>)
NEXT_PUBLIC_SMTP_FROM-From name and email (i.e. "Typebot Notifications" <notifications@typebot.io>)
NEXT_PUBLIC_SMTP_AUTH_DISABLEDfalseTo disable the authentication by email but still use the provided config for notifications

Google (Auth, Sheets, Fonts)

Used authentication in the builder and for the Google Sheets integration step. Make sure to set the required scopes (userinfo.email, spreadsheets, drive.readonly) in your console The Authorization callback URL should be $NEXTAUTH_URL/api/auth/google/callback

ParameterDefaultDescription
NEXT_PUBLIC_GOOGLE_CLIENT_ID--The Client ID from the Google API Console
GOOGLE_CLIENT_SECRET--The Client secret from the Google API Console

Used for Google Fonts:

ParameterDefaultDescription
NEXT_PUBLIC_GOOGLE_API_KEY--The API Key from the Google API Console

GitHub (Auth)

Used for authenticating with GitHub. By default, it uses the credentials of a Typebot-dev app.

You can create your own GitHub OAuth app here. The Authorization callback URL should be $NEXTAUTH_URL/api/auth/github/callback

ParameterDefaultDescription
NEXT_PUBLIC_GITHUB_CLIENT_ID--Application client ID. Also used to check if it is enabled in the front-end
GITHUB_CLIENT_SECRET--Application secret

GitLab (Auth)

Used for authenticating with GitLab. Follow the official GitLab guide for creating OAuth2 applications here. The Authorization callback URL should be $NEXTAUTH_URL/api/auth/callback/gitlab

ParameterDefaultDescription
NEXT_PUBLIC_GITLAB_CLIENT_ID--Application client ID. Also used to check if it is enabled in the front-end
GITLAB_CLIENT_SECRET--Application secret
GITLAB_BASE_URLhttps://gitlab.comBase URL of the GitLab instance
GITLAB_REQUIRED_GROUPS--Comma-separated list of groups the user has to be a direct member of, e.g. foo,bar
NEXT_PUBLIC_GITLAB_NAMEGitLabName of the GitLab instance, used for the SSO Login Button

Facebook (Auth)

You can create your own Facebook OAuth app here. The Authorization callback URL should be $NEXTAUTH_URL/api/auth/facebook/callback

ParameterDefaultDescription
NEXT_PUBLIC_FACEBOOK_CLIENT_ID--Application client ID. Also used to check if it is enabled in the front-end
FACEBOOK_CLIENT_SECRET--Application secret

S3 Storage (Media uploads)

Used for uploading images, videos, etc... It can be any S3 compatible object storage service (Minio, Digital Oceans Space, AWS S3...)

ParameterDefaultDescription
S3_ACCESS_KEY--S3 access key. Also used to check if upload feature is enabled
S3_SECRET_KEY--S3 secret key.
S3_BUCKETtypebotName of the bucket where assets will be uploaded in.
S3_PORT--S3 Host port number
S3_ENDPOINT--S3 secret key.
S3_SSLtrueUse SSL when establishing the connection.
S3_REGION--S3 region.

Your bucket must have the following policy that tells S3 to allow public read when an object is located under the public folder:

{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "PublicRead",
"Effect": "Allow",
"Principal": "*",
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<BUCKET_NAME>/public/*"
}
]
}

You also need to configure CORS so that an object can be uploaded from the browser:

[
{
"AllowedHeaders": ["*"],
"AllowedMethods": ["PUT", "POST"],
"AllowedOrigins": ["*"],
"ExposeHeaders": ["ETag"]
}
]

Giphy (GIF picker)

Used to search for GIF. You can create a Giphy app here

ParameterDefaultDescription
NEXT_PUBLIC_GIPHY_API_KEY--Giphy API key

Others

The official Typebot managed service uses other services such as Stripe for processing payments, Sentry for tracking bugs and Sleekplan for user feedbacks.

The related environment variables are listed here but you are probably not interested in these if you self-host Typebot.

Stripe

ParameterDefaultDescription
NEXT_PUBLIC_STRIPE_PUBLIC_KEY--Stripe public key
STRIPE_SECRET_KEY--Stripe secret key
STRIPE_PRICE_USD_ID--Pro plan USD price id
STRIPE_PRICE_EUR_ID--Pro plan EUR price id
STRIPE_PRICE_TEAM_USD_ID--Team plan USD price id
STRIPE_PRICE_TEAM_EUR_ID--Team plan EUR price id
STRIPE_WEBHOOK_SECRET--Stripe Webhook secret

Sentry

ParameterDefaultDescription
NEXT_PUBLIC_SENTRY_DSN--Sentry DSN
SENTRY_AUTH_TOKEN--Used to upload sourcemaps on app build
SENTRY_PROJECT--Sentry project name
SENTRY_ORG--Sentry organization name

These can also be added to the viewer environment

Vercel (custom domains)

ParameterDefaultDescription
VERCEL_TOKEN--Vercel API token
VERCEL_VIEWER_PROJECT_NAME--The name of the viewer project in Vercel
VERCEL_TEAM_ID--Vercel team ID that contains the viewer project

Sleekplan

ParameterDefaultDescription
SLEEKPLAN_SSO_KEY--Sleekplan SSO key used to automatically authenticate a user in Sleekplan

Internal Webhooks

ParameterDefaultDescription
USER_CREATED_WEBHOOK_URL--Webhook URL called whenever a new user is created (used for importing a new SendGrid contact)

Viewer

ParameterDefaultDescription
DATABASE_URLpostgresql://postgres:typebot@db:5432/typebotThe database URL
ENCRYPTION_SECRETSgVkYp2s5v8y/B?E(H+MbQeThWmZq4t6A 256-bit key used to encrypt sensitive data. It is strongly recommended to generate a new one.
NEXT_PUBLIC_VIEWER_URLhttp://localhost:3001The viewer base URL. Should be the publicly accessible URL (i.e. https://typebot.io)

Emails (Notifications)

Used for sending email notifications and authentication

ParameterDefaultDescription
SMTP_USERNAME--SMTP username
SMTP_PASSWORD--SMTP password
SMTP_HOST--SMTP host. (i.e. smtp.host.com)
SMTP_PORT25SMTP port
NEXT_PUBLIC_SMTP_FROM-From name and email (i.e. "Typebot Notifications" <notifications@typebot.io>)
NEXT_PUBLIC_SMTP_FROM-From name and email (i.e. "Typebot Notifications" <notifications@typebot.io>)

Google (Sheets)

Used when executing a Google Sheets block. Make sure to set the required scopes (userinfo.email, spreadsheets, drive.readonly) in your console

ParameterDefaultDescription
NEXT_PUBLIC_GOOGLE_CLIENT_ID--The Client ID from the Google API Console
GOOGLE_CLIENT_SECRET--The Client secret from the Google API Console