# Events

> An interface for accessing the package manager events. Use these events to monitor package changes in your Unity project.

## Definition

* **Type:** Class
* **Namespace:** [UnityEditor.PackageManager](/engine/6000.7/script-reference/unityeditor/packagemanager.md)
* **Assembly:** UnityEditor.CoreModule

```csharp
public static class Events
```

## Remarks

The [Events.registeringPackages](/engine/6000.7/script-reference/unityeditor/packagemanager/events/registeringpackages.md) event fires before any package changes occur. The [Events.registeredPackages](/engine/6000.7/script-reference/unityeditor/packagemanager/events/registeredpackages.md) event fires after all changes are complete. Both events provide a [PackageRegistrationEventArgs](/engine/6000.7/script-reference/unityeditor/packagemanager/packageregistrationeventargs.md) parameter which contains details about the changes. Events are usually reset during domain reloads, so register your handlers using `[InitializeOnLoad]`.

```csharp
using UnityEditor;
using UnityEditor.PackageManager;
using UnityEngine;

[InitializeOnLoad]
public class PackageChangeMonitor
{
    static PackageChangeMonitor()
    {
        // Register for package change events
        Events.registeringPackages += OnPackagesRegistering;
        Events.registeredPackages += OnPackagesRegistered;
    }

    private static void OnPackagesRegistering(PackageRegistrationEventArgs args)
    {
        // Called before packages are changed
        if (args.added.Count > 0)
            Debug.Log($"About to add {args.added.Count} packages");

        if (args.removed.Count > 0)
            Debug.Log($"About to remove {args.removed.Count} packages");
    }

    private static void OnPackagesRegistered(PackageRegistrationEventArgs args)
    {
        // Called after packages have changed
        foreach (var package in args.added)
            Debug.Log($"Added package: {package.name} ({package.version})");

        foreach (var package in args.removed)
            Debug.Log($"Removed package: {package.name}");
    }
}
```

**Related information**

* [PackageRegistrationEventArgs](/engine/6000.7/script-reference/unityeditor/packagemanager/packageregistrationeventargs.md)
* [PackageInfo](/engine/6000.7/script-reference/unityeditor/packagemanager/packageinfo.md)
* [Client](/engine/6000.7/script-reference/unityeditor/packagemanager/client.md)

## Static Events

| Member                                                                                                          | Description                                                           |
| --------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------- |
| [registeredPackages](/engine/6000.7/script-reference/unityeditor/packagemanager/events/registeredpackages.md)   | Event raised after applying changes to the registered packages list.  |
| [registeringPackages](/engine/6000.7/script-reference/unityeditor/packagemanager/events/registeringpackages.md) | Event raised before applying changes to the registered packages list. |
