diff --git a/zuul/launcher/jenkins.py b/zuul/launcher/jenkins.py
index 1c6cb6c..1ddf7d9 100644
--- a/zuul/launcher/jenkins.py
+++ b/zuul/launcher/jenkins.py
@@ -137,7 +137,14 @@
         self.log.info("Launch job %s for change %s with dependent changes %s" % (
                 job, change, dependent_changes))
         uuid = str(uuid1())
-        params = dict(UUID=uuid)
+        dependent_changes_str = '^'.join(
+            ['%s:%s:%s' % (c.project.name, c.branch, c.refspec) 
+             for c in dependent_changes])
+        params = dict(UUID=uuid,
+                      GERRIT_PROJECT=change.project.name,
+                      GERRIT_BRANCH=change.branch,
+                      GERRIT_REFSPEC=change.refspec,
+                      DEPENDENT_CHANGES=dependent_changes_str)
         build = Build(job, uuid)
         self.builds[uuid] = build
         # We can get the started notification on another thread before this is done
diff --git a/zuul/model.py b/zuul/model.py
index ac64761..aafcdd6 100644
--- a/zuul/model.py
+++ b/zuul/model.py
@@ -136,11 +136,13 @@
         return tree.getJobs()
 
 class Change(object):
-    def __init__(self, queue_name, project, number, patchset):
+    def __init__(self, queue_name, project, branch, number, patchset, refspec):
         self.queue_name = queue_name
         self.project = project
+        self.branch = branch
         self.number = number
         self.patchset = patchset
+        self.refspec = refspec
         self.jobs = {}
         self.job_urls = {}
         self.change_ahead = None
@@ -241,6 +243,7 @@
         self.project_name = None
         self.change_number = None
         self.patch_number = None
+        self.refspec = None
         self.approvals = []
         self.branch = None
         self.ref = None
diff --git a/zuul/scheduler.py b/zuul/scheduler.py
index c6570c2..0760c28 100644
--- a/zuul/scheduler.py
+++ b/zuul/scheduler.py
@@ -160,8 +160,9 @@
                 self.log.debug("Event %s ignored by %s" % (event, manager))
                 continue
             if event.change_number:
-                change = Change(manager.name, project,
-                                event.change_number, event.patch_number)
+                change = Change(manager.name, project, event.branch,
+                                event.change_number, event.patch_number,
+                                event.refspec)
                 self.log.info("Adding %s, %s to to %s" % (
                         project, change, manager))
                 manager.addChange(change)
diff --git a/zuul/trigger/gerrit.py b/zuul/trigger/gerrit.py
index 8708207..36b1618 100644
--- a/zuul/trigger/gerrit.py
+++ b/zuul/trigger/gerrit.py
@@ -40,6 +40,7 @@
             patchset = data.get('patchSet')
             if patchset:
                 event.patch_number = patchset.get('number')
+                event.refspec = patchset.get('ref')
             event.approvals = data.get('approvals')
         self.sched.addEvent(event)
 
