diff --git a/doc/source/conf.py b/doc/source/conf.py
index ca9c9b0..fa00593 100644
--- a/doc/source/conf.py
+++ b/doc/source/conf.py
@@ -30,13 +30,14 @@
     'sphinx.ext.graphviz',
     'sphinxcontrib.blockdiag',
     'sphinxcontrib.programoutput',
+    'zuul_sphinx',
     'zuul.sphinx.ansible',
     'zuul.sphinx.zuul',
 ]
 #extensions = ['sphinx.ext.intersphinx']
 #intersphinx_mapping = {'python': ('http://docs.python.org/2.7', None)}
 
-primary_domain = 'zuul'
+primary_domain = 'zuuldoc'
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
diff --git a/test-requirements.txt b/test-requirements.txt
index dcc67e2..bf8b979 100644
--- a/test-requirements.txt
+++ b/test-requirements.txt
@@ -14,3 +14,4 @@
 mock
 PyMySQL
 mypy
+zuul-sphinx
diff --git a/zuul/sphinx/zuul.py b/zuul/sphinx/zuul.py
index 0ac33b8..575bcb2 100644
--- a/zuul/sphinx/zuul.py
+++ b/zuul/sphinx/zuul.py
@@ -29,10 +29,10 @@
     }
 
     def get_path(self):
-        return self.env.ref_context.get('zuul:attr_path', [])
+        return self.env.ref_context.get('zuuldoc:attr_path', [])
 
     def get_display_path(self):
-        return self.env.ref_context.get('zuul:display_attr_path', [])
+        return self.env.ref_context.get('zuuldoc:display_attr_path', [])
 
     @property
     def parent_pathname(self):
@@ -50,7 +50,7 @@
             signode['ids'].append(targetname)
             signode['first'] = (not self.names)
             self.state.document.note_explicit_target(signode)
-            objects = self.env.domaindata['zuul']['objects']
+            objects = self.env.domaindata['zuuldoc']['objects']
             if targetname in objects:
                 self.state_machine.reporter.warning(
                     'duplicate object description of %s, ' % targetname +
@@ -80,16 +80,16 @@
     }
 
     def before_content(self):
-        path = self.env.ref_context.setdefault('zuul:attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:attr_path', [])
         path.append(self.names[-1])
-        path = self.env.ref_context.setdefault('zuul:display_attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:display_attr_path', [])
         path.append(self.names[-1])
 
     def after_content(self):
-        path = self.env.ref_context.get('zuul:attr_path')
+        path = self.env.ref_context.get('zuuldoc:attr_path')
         if path:
             path.pop()
-        path = self.env.ref_context.get('zuul:display_attr_path')
+        path = self.env.ref_context.get('zuuldoc:display_attr_path')
         if path:
             path.pop()
 
@@ -141,18 +141,18 @@
         return ''
 
     def before_content(self):
-        path = self.env.ref_context.setdefault('zuul:attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:attr_path', [])
         element = self.names[-1]
         path.append(element)
-        path = self.env.ref_context.setdefault('zuul:display_attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:display_attr_path', [])
         element = self.names[-1] + self.get_type_str()
         path.append(element)
 
     def after_content(self):
-        path = self.env.ref_context.get('zuul:attr_path')
+        path = self.env.ref_context.get('zuuldoc:attr_path')
         if path:
             path.pop()
-        path = self.env.ref_context.get('zuul:display_attr_path')
+        path = self.env.ref_context.get('zuuldoc:display_attr_path')
         if path:
             path.pop()
 
@@ -176,18 +176,18 @@
     }
 
     def before_content(self):
-        path = self.env.ref_context.setdefault('zuul:attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:attr_path', [])
         element = self.names[-1]
         path.append(element)
-        path = self.env.ref_context.setdefault('zuul:display_attr_path', [])
+        path = self.env.ref_context.setdefault('zuuldoc:display_attr_path', [])
         element = self.names[-1]
         path.append(element)
 
     def after_content(self):
-        path = self.env.ref_context.get('zuul:attr_path')
+        path = self.env.ref_context.get('zuuldoc:attr_path')
         if path:
             path.pop()
-        path = self.env.ref_context.get('zuul:display_attr_path')
+        path = self.env.ref_context.get('zuuldoc:display_attr_path')
         if path:
             path.pop()
 
@@ -216,7 +216,7 @@
 
 
 class ZuulDomain(Domain):
-    name = 'zuul'
+    name = 'zuuldoc'
     label = 'Zuul'
 
     directives = {
