PHPackages                             brilliance/craft-launcher - 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. [Admin Panels](/categories/admin)
4. /
5. brilliance/craft-launcher

ActiveCraft-plugin[Admin Panels](/categories/admin)

brilliance/craft-launcher
=========================

Universal search launcher for Craft CMS admin panel

v1.4.4(1mo ago)3270[2 issues](https://github.com/brilliancenw/craft-launcher/issues)GPL-3.0-or-laterPHPPHP ^8.2

Since Sep 5Pushed 1mo agoCompare

[ Source](https://github.com/brilliancenw/craft-launcher)[ Packagist](https://packagist.org/packages/brilliance/craft-launcher)[ RSS](/packages/brilliance-craft-launcher/feed)WikiDiscussions main Synced yesterday

READMEChangelog (10)Dependencies (9)Versions (20)Used By (0)

Craft Launcher Plugin
=====================

[](#craft-launcher-plugin)

A universal search launcher for the Craft CMS admin panel that provides quick access to content, settings, and navigation throughout your Craft installation. Think of it as Spotlight for macOS or Command Palette for VS Code, but specifically designed for Craft CMS with intelligent usage tracking.

[![Launcher in Action](docs/images/launcher-in-action.png)](docs/images/launcher-in-action.png)*The launcher showing popular items with smart keyboard shortcuts and launch counts*

Features
--------

[](#features)

### Core Search &amp; Navigation

[](#core-search--navigation)

- **Universal Search**: Quickly search across entries, users, categories, assets, globals, sections, entry types, and more
- **Browse Mode**: Type `*` to explore all content types and drill down into specific areas
- **Gmail-Style Search Filters**: Filter icon opens dropdown panel with toggles for drafts, disabled items, nested entries, and section/entry type filtering
- **Smart Navigation**: Jump to any section of the Craft control panel instantly
- **Keyboard Shortcuts**: Navigate entirely with your keyboard for maximum efficiency
- **Theme Integration**: Seamlessly matches your Craft admin panel theme and styling
- **Permission-Aware**: Only shows content you have permission to access - comprehensive checks for all content types

### Intelligent Usage Tracking

[](#intelligent-usage-tracking)

- **Launch History**: Tracks which items you actually navigate to (not just search for)
- **Popular Items**: Shows your most-used items when you first open the launcher
- **Launch Count Display**: See how many times you've accessed each item
- **Individual Item Removal**: Remove specific items from your history with a subtle X button
- **Privacy Controls**: Enable/disable history tracking or clear all data

### Commerce Integration

[](#commerce-integration)

- **Customer Search**: Find Commerce customers by name or email
- **Product Search**: Search products and variants
- **Order Search**: Find orders by reference number or customer details
- **Customer Name Fallbacks**: Handles missing customer names gracefully

### Advanced Content Types

[](#advanced-content-types)

- **Entry Types**: Search and navigate to entry type configurations
- **Section Management**: Quick access to section settings
- **Field Management**: Navigate directly to field definitions
- **Plugin Settings**: Access plugin configuration panels
- **User Management**: Find users and access their profiles

Requirements
------------

[](#requirements)

- Craft CMS 5.0.0 or later
- PHP 8.2 or later

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

[](#installation)

### Method 1: Via Composer (Recommended)

[](#method-1-via-composer-recommended)

1. **Navigate to your Craft project:**

    ```
    cd /path/to/your/craft/project
    ```
2. **Install the plugin:**

    ```
    composer require brilliance/craft-launcher
    ```
3. **Enable the plugin:**

    ```
    php craft plugin/install launcher
    ```

### Method 2: Via Control Panel

[](#method-2-via-control-panel)

1. Navigate to **Settings → Plugins** in your Craft admin panel
2. Click the **"Plugin Store"** button
3. Search for **"Launcher"**
4. Click **"Install"** next to the Craft Launcher plugin
5. Follow the on-screen installation instructions

### Post-Installation

[](#post-installation)

1. **Set Permissions**: Navigate to **Settings → Users → User Groups** and ensure your user groups have the "Access Launcher" permission
2. **Configure Settings**: Visit **Settings → Launcher** to customize keyboard shortcuts and search behavior
3. **Test It Out**: Press `Cmd+K` (Mac) or `Ctrl+K` (Windows/Linux) anywhere in the admin panel

Usage Guide
-----------

[](#usage-guide)

### Opening the Launcher

[](#opening-the-launcher)

- **Keyboard Shortcut**: Press `Cmd+K` (Mac) or `Ctrl+K` (Windows/Linux) from anywhere in the Craft admin panel
- **Same Shortcut to Close**: Press your keyboard shortcut again or `Esc` to close
- **Smart Initial Display**: Shows your most popular items when first opened (based on actual usage)

### Search Modes

[](#search-modes)

#### **Universal Search Mode** (Default)

[](#universal-search-mode-default)

Just start typing to search across all enabled content types:

- `homepage` - Finds entries, categories, assets with "homepage" in the title
- `john` - Finds users, entries, or content authored by or mentioning "john"
- `products` - Finds entries, categories, sections, Commerce products related to products

#### **Browse Mode**

[](#browse-mode)

Type `*` to enter browse mode and explore your content systematically:

1. **Type `*`** - Shows all available content types
2. **Select a content type** - Use arrow keys or number keys (1-9) to select
3. **Browse all items** - See all entries, users, categories, etc. of that type
4. **Navigate normally** - Use Enter or click to open items

**Available browse categories:**

- **Entries** - All entry content
- **Categories** - Category items
- **Assets** - Media and files
- **Users** - User accounts
- **Global Sets** - Global content
- **Sections** - Entry section settings
- **Entry Types** - Entry type definitions
- **Category Groups** - Category group settings
- **Asset Volumes** - Asset volume settings
- **Fields** - Field definitions
- **Plugins** - Plugin settings
- **Settings** - System settings and configuration pages

### Launch History System

[](#launch-history-system)

#### **How It Works**

[](#how-it-works)

The launcher tracks which items you actually navigate to (not just search for) and builds a personalized usage profile:

- **Recording**: Every time you click or press Enter on a search result, it's recorded
- **Frequency Tracking**: Items you use more often appear higher in the list
- **Intelligent Ranking**: Combines frequency with recency for optimal relevance
- **Per-User**: Each user has their own separate launch history

#### **Popular Items Display**

[](#popular-items-display)

When you first open the launcher (without typing), you'll see:

- **Section Title**: "Popular Items (hover over items to remove)"
- **Launch Counts**: Each item shows how many times you've accessed it
- **Smart Ordering**: Most-used items appear first
- **Remove Options**: Hover over any item to see a subtle X button

#### **Managing Your History**

[](#managing-your-history)

- **Remove Individual Items**: Hover over any popular item and click the X button
- **Clear All History**: Use the "Clear History" utility in plugin settings
- **Disable Tracking**: Turn off launch history in Settings → Launcher
- **Privacy**: All data is stored locally in your Craft database

### Commerce Integration

[](#commerce-integration-1)

If Craft Commerce is installed, the launcher provides enhanced e-commerce search:

#### **Customer Search**

[](#customer-search)

- Search by customer name or email address
- Graceful handling of customers without names
- Direct links to customer management pages

#### **Product Search**

[](#product-search)

- Find products and product variants
- Search by product name or SKU
- Quick access to product edit pages

#### **Order Search**

[](#order-search)

- Search orders by reference number
- Find orders by customer name or email
- Multiple search strategies for comprehensive results

### Keyboard Navigation

[](#keyboard-navigation)

KeyAction**Type anything**Start searching**`*`**Enter browse mode**`↑` `↓`**Navigate through results**`Enter`**Open first result (selected result)**`Cmd+1` to `Cmd+9`**Jump to numbered results (configurable modifier)**`Esc`**Close launcher**`Cmd+K` / `Ctrl+K`**Close launcher (same as open)**`Hover + Click X`**Remove item from history**Note**: Result navigation uses modifier keys (default: `Cmd+1` through `Cmd+9`) to avoid conflicts when typing numbers in search queries. The modifier key can be customized in Settings → Launcher.

### Search Filters

[](#search-filters)

Click the filter icon in the search box to open a dropdown panel with powerful filtering options:

#### Toggle Filters

[](#toggle-filters)

- **Include Drafts**: Show draft entries in search results
- **Include Disabled**: Show disabled entries in search results
- **Include Nested Entries**: Show nested/child entries in search results

#### Content Filters

[](#content-filters)

- **Sections**: Filter results to specific sections (collapsible checkbox list)
- **Entry Types**: Filter results to specific entry types (collapsible checkbox list)

#### How It Works

[](#how-it-works-1)

- **Immediate Apply**: Filters apply instantly when toggled - no submit button needed
- **Per-User Persistence**: In the control panel, filter preferences are saved to your user account. On the front-end, filters are stored in your browser's localStorage for cache compatibility.
- **Admin Control**: Administrators can control which filter options are visible to users in plugin settings
- **Smart Defaults**: All content is included by default; filters are additive restrictions

#### Nested Entries

[](#nested-entries)

Nested entries (entries that belong to Matrix, Neo, or other nested entry fields) have special handling:

- They appear in search results when "Include Nested Entries" is enabled
- Section filters do not affect nested entries (since they don't belong to sections directly)
- Status filtering (Include Disabled) applies correctly to nested entries

Front-end Launcher
------------------

[](#front-end-launcher)

The launcher can also be enabled on the front-end of your website, providing quick access to admin functions while browsing your live site.

### Enabling Front-end Access

[](#enabling-front-end-access)

1. **Navigate to your account preferences**: Go to **My Account → Launcher** in the admin panel
2. **Enable the front-end launcher**: Toggle on "Enable Front-end Launcher"
3. **Configure link behavior** (optional): Toggle on "Open Front-end Links in New Tab" to keep your current page open when navigating

[![Front-end Launcher Settings](docs/images/launcher-personal-preferences.png)](docs/images/launcher-personal-preferences.png)*User account preferences showing front-end launcher options*

### Using the Front-end Launcher

[](#using-the-front-end-launcher)

Once enabled, the launcher works the same way on your front-end as it does in the admin panel:

- **Same keyboard shortcut**: Press `Cmd+K` (Mac) or `Ctrl+K` (Windows/Linux) while browsing your website
- **Context-aware search**: When viewing an entry page, search for "edit" to quickly jump to editing that specific page
- **Full admin access**: Search all content types, settings, and admin areas you have permission to access
- **Recent items**: Access your frequently used admin pages from anywhere on your site

### Front-end Features

[](#front-end-features)

- **Context-aware Search**: When viewing an entry page, search for 'edit' to quickly edit the current page
- **Smart Page Filtering**: Current page edit links are filtered out of popular items (no need to see "edit this page" when you're already on it)
- **History Tracking**: Context actions like "Edit this page" are now tracked in your personal history for better productivity
- **Full Search Access**: Search all content types you have permission to access
- **Admin Navigation**: Quick access to settings pages and control panel areas
- **Recent Items**: Access your recently used items from any page

### Security &amp; Privacy

[](#security--privacy)

The front-end launcher includes several security measures:

- **Authentication required**: Only visible when you are logged in with launcher permissions
- **Cache-compatible design**: Uses a bootstrap approach that works with full-page caching while still validating each user
- **Rate limited**: Prevents abuse with a limit of 30 searches per minute (60 for bootstrap requests)
- **Bot detection**: Automatically disabled for bots and suspicious requests (empty user agents)
- **Permission validation**: Context validation ensures you can only edit entries you have permission for
- **Selective loading**: Only loads on legitimate user requests, not for crawlers or automated tools
- **Local filter storage**: Front-end filter preferences are stored in browser localStorage for privacy and cache compatibility

### Full Page Caching Compatibility

[](#full-page-caching-compatibility)

The front-end launcher is fully compatible with full-page caching solutions:

- Blitz
- Cloudflare CDN
- Varnish
- Similar full-page caching systems

**How it works**: The launcher uses a bootstrap approach where a small script is injected into pages. This script calls an action endpoint (`/actions/launcher/bootstrap`) to check authorization. Since Craft action endpoints bypass page caches, each user gets their own authorization check even on cached pages.

**Filter Storage**: On the front-end, search filter preferences are stored in your browser's localStorage rather than on the server. This ensures filters work correctly with cached pages and provides faster performance. A note in the filter panel indicates when filters are stored locally.

### Link Behavior Options

[](#link-behavior-options)

**Open Front-end Links in New Tab**: When enabled, clicking on entries and pages from the launcher will open them in a new tab, keeping the current page open. This is particularly useful when:

- Browsing your live site and wanting to edit content without losing your place
- Comparing live content with admin interface
- Quick content reviews while maintaining your browsing context

### Pro Tips

[](#pro-tips)

- **Popular vs Recent**: The launcher shows popular items (based on usage) rather than just recent items for better productivity
- **Usage Tracking**: The more you use an item, the higher it appears in your popular items list
- **Privacy Control**: You can disable history tracking or clear all data anytime in settings
- **Commerce Orders**: Search for orders using partial reference numbers for quick access
- **Entry Types**: Quickly navigate to entry type configurations for content modeling work
- **Front-end editing**: Use the context-aware search to quickly edit the page you're currently viewing

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

[](#configuration)

Navigate to **Settings → Launcher** to customize your experience:

[![Settings Screen](docs/images/launcher-settings.png)](docs/images/launcher-settings.png)*Comprehensive settings interface for customizing search behavior and content types*

### General Settings

[](#general-settings)

SettingDescriptionDefault**Keyboard Shortcut**Hotkey to open/close launcher`Cmd+K` / `Ctrl+K`**Search Debounce Delay**Delay before search executes (milliseconds)`300`**Maximum Results**Number of results to show per content type`10`### Result Navigation Shortcuts

[](#result-navigation-shortcuts)

SettingDescriptionDefault**Modifier Key**Key used with numbers for result selection`Command (⌘)`Configure how to activate search results:

- **First Result**: Always uses Return/Enter key
- **Numbered Results**: Use modifier key + number (1-9)
- **Available Modifiers**: Command (⌘), Control (Ctrl), Alt/Option (⌥), or Shift (⇧)
- **Example**: With "Command" selected, press Cmd+1 for first numbered result, Cmd+2 for second, etc.

### Launch History Settings

[](#launch-history-settings)

SettingDescriptionDefault**Track Launch History**Enable intelligent usage tracking`Enabled`**Max Popular Items**Maximum number of popular items to show`10`Control your privacy and usage tracking:

- **Enable/Disable**: Turn launch history tracking on or off
- **Clear History**: Remove all stored usage data
- **Per-User Storage**: Each user maintains separate history data

### Content Types

[](#content-types)

Control which types of content appear in search results:

- **Entries** - Blog posts, pages, and other entry content
- **Categories** - Category taxonomies
- **Assets** - Images, documents, and media files
- **Users** - User accounts and profiles
- **Global Sets** - Site-wide content and settings
- **Sections** - Entry section configurations
- **Entry Types** - Entry type definitions
- **Category Groups** - Category group settings
- **Asset Volumes** - Asset storage configurations
- **Fields** - Custom field definitions
- **Plugins** - Installed plugin settings
- **Settings** - System settings and configuration pages

### Commerce Settings

[](#commerce-settings)

If Craft Commerce is installed:

- **Search Commerce Customers** - Include customer accounts in search
- **Search Commerce Products** - Include products and variants
- **Search Commerce Orders** - Include order search functionality

### Content Filtering

[](#content-filtering)

Fine-tune which content appears in results:

- **Search Drafts**: Include draft entries in search results
- **Search Revisions**: Include entry revisions in search results
- **Search Disabled Items**: Include disabled entries, users, etc.
- **Search Entries by Author**: Find entries by author name
- **Searchable Sections**: Limit entry search to specific sections
- **Searchable Entry Types**: Limit entry search to specific types
- **Searchable Category Groups**: Limit category search to specific groups
- **Searchable Asset Volumes**: Limit asset search to specific volumes

### Permissions

[](#permissions)

The launcher respects all existing Craft permissions with comprehensive checks:

#### General Permissions

[](#general-permissions)

- Users only see content they can access
- The "Access Launcher" permission controls who can use the plugin
- All element-level permissions are automatically enforced
- Launch history is stored per-user and private

#### Admin-Only Content

[](#admin-only-content)

Non-admin users will not see these content types in search results:

- Sections and Entry Types (configuration)
- Fields and Field Groups
- Plugins and Plugin Settings
- Asset Volumes (configuration)
- Category Groups (configuration)
- Static Settings pages

#### Permission-Checked Content

[](#permission-checked-content)

These content types check specific permissions:

- **Utilities**: Checks `utility:` permission for each utility
- **Globals**: Checks `editGlobalSet:` permission for each global set
- **Users**: Requires `viewUsers` permission to search users

#### Commerce Permissions (if installed)

[](#commerce-permissions-if-installed)

- **Customers**: Requires `commerce-manageCustomers` permission
- **Products**: Requires `commerce-manageProducts` permission
- **Orders**: Requires `commerce-manageOrders` permission

### Admin User Management

[](#admin-user-management)

Administrators can view and edit other users' launcher preferences:

1. Navigate to a user's profile page in the admin panel
2. Click the **Rocket Launcher** tab (visible for users with launcher permission)
3. View or modify the user's front-end launcher settings
4. Click **Save** to apply changes

This is useful for:

- Enabling front-end launcher for content editors
- Troubleshooting user-specific settings
- Standardizing preferences across team members

Recent Improvements
-------------------

[](#recent-improvements)

### Version 1.4.0 Features

[](#version-140-features)

*Thanks to [Brian Hackett](https://github.com/SETU-WEB) for reporting the front-end launcher issues ([\#16](https://github.com/brilliancenw/craft-launcher/issues/16))*

#### **Blitz Cache Compatibility Fix**

[](#blitz-cache-compatibility-fix)

- **Event Timing**: Fixed an issue where the front-end launcher script was not being injected on the first page load when using Blitz cache
- **Root Cause**: The launcher was using `Response::EVENT_BEFORE_SEND` which fires AFTER Blitz captures the response for caching
- **Solution**: Changed to `Response::EVENT_AFTER_PREPARE` with handler prepending to ensure the launcher script is injected BEFORE Blitz caches the page
- **Result**: The launcher now works correctly on the first page load, even with full-page caching enabled

#### **Front-End Action URL Fixes** (Fixes [\#16](https://github.com/brilliancenw/craft-launcher/issues/16))

[](#front-end-action-url-fixes-fixes-16)

- Fixed front-end action URLs to use `UrlHelper::actionUrl()` for proper routing
- Ensures `/actions/launcher/...` URLs work correctly on front-end pages
- Resolves issue where front-end search returned no results

#### **Search Index Utility**

[](#search-index-utility)

A new Search Index Status section has been added to the Rocket Launcher utility (Utilities &gt; Rocket Launcher):

- **Indexed Sections Table**: Shows each section with total entry count, indexed count, and status indicator
- **Status Indicators**: Green (fully indexed), orange (partially indexed), red (not indexed)
- **Per-Section Reindex**: Click "Reindex" next to any section to rebuild its search index
- **Reindex All**: One-click button to reindex all sections at once
- **Searchable Fields List**: View all fields configured for search indexing
- **Total Keywords Count**: See the total number of indexed keywords in your database

#### **Search Content Requirements**

[](#search-content-requirements)

Craft CMS always indexes entry titles and slugs by default. To search content within other fields:

1. **Field Configuration**: Each field must have "Use this field's values as search keywords" enabled in its field settings
2. **Index Rebuild**: After enabling searchability on a field, run a search index rebuild via the utility or command line: ```
    php craft resave/entries --section=your-section --update-search-index
    ```
3. **Verification**: Use the new Search Index Utility to verify entries are properly indexed

### Version 1.3.0 Features

[](#version-130-features)

#### **Gmail-Style Search Filters**

[](#gmail-style-search-filters)

- **Filter Dropdown**: Click the filter icon in the search box to open a filtering panel
- **Toggle Filters**: Include/exclude drafts, disabled entries, and nested entries
- **Content Filters**: Filter by specific sections and entry types with collapsible checkbox lists
- **Instant Apply**: Filters take effect immediately without needing to click a button
- **Persistent Preferences**: Filter settings are saved per-user and restored on next visit
- **Admin Control**: Plugin settings control which filter options users can see

#### **Comprehensive Permission System**

[](#comprehensive-permission-system)

- **Admin-Only Content**: Sections, entry types, fields, plugins, and other configuration items hidden from non-admins
- **Utility Permissions**: Each utility checks its specific permission before appearing
- **Global Permissions**: Global sets check `editGlobalSet:` permission
- **Commerce Permissions**: Products, orders, and customers check their respective Commerce permissions

#### **Admin User Management**

[](#admin-user-management-1)

- **User Profile Tab**: Rocket Launcher tab appears on user profile pages
- **Edit Other Users**: Admins can view and modify other users' launcher preferences
- **Save Functionality**: Full form submission with proper save button

#### **Nested Entries Improvements**

[](#nested-entries-improvements)

- **Proper Search**: Nested entries now appear correctly when enabled
- **Section Filter Compatibility**: Nested entries (which have no section) work with section filters
- **Status Filtering**: Include Disabled toggle properly applies to nested entries

### Version 1.1.0 Features

[](#version-110-features)

#### **Enhanced History Tracking**

[](#enhanced-history-tracking)

- **Proper Item IDs**: All search results now include proper item IDs for accurate history tracking
- **Settings Handles**: Static settings pages now use meaningful handles (e.g., "categories", "fields") instead of NULL values
- **SHA-256 Support**: Updated database schema to support full SHA-256 hashes (64 characters) for better uniqueness
- **Database Migrations**: Automatic migration to fix existing installations with incorrect column sizes

#### **Improved Front-end Experience**

[](#improved-front-end-experience)

- **Context Action History**: "Edit this page" and similar context actions are now tracked in personal history
- **Smart Filtering**: Current page edit links are filtered out of history results when viewing that page
- **Better UX**: No redundant "edit this page" suggestions when you're already on the page

#### **Browse Mode Enhancements**

[](#browse-mode-enhancements)

- **Settings Browse**: Type `*` and select "Settings" to browse all system configuration pages
- **Complete Coverage**: Browse mode now includes all 15+ settings areas (General, Email, Categories, etc.)
- **Consistent Navigation**: All settings pages properly tracked with meaningful identifiers

#### **Utility Improvements**

[](#utility-improvements)

- **Table Management**: New "Launcher" utility in Utilities menu for database table diagnostics
- **Success Reporting**: Fixed utility feedback to properly report table creation success/failure
- **Schema Validation**: Automatic validation of table structure and column sizes

#### **Developer Experience**

[](#developer-experience)

- **Better Debugging**: Improved error handling and logging for troubleshooting
- **Migration Safety**: Safe database migrations that handle missing tables gracefully
- **API Consistency**: All search results now have consistent data structures

Advanced Features
-----------------

[](#advanced-features)

### Custom Search Providers

[](#custom-search-providers)

Developers can extend the launcher with custom search providers:

```
use brilliance\launcher\events\RegisterSearchProvidersEvent;
use brilliance\launcher\services\SearchService;
use yii\base\Event;

Event::on(
    SearchService::class,
    SearchService::EVENT_REGISTER_SEARCH_PROVIDERS,
    function(RegisterSearchProvidersEvent $event) {
        $event->providers[] = new MyCustomSearchProvider();
    }
);
```

### Custom Actions

[](#custom-actions)

Register custom actions for search results:

```
use brilliance\launcher\events\RegisterActionsEvent;
use brilliance\launcher\services\ActionService;
use yii\base\Event;

Event::on(
    ActionService::class,
    ActionService::EVENT_REGISTER_ACTIONS,
    function(RegisterActionsEvent $event) {
        $event->actions[] = new MyCustomAction();
    }
);
```

### Launch History API

[](#launch-history-api)

Programmatically interact with launch history:

```
// Get popular items for current user
$popularItems = Launcher::$plugin->history->getPopularItems(10);

// Clear user's history
$success = Launcher::$plugin->history->clearUserHistory();

// Get usage statistics
$stats = Launcher::$plugin->history->getUserStats();
```

### Plugin Integrations

[](#plugin-integrations)

The Launcher includes an extensible integration system that allows plugins to display contextual information and actions in search results.

[![Plugin Integrations](docs/images/integrations-demo.png)](docs/images/integrations-demo.png)

#### Built-in Integrations

[](#built-in-integrations)

**Blitz Cache Integration**

- Shows cache status (Cached/Uncached/Not Cacheable)
- Provides "Clear Cache" action for cached pages
- Automatically detects cacheable pages

**View Count Integration**

- Displays view count statistics for elements
- Formats counts with K/M suffixes for large numbers
- Works with entries, categories, and other elements

#### Creating Custom Integrations

[](#creating-custom-integrations)

Third-party plugin developers can register their own integrations to appear in Launcher search results.

**Step 1: Create an Integration Class**

```
