diff --git a/djblets/registries/registry.py b/djblets/registries/registry.py
index c8093e08989cf9c45b07b805fbf006260be2ef80..5585ca944b4f31585f2d6a79dcf6741e49356a67 100644
--- a/djblets/registries/registry.py
+++ b/djblets/registries/registry.py
@@ -18,6 +18,7 @@ from pkg_resources import iter_entry_points
 from djblets.registries.errors import (AlreadyRegisteredError,
                                        ItemLookupError,
                                        RegistrationError)
+from djblets.registries.signals import registry_populating
 
 
 ALREADY_REGISTERED = 'already_registered'
@@ -279,6 +280,9 @@ class Registry(object):
         for item in self.get_defaults():
             self.register(item)
 
+        registry_populating.send(sender=type(self),
+                                 registry=self)
+
     def get_defaults(self):
         """Return the default items for the registry.
 
diff --git a/djblets/registries/signals.py b/djblets/registries/signals.py
new file mode 100644
index 0000000000000000000000000000000000000000..3f85daa54c6135c006934a32e842a23101e7c1e8
--- /dev/null
+++ b/djblets/registries/signals.py
@@ -0,0 +1,13 @@
+"""Signals for being notified on registry operations."""
+
+from __future__ import unicode_literals
+
+from django.dispatch import Signal
+
+
+#: Emitted when a registry is populating.
+#:
+#: Args:
+#:     registry (djblets.registries.registry.Registry):
+#:         The registry being populated.
+registry_populating = Signal(providing_args=['registry'])
diff --git a/djblets/registries/tests.py b/djblets/registries/tests.py
index f63617cc9b81813f4586ec591e0b2365bc886e4c..c83c81f99dff3a29317a4255b36ec1ef0873176b 100644
--- a/djblets/registries/tests.py
+++ b/djblets/registries/tests.py
@@ -1,11 +1,13 @@
 from __future__ import unicode_literals
 
 from django.utils import six
+from kgb import SpyAgency
 
-from djblets.registries.registry import Registry, OrderedRegistry, UNREGISTER
 from djblets.registries.errors import (AlreadyRegisteredError,
                                        ItemLookupError,
                                        RegistrationError)
+from djblets.registries.registry import Registry, OrderedRegistry, UNREGISTER
+from djblets.registries.signals import registry_populating
 from djblets.testing.testcases import TestCase
 
 
@@ -38,7 +40,7 @@ class Item(object):
                     for attr_name in self._attrs))
 
 
-class RegistryTests(TestCase):
+class RegistryTests(SpyAgency, TestCase):
     """Tests for djblets.registries.Registry."""
 
     def test_empty_by_default(self):
@@ -110,6 +112,8 @@ class RegistryTests(TestCase):
             def get_defaults(self):
                 yield original_item
 
+        self.spy_on(registry_populating.send)
+
         r = TestRegistry()
 
         with self.assertRaises(AlreadyRegisteredError):
@@ -117,6 +121,9 @@ class RegistryTests(TestCase):
 
         self.assertIs(r.get('id', original_item.id),
                       original_item)
+        self.assertTrue(registry_populating.send.called_with(
+            sender=TestRegistry,
+            registry=r))
 
     def test_population_on_unregister(self):
         """Testing Registry.unregister_item triggers population before
@@ -130,10 +137,16 @@ class RegistryTests(TestCase):
             def get_defaults(self):
                 yield item
 
+        self.spy_on(registry_populating.send)
+
         r = TestRegistry()
         r.unregister(item)
         self.assertEqual(len(r), 0)
 
+        self.assertTrue(registry_populating.send.called_with(
+            sender=TestRegistry,
+            registry=r))
+
     def test_registering_duplicate(self):
         """Testing Registry.register_item with duplicate items"""
         r = Registry()
diff --git a/docs/djblets/coderef/index.rst b/docs/djblets/coderef/index.rst
index 5c6e1f84152a1cacd8cf77cb45be44c029d1ef08..de404aed7ea3526cc18f7435c9af98670006d2b1 100644
--- a/docs/djblets/coderef/index.rst
+++ b/docs/djblets/coderef/index.rst
@@ -339,6 +339,7 @@ Registries
    djblets.registries.errors
    djblets.registries.mixins
    djblets.registries.registry
+   djblets.registries.signals
 
 
 .. _coderef-djblets-siteconfig:
