Visual drag-and-drop editor: build pages with a section, column, block structure, with undo/redo, autosave, and responsive preview
openfunnels — Laravel Starter Template
By aialvi
OpenFunnels is a self-hosted, open-source funnel builder built on Laravel and React, offering a visual drag-and-drop editor, forms and contact management, a lightweight CRM, automation workflows, and custom domain publishing.
Explore the design
Compare the page layouts and mobile experience. Open any screenshot for a closer look.
Preview provided in the project README.
One original preview is available. Open the full image to inspect the design.
Screenshots show visual appearance; interactive behavior may differ.
What stands out
A quick read of the recorded project description.
Lead capture and contact management: configurable conditional fields, retention of every submission, UTM and source attribution, and CSV export with filters
Lightweight CRM: move contacts through configurable sales pipelines, forecast deal amounts, and track won/lost outcomes
Automation workflows: versioned triggers and actions, supporting waits, yes/no branches, CRM updates, emails, secure webhooks, run timelines, and retries
Publishing and domains: publish to a slug path or a verified custom domain, with draft preview and unpublishing without deleting content
Analytics and experiments: privacy-focused event tracking, conversion trends, traffic sources, drop-off points, and stable A/B variant assignment
Template Details
OpenFunnels is a self-hosted, open-source (MIT) funnel-building and lightweight CRM application for creating, publishing, and improving lead-capture flows while keeping customer data on your own servers. The project is built with Laravel, Inertia, React, and TypeScript, and the repository provides a Docker Compose evaluation stack that quickly starts a complete local environment including the web app, queue worker, scheduler, and a persistent SQLite volume.
Features cover funnel page building, lead-capture forms, contact records, opportunity pipelines, automation workflows, publishing and custom domains, attribution analytics, A/B experiments, and optional AI-assisted drafts. The editor uses a JSON structure of sections/columns/blocks as canonical data, supports undo/redo, autosave, and responsive preview; form submissions retain a timeline and record UTM and source attribution; automation supports steps such as waits, branches, CRM updates, emails, and webhooks, with run logs and retries.
There are clear scope limitations: the Docker evaluation stack is for local evaluation, not production, and does not configure TLS, a reverse proxy, or custom domain infrastructure; local development requires PHP 8.3+, Composer 2, Node.js 22, pnpm 10.13.1, and SQLite; seeded accounts are for local development only. Third-party assets such as demo images, fonts, and icons must be checked against their respective licenses, and external services such as domains, hosting, databases, payments, or AI may incur separate charges.
Is it right for your project?
Use Cases
- Build and publish lead-capture funnels, such as webinar registration or product trial signup pages
- Collect leads with forms and centrally manage contact status, notes, and source attribution
- Use automation workflows to send emails, update the CRM, or trigger webhooks when new leads arrive
- Run A/B experiments across multiple funnels to compare conversion trends and drop-off points
- Export funnels to targets such as HTML, React, Vue, WordPress, Laravel, Shopify, or WooCommerce
Suitable For
- Teams that want to self-host funnels and lead data and require data control
- Marketing or growth teams that need visual page editing paired with a lightweight CRM
- Technical teams familiar with Laravel and React that are willing to deploy and maintain it themselves
- Developers who want to build on or integrate with the MIT-licensed code
Getting started & customization
Use these recorded setup notes alongside the repository instructions for your chosen version.
- 1
The Docker evaluation stack requires Docker and Compose v2; run docker compose up --build, then visit http://localhost:8000 and select Launch Demo
- 2
Local development requires PHP 8.3+ (with the extensions Laravel needs), Composer 2, Node.js 22, pnpm 10.13.1, and SQLite
- 3
Local setup steps: composer install, corepack enable, pnpm install, copy .env.example to .env, generate a key, create the SQLite file, and run migrate --seed
- 4
The seeded development account is [email protected] / password, for local development only; the default log mail driver writes verification links to storage/logs/laravel.log
- 5
Capabilities such as custom domains, lead notifications, webhooks, automation queues, and AI generation are enabled via optional variables in .env; AI, email, database, and webhook credentials should not be exposed to the browser
License & source material
Usage conditions & limitations
Free to use · keep license noticeThis listing covers the free version under the MIT license in the public repository; the free scope is that version's code and does not mean external services or third-party assets are free.
Must comply with when using
- You may use, modify, commercialize, and distribute this version's code for free.
- When distributing copies or substantial portions of the code, retain the original copyright notice and the full MIT license notice.
- The code is provided as is; warranties and liability limitations are governed by the original license and applicable law.
Additional costs & items to verify
- The Docker evaluation stack is for local evaluation only, not production, and does not configure TLS, a reverse proxy, or custom domain infrastructure.
- The seeded account [email protected] / password is for local development only and must not be used in production.
- Do not commit the .env file, and do not expose AI, email, database, or webhook credentials to the browser.
- AI-assisted drafts are off by default; you must configure the driver, endpoint, and API key yourself, which may involve external service fees.
- AI generation requires a server-side API key, which is an external service credential and may incur additional charges.
- The guest demo sandbox is off by default, must be explicitly enabled via DEMO_MODE, and demo accounts expire.
- Guest demo accounts are isolated from each other and expire, and their outbound and admin operations are restricted.
- Automation webhooks allow only TLS targets by default; enabling non-TLS targets requires explicitly changing the configuration.
- Generated Vite assets in public/build should not be committed to the repository.
- Demo images, fonts, icons, and other third-party assets must be checked against their respective licenses; the code's MIT license alone does not determine this.
- External services such as domains, hosting, databases, payments, or AI may incur separate charges.
View Original Text Basis
Permission is hereby granted, free of charge
Original License Text
It is intended for local evaluation—not production—and does not configure TLS, a reverse proxy, or custom-domain infrastructure.
Original README
The seed account is for local development only.
Original README
Do not commit `.env` or expose AI, mail, database, or webhook credentials to the browser.
Original README
`FUNNEL_AI_DRIVER` | `disabled` | Enables a configured funnel-generation driver
Original README
`FUNNEL_AI_API_KEY` | empty | Server-side generation credential
Original README
`DEMO_MODE` | `false` | Enables the isolated guest sandbox
Original README
Run isolated, expiring demo accounts with outbound and administrative actions restricted.
Original README
`AUTOMATION_WEBHOOK_ALLOW_HTTP` | `false` | Allows non-TLS workflow webhook targets
Original README
https://github.com/aialvi/openfunnels/blob/main/LICENSEhttps://github.com/aialvi/openfunnels/blob/main/README.mdGenerated Vite assets in `public/build` should not be committed.
Original README
Compiled by DeepSeek based on repository license and README ·2026-10-01. Results only cover the materials read; dependencies, images, fonts, and subsequent term changes are subject to their respective original texts.
Project checks & description sources
Template Information
- Source platforms
- GitHub
- Documentation and maintenance reference score
- More documented · 80 / 100
- Technologies
- Laravel · React
- Website type
- Starter
How this score is calculated
Our heuristic uses license records (up to 30), a demo link (12), a preview (10), stars (15), recorded maintenance (15), description completeness (8), feature records (5) and classification data (5). It is not a code, security or performance test, or a Google score. A link does not establish tested functionality.
What to verify for this project
- Repository update recorded
- 2026-09-29
- Screenshot last checked
- 2026-10-01
No demo link is recorded. Use the repository instructions to evaluate the project locally; the screenshot alone cannot establish interactive behavior.
The catalog identifies Laravel as the primary stack. Check the actual dependency manifest and lockfile for versions and hosting requirements. These notes use recorded metadata, not a code audit or a deployment test.
Use a selection guide →How this description was prepared
AI-assisted description based on catalog records and repository material. Repository authors are not automatically the reviewers of this description.
Automatically checked against source and license rules; no manual editorial review.
Inspect the recorded source material
SHA-256: 57358f8d7147796b9606c43987c181f2e47bdf7e5b73718de0e47abfc6c36e73
2026-10-01T02:20:23.603Z
Source file / repository# OpenFunnels [](https://github.com/aialvi/openfunnels/actions/workflows/tests.yml) [](https://github.com/aialvi/openfunnels/actions/workflows/lint.yml) [](LICENSE) [](composer.json) [](package.json) [](docs/docker-evaluation.md) OpenFunnels is a self-hosted, open-source funnel builder for creating, publishing, and improving conversion journeys while keeping customer data under your control. It combines a visual page editor with lead-capture forms, a lightweight CRM, durable workflow automation, attribution analytics, A/B experiments, custom domains, portable templates, and optional AI-assisted drafts. The application is built on Laravel, Inertia, React, and TypeScript. ## Demo https://github.com/user-attachments/assets/0f58d31d-6eed-4a5a-9fda-6adbba6317e2 ## Screenshots | Dashboard analytics | Visual funnel editor | | --- | --- | | <img width="760" height="429" alt="OpenFunnels dashboard showing funnel, conversion, contact, and traffic analytics" src="public/ss/dashboard-analytics.webp" /> | <img width="760" height="429" alt="OpenFunnels visual editor with layout controls, form settings, and draggable content blocks" src="public/ss/visual-funnel-editor.webp" /> | | Funnel starter options | Responsive funnel preview | | --- | --- | | <img width="760" height="429" alt="OpenFunnels new funnel dialog with blank canvas and template options" src="public/ss/funnel-starter-options.webp" /> | <img width="760" height="429" alt="Desktop preview of a webinar registration funnel in OpenFunnels" src="public/ss/responsive-funnel-preview.webp" /> | | Form responses | Automation workflow builder | | --- | --- | | <img width="760" height="429" alt="OpenFunnels form response dashboard with lead details and filters" src="public/ss/form-responses.webp" /> | <img width="760" height="429" alt="OpenFunnels automation workflow builder with email, wait, and notification steps" src="public/ss/automation-workflow-builder.webp" /> | | Opportunities pipeline | Multi-platform funnel export | | --- | --- | | <img width="760" height="429" alt="OpenFunnels opportunities pipeline with configurable sales stages and forecast metrics" src="public/ss/opportunities-pipeline.webp" /> | <img width="760" height="429" alt="OpenFunnels export dialog generating funnel code for HTML, React, Vue, WordPress, Laravel, Shopify, and WooCommerce" src="public/ss/multi-platform-funnel-export.webp" /> | ## Quick Start With Docker The evaluation stack is the fastest way to try OpenFunnels. It requires Docker with Compose v2. ```bash git clone https://github.com/aialvi/openfunnels.git cd openfunnels docker compose up --build ``` Open [http://localhost:8000](http://localhost:8000) and select **Launch Demo**. You can also register a persistent local account. The stack includes the web application, queue worker, scheduler, compiled frontend, and a persistent SQLite volume. It is intended for local evaluation—not production—and does not configure TLS, a reverse proxy, or custom-domain infrastructure. ```bash # Follow service logs docker compose logs -f # Stop without deleting local data docker compose down # Remove the stack and its local data docker compose down --volumes ``` See the [Docker evaluation guide](docs/docker-evaluation.md) for more details. ## What You Can Build - **Funnels:** Create pages with a drag-and-drop section, column, and block editor; undo and redo changes; autosave; and preview responsive layouts. - **Templates:** Start from 15 categorized layouts or import and export versioned `.openfunnels.json` template packs. - **Forms and contacts:** Capture configurable and conditional fields, preserve every submission, collect UTM and referrer attribution, manage lead statuses and notes, and export filtered contact segments to CSV. - **Opportunities CRM:** Promote contacts into configurable sales pipelines, forecast deal value, track won/lost outcomes, and optionally create opportunities from individual funnels. - **Automation Studio:** Build versioned trigger-and-action workflows with waits, yes/no branches, CRM updates, email, secure webhooks, run timelines, retries, and starter recipes. - **Publishing:** Publish to slug-based URLs or verified custom domains, preview drafts, and unpublish without deleting content. - **Analytics and experiments:** Track privacy-conscious events, conversion trends, traffic sources, drop-off, and stable A/B variant assignments. - **Operations:** Send new-lead email notifications or webhooks, recover offline editor changes, and export to several web and commerce targets. - **AI-assisted drafts:** Optionally generate funnel drafts through a provider-neutral, Responses-compatible backend driver. - **Guest evaluation:** Run isolated, expiring demo accounts with outbound and administrative actions restricted. ## Local Development ### Requirements - PHP 8.3 or later, with the extensions required by Laravel - Composer 2 - Node.js 22 (the version used in CI and the Docker build) - pnpm 10.13.1 - SQLite ### Setup ```bash git clone https://github.com/aialvi/openfunnels.git cd openfunnels composer install corepack enable pnpm install cp .env.example .env php artisan key:generate touch database/database.sqlite php artisan migrate --seed ``` For local URL generation, set `APP_NAME=OpenFunnels` and `APP_URL=http://localhost:8000` in `.env`. Start Laravel, the queue listener, log tailing, and Vite together: ```bash composer run dev ``` Then visit [http://localhost:8000](http://localhost:8000). The seeded development account is: ```text Email: [email protected] Password: password ``` The seed account is for local development only. You can skip `--seed` and register your own account instead; with the default log mailer, email verification links are written to `storage/logs/laravel.log`. To run the application and frontend separately: ```bash php artisan serve pnpm run dev ``` ## Configuration The default `.env.example` uses SQLite, database-backed queues, sessions and cache, and the log mailer. These optional variables enable additional features: | Variable | Default | Purpose | | --------------------------------- | ----------------------- | ------------------------------------------------ | | `DOMAIN_MAPPING_CNAME_TARGET` | `cname.openfunnels.com` | Expected CNAME target during domain verification | | `DOMAIN_MAPPING_A_RECORD_IP` | empty | Optional accepted A-record address | | `FUNNEL_CUSTOM_DOMAIN_SCHEME` | `https` | Scheme used for verified custom-domain URLs | | `LEAD_CAPTURE_NOTIFICATION_EMAIL` | empty | Overrides the funnel owner's new-lead recipient | | `LEAD_CAPTURE_WEBHOOK_URL` | empty | Receives new-lead webhook payloads | | `AUTOMATION_QUEUE` | `default` | Queue used by Automation Studio jobs | | `AUTOMATION_RUN_RETENTION_DAYS` | `90` | Retention for detailed automation run logs | | `AUTOMATION_STALE_RUN_AFTER_MINUTES` | `5` | Reclaims interrupted running workflow steps | | `AUTOMATION_MAX_NODES` | `50` | Maximum steps in a published workflow | | `AUTOMATION_EVENT_DAILY_LIMIT` | `10000` | Per-owner automation event safety threshold | | `AUTOMATION_WEBHOOK_ALLOW_HTTP` | `false` | Allows non-TLS workflow webhook targets | | `FUNNEL_AI_DRIVER` | `disabled` | Enables a configured funnel-generation driver | | `FUNNEL_AI_ENDPOINT` | OpenAI Responses API | Responses-compatible generation endpoint | | `FUNNEL_AI_API_KEY` | empty | Server-side generation credential | | `FUNNEL_AI_MODEL` | `gpt-5.6-luna` | Model sent to the configured endpoint | | `FUNNEL_AI_TIMEOUT` | `45` | Generation request timeout in seconds | | `DEMO_MODE` | `false` | Enables the isolated guest sandbox | | `DEMO_LIFETIME_HOURS` | `24` | Lifetime of guest sandbox accounts | Do not commit `.env` or expose AI, mail, database, or webhook credentials to the browser. ## Development Commands | Command | Purpose | | -------------------------------- | ------------------------------------------------- | | `composer run dev` | Start Laravel, the queue listener, Pail, and Vite | | `composer test` | Clear cached config and run the PHP test suite | | `php artisan test --filter=Name` | Run a focused PHP test | | `vendor/bin/pint --test` | Check PHP formatting without changing files | | `vendor/bin/pint` | Format PHP files | | `pnpm run dev` | Start only the Vite development server | | `pnpm run build` | Build production frontend assets | | `pnpm run build:ssr` | Build browser and SSR assets | | `pnpm run test` | Run frontend unit tests with Vitest | | `pnpm run types` | Type-check TypeScript | | `pnpm run lint` | Check frontend lint rules | | `pnpm run lint:fix` | Fix frontend lint violations where possible | | `pnpm run format:check` | Check frontend formatting | | `pnpm run format` | Format files under `resources/` | Generated Vite assets in `public/build` should not be committed. ## Architecture At A Glance ```text React editor ──> canonical sections/columns/blocks JSON ──> draft preview └─────> published funnel Public form ───> contact ──> submission timeline ──> notification/webhook Public events ─> attribution and conversion data ──> dashboard/experiments ``` Key locations: ```text app/Http/Controllers/ HTTP behavior for funnels, contacts, leads, and analytics app/Models/ Eloquent models and funnel publishing helpers app/Policies/FunnelPolicy.php Authorization for user-owned funnels resources/js/pages/ Inertia pages, including the primary editor resources/js/components/editor/ Drag-and-drop editor UI resources/js/stores/funnelStore.ts Zustand + Immer editor state and history resources/js/types/editor.ts Canonical funnel editor types resources/js/lib/exporters/ Funnel export implementations routes/web.php Public, authenticated, and custom-domain routes tests/ Pest feature/unit tests and Vitest frontend tests ``` ## Documentation - [Contributing](CONTRIBUTING.md): setup, architecture boundaries, pull-request expectations, and verification. - [Self-hosting](docs/self-hosting.md): production services, deployment, workers, health checks, backups, and custom domains. - [Template format](docs/template-format.md): portable community template schema and contribution workflow. - [Product roadmap](Roadmap.md): completed foundation, current priorities, and longer-term tracks. - [Design direction](DESIGN.md): UI principles and visual language. - [MVP funnel and CRM PRD](docs/prds/mvp-funnel-crm.md): core funnel, form, and contact behavior. - [Domain mapping PRD](docs/prds/domain-mapping.md): custom-domain requirements and boundaries. - [Agent guide](AGENTS.md): repository conventions for AI-assisted contributions. ## Contributing And Support Contributions are welcome. Please read [CONTRIBUTING.md](CONTRIBUTING.md) and keep changes focused, tested, and documented. - Report bugs through [GitHub Issues](https://github.com/aialvi/openfunnels/issues). - Ask questions and discuss ideas in [GitHub Discussions](https://github.com/aialvi/openfunnels/discussions). - Report security vulnerabilities privately through [GitHub Security Advisories](https://github.com/aialvi/openfunnels/security/advisories/new) and review [SECURITY.md](SECURITY.md). OpenFunnels is released under the [MIT License](LICENSE). If OpenFunnels is useful to you, you can [support its continued development](https://www.buymeacoffee.com/aialvi).
Explore similar templates
Compare previews and descriptions within the same stack and category.

sage
Sage is a WordPress starter theme maintained by Roots, using Laravel Blade components and templates, Vite builds, Tailwind CSS, and built-in block editor support.
Laravel · Starter

wave
Wave is an open-source SaaS starter kit built on Laravel and released under the MIT license.
Laravel · SaaS

filament-starter
A Laravel TALL stack starter template maintained by Log1x, with a preconfigured Filament admin panel and plugins including Curator, Gravatar, Exceptions, Jobs Monitor, Breezy, Peek, and Logger.
Laravel · Starter

electrik
Electrik is a Laravel SaaS starter kit installed as a Composer package, with authentication, teams, Stripe subscription billing, and the Slate 3 interface under the Electrik\ namespace rather than copied into App\.
Laravel · SaaS

php-saas
php-saas is a Laravel-based SaaS starter positioned as an everything-included kit. It generates new projects via a global Composer command and includes authentication with two-factor, API tokens, Stripe and Paddle billing, and project, team, and organization management.
Laravel · SaaS

filament-jetstream
A Laravel starter kit that implements Jetstream-like authentication and account features using Filament's native panels and components. It includes login, registration, two-factor authentication, session management, user profiles, and optional teams and API tokens.
Laravel · Starter
