diff --git a/doc/source/cli/plugin-commands/octavia.rst b/doc/source/cli/plugin-commands/octavia.rst
index fb48f0ac7e..ce6259dd25 100644
--- a/doc/source/cli/plugin-commands/octavia.rst
+++ b/doc/source/cli/plugin-commands/octavia.rst
@@ -3,5 +3,8 @@ octavia
 
 .. TODO(efried): cut over to autoprogram-cliff once doc build is fixed
 
+For more details, see the :python-octaviaclient-doc:`python-octaviaclient
+plugin documentation </cli/index>`.
+
 .. list-plugins:: openstack.load_balancer.v2
    :detailed:
diff --git a/doc/source/cli/plugin-commands/watcher.rst b/doc/source/cli/plugin-commands/watcher.rst
index 7f9afbdc26..c888d3a153 100644
--- a/doc/source/cli/plugin-commands/watcher.rst
+++ b/doc/source/cli/plugin-commands/watcher.rst
@@ -3,5 +3,8 @@ watcher
 
 .. TODO(efried): cut over to autoprogram-cliff once doc build is fixed
 
+For more details, see the :python-watcherclient-doc:`python-watcherclient
+plugin documentation </cli/openstack_cli>`.
+
 .. list-plugins:: openstack.infra_optim.v1
    :detailed:
diff --git a/doc/source/cli/plugin-commands/zun.rst b/doc/source/cli/plugin-commands/zun.rst
index 40480e70ca..69f4f62c84 100644
--- a/doc/source/cli/plugin-commands/zun.rst
+++ b/doc/source/cli/plugin-commands/zun.rst
@@ -3,5 +3,8 @@ zun
 
 .. TODO(efried): cut over to autoprogram-cliff once doc build is fixed
 
+For more details, see the :python-zunclient-doc:`python-zunclient plugin
+documentation </cli/command-list>`.
+
 .. list-plugins:: openstack.container.v1
    :detailed:
diff --git a/doc/source/conf.py b/doc/source/conf.py
index 45045002aa..92febda46d 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -34,6 +34,12 @@ extensions = ['sphinx.ext.autodoc',
 repository_name = 'openstack/python-openstackclient'
 use_storyboard = True
 
+openstack_projects = [
+    'python-octaviaclient',
+    'python-watcherclient',
+    'python-zunclient',
+]
+
 # Add any paths that contain templates here, relative to this directory.
 #templates_path = ['_templates']