PHPackages                             bambolee-digital/onboarding-package - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. bambolee-digital/onboarding-package

ActiveLibrary

bambolee-digital/onboarding-package
===================================

Laravel/FilamentPHP package for managing customizable onboarding flows.

1.0.6(1y ago)024MITPHPPHP ^8.1

Since Sep 14Pushed 1y ago1 watchersCompare

[ Source](https://github.com/Bambolee-Digital/onboarding-package)[ Packagist](https://packagist.org/packages/bambolee-digital/onboarding-package)[ RSS](/packages/bambolee-digital-onboarding-package/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (7)Dependencies (5)Versions (7)Used By (0)

OnboardingPackage
=================

[](#onboardingpackage)

**OnboardingPackage** is a Laravel package that allows you to create customized onboarding flows for users, including dynamic questions, options, conditional messages, and flow control based on user responses. The package supports multiple languages using **Spatie Laravel Translatable** and integrates with the **FilamentPHP** admin panel for easy management.

Table of Contents
-----------------

[](#table-of-contents)

- [Installation](#installation)
- [Configuration](#configuration)
- [Usage](#usage)
    - [Managing Questions and Options](#managing-questions-and-options)
    - [Defining Conditional Messages](#defining-conditional-messages)
    - [Controlling the Question Flow](#controlling-the-question-flow)
- [API Endpoints](#api-endpoints)
    - [Submit User Response](#submit-user-response)
    - [Get User Responses](#get-user-responses)
- [Usage Examples](#usage-examples)
- [License](#license)

Installation
------------

[](#installation)

You can install the package via Composer:

```
composer require bamboleedigital/onboarding-package
```

After installation, publish the migration and configuration files:

```
php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="migrations"
php artisan vendor:publish --provider="BamboleeDigital\OnboardingPackage\Providers\OnboardingServiceProvider" --tag="config"
```

Then, run the migrations:

```
php artisan migrate
```

Configuration
-------------

[](#configuration)

### Filament and Spatie Laravel Translatable

[](#filament-and-spatie-laravel-translatable)

Make sure that **FilamentPHP** and **Spatie Laravel Translatable** are installed and configured in your project.

Install the Filament translation plugin:

```
composer require filament/spatie-laravel-translatable-plugin:"^3.2" -W
```

Add the plugin to your Filament panel:

```
use Filament\SpatieLaravelTranslatablePlugin;

public function panel(Panel $panel): Panel
{
    return $panel
        // ...
        ->plugin(
            SpatieLaravelTranslatablePlugin::make()
                ->defaultLocales(['en', 'pt']), // Set the languages you want to support
        );
}
```

### Package Configuration

[](#package-configuration)

The package configuration file allows you to customize options as needed. The `config/onboarding-package.php` file will be published in the root of your project's `config` folder.

Usage
-----

[](#usage)

### Managing Questions and Options

[](#managing-questions-and-options)

Access the FilamentPHP admin panel and navigate to the **Questions** menu.

#### Create a New Question

[](#create-a-new-question)

1. Click on **Create**.
2. Enter the **Question Text**. Use the `LocaleSwitcher` to add translations in different languages.
3. Select the **Question Type**:
    - **Text**: The user will provide a free-text answer.
    - **Single Choice**: The user will select one option.
    - **Multiple Choice**: The user can select multiple options.
4. Save the question.

#### Manage Options

[](#manage-options)

For **Single Choice** or **Multiple Choice** questions:

1. Within the created question, access the **Options** tab.
2. Click **Create** to add a new option.
3. Enter the **Option Text** and translations, if applicable.
4. Optionally, add a **Conditional Message** in Markdown. This message will be displayed to the user if this option is selected.
5. Set the **Next Question** if you want to control the flow based on the user's response.
6. Save the option.

### Defining Conditional Messages

[](#defining-conditional-messages)

Conditional messages are directly associated with options. When adding a conditional message to an option, it will be displayed to the user when that option is selected.

### Controlling the Question Flow

[](#controlling-the-question-flow)

You can define the next question the user will see after selecting a particular option:

1. In the option creation or editing form, select the **Next Question** in the corresponding field.
2. If no next question is defined, the system will follow the default order.

API Endpoints
-------------

[](#api-endpoints)

### Submit User Response

[](#submit-user-response)

**URL:** `/api/onboarding/responses`

**Method:** `POST`

**Parameters:**

- `question_id` (integer, required): ID of the answered question.
- `response_id` (integer, optional): ID of the selected option (for choice questions).
- `response` (string, optional): User's response (for text questions).

**Request Example:**

```
POST /api/onboarding/responses
Content-Type: application/json

{
  "question_id": 1,
  "response_id": 5,
  "user_id": 123
}
```

**Response Example:**

```
{
  "next_question": {
    "id": 2,
    "text": "What is your age?",
    "type": "text",
    "options": []
  },
  "conditional_message": {
    "message": "Thank you for choosing this option. Here's a personalized message."
  }
}
```

### Get User Responses

[](#get-user-responses)

**URL:** `/api/onboarding/user-responses`

**Method:** `GET`

**Parameters:**

- `user_id` (integer, required): User ID.

**Request Example:**

```
GET /api/onboarding/user-responses?user_id=123

```

**Response Example:**

```
{
  "responses": [
    {
      "question_id": 1,
      "question_text": "What is your name?",
      "response": "John",
      "response_id": null,
      "option_text": null
    },
    {
      "question_id": 2,
      "question_text": "What is your favorite color?",
      "response": null,
      "response_id": 5,
      "option_text": "Blue"
    }
    // Other responses...
  ]
}
```

Usage Examples
--------------

[](#usage-examples)

### Basic Onboarding Flow

[](#basic-onboarding-flow)

1. The user starts the onboarding process.
2. The application consumes the endpoint to send the user's responses.
3. The backend returns the next question and any conditional messages.
4. The frontend displays the question and processes the user's response.
5. The flow continues until there are no more questions.

### Displaying Conditional Messages

[](#displaying-conditional-messages)

- When the user selects an option with a conditional message, that message is returned in the API response and can be displayed immediately.

### Controlling the Flow Based on Responses

[](#controlling-the-flow-based-on-responses)

- By setting the **Next Question** on an option, you can direct the user to different paths in the onboarding flow, creating personalized experiences.

License
-------

[](#license)

The OnboardingPackage is licensed under the [MIT license](LICENSE.md).

###  Health Score

27

—

LowBetter than 49% of packages

Maintenance35

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity52

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~0 days

Total

6

Last Release

600d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/ea0811b77232bb232cc41a918466de4b146044ce293582045f2df13eeeeffd7f?d=identicon)[bambolee-digital](/maintainers/bambolee-digital)

---

Top Contributors

[![kellvembarbosa](https://avatars.githubusercontent.com/u/3621135?v=4)](https://github.com/kellvembarbosa "kellvembarbosa (8 commits)")

### Embed Badge

![Health badge](/badges/bambolee-digital-onboarding-package/health.svg)

```
[![Health](https://phpackages.com/badges/bambolee-digital-onboarding-package/health.svg)](https://phpackages.com/packages/bambolee-digital-onboarding-package)
```

###  Alternatives

[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3691.5k](/packages/codewithdennis-larament)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
