HeyForm logo

HeyForm

Open-source form builder for conversational surveys, quizzes, and polls

Alternative to: typeform, google forms, jotform, tally

HeyForm screenshot

HeyForm is an open-source form builder that lets anyone create engaging conversational forms for surveys, questionnaires, quizzes, and polls without writing code. It supports a wide range of question types, conditional logic, custom themes, webhook and Zapier/Make.com integrations, and built-in analytics for completion and drop-off rates. Self-hosting the community edition gives you full ownership of your form data instead of relying on HeyForm's hosted SaaS.

HeyForm Docker Compose example

Self-host HeyForm on your own server, homelab, or VPS starting from this Docker Compose example. It runs HeyForm in Docker containers using the official heyform/community-edition:latest, mongo:latest, redis:latest images, with persistent volumes and automatic restarts preconfigured. Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.

services:
  heyform:
    image: heyform/community-edition:latest
    restart: unless-stopped
    depends_on:
      - mongo
      - redis
    volumes:
      - assets:/app/static/upload
    environment:
      # Public URL where users reach HeyForm. Must match the externally reachable address (scheme + host, no trailing slash).
      APP_HOMEPAGE_URL: "changeme"
      # Secret used to sign login sessions. Set to a long random string.
      SESSION_KEY: "changeme"
      # Key used to encrypt form submission data. Set to a long random string.
      FORM_ENCRYPTION_KEY: "changeme"
      # How long a login session stays valid.
      SESSION_MAX_AGE: "15d"
      # MongoDB connection string (points at the bundled mongo service).
      MONGO_URI: "mongodb://mongo:27017/heyform"
      # Redis host used for the background job queue (points at the bundled redis service).
      REDIS_HOST: "redis"
      # Redis port.
      REDIS_PORT: "6379"
      # Redis database index.
      REDIS_DB: "0"
      # Sender address for outgoing email (verification codes, workspace invites). Example: HeyForm <noreply@example.com>
      SMTP_FROM: ""
      # SMTP server hostname.
      SMTP_HOST: ""
      # SMTP server port.
      SMTP_PORT: ""
      # SMTP username.
      SMTP_USER: ""
      # SMTP password.
      SMTP_PASSWORD: ""

  mongo:
    image: mongo:latest
    restart: unless-stopped
    volumes:
      - mongo_data:/data/db

  redis:
    image: redis:latest
    restart: unless-stopped
    volumes:
      - redis_data:/data

volumes:
  assets:
  mongo_data:
  redis_data:

Values set to changeme are required — replace them with your own values before starting HeyForm.

Prefer a managed setup? WinterFlow installs, configures, and updates HeyForm for you using this same Docker Compose configuration.