---
title: Universal routes
extends: _layouts.documentation
section: content
---

# Universal Routes

Sometimes, you may want to use the exact same **route action** both in the central application and the tenant application. Note the emphasis on route **action** — you may use the same **path** with different actions in central & tenant routes, whereas this section covers using the same **route and action**.

Generally, try to avoid these use cases as much as possible and prefer duplicating the code. Using the same controller and model for users in central & tenant apps will break down once you need slightly different behavior — e.g. different views returned by controllers, different behavior on models, etc.

First, enable the `UniversalRoutes` feature by uncommenting the following line in your `tenancy.features` config:

```php
Stancl\Tenancy\Features\UniversalRoutes::class,
```

Next, go to your `app/Http/Kernel.php` file and add the following middleware group:

```php
'universal' => [],
```

We will use this middleware group as a "flag" on the route, to mark it as a universal route. We don't need any actual middleware inside the group.

Then, create a route like this:

```php
Route::get('/foo', function () {
    // ...
})->middleware(['universal', InitializeTenancyByDomain::class]);
```

And the route will work in both central and tenant applications. Should a tenant be found, tenancy will be initialized. Otherwise, the central context will be used.

If you're using a different middleware, look at the `UniversalRoutes` feature source code and change the public static property accordingly.