---
title: Module Integration
description: Integrating Addons usage with Module Registry
date: 2024-01-31
---



## Vision

**Module Registry as the Single Source of Truth.**
Functionality extensions—whether built-in Modules or external Addons—should live in the same UI.

## Registration

Addons register themselves via the `woonoow/addon_registry` filter.

```php
add_filter('woonoow/addon_registry', function($addons) {
    $addons['my-shipping-addon'] = [
        'id'           => 'my-shipping-addon',
        'name'         => 'My Shipping',
        'description'  => 'Custom shipping integration',
        'version'      => '1.0.0',
        'author'       => 'My Company',
        'category'     => 'shipping',
        'icon'         => 'truck',
        'settings_url' => '/settings/shipping/my-addon',
        'spa_bundle'   => plugin_dir_url(__FILE__) . 'dist/addon.js',
    ];
    return $addons;
});
```

This ensures your addon appears in the **WooNooW Modules** list with a consistent UI, toggle switch, and settings link.

## Settings Pages

Addons can register their own SPA routes for settings pages.

```php
add_filter('woonoow/spa_routes', function($routes) {
    $routes[] = [
        'path'          => '/settings/shipping/my-addon',
        'component_url' => plugin_dir_url(__FILE__) . 'dist/Settings.js',
        'title'         => 'My Addon Settings',
    ];
    return $routes;
});
```
