diff --git a/conf/trigger_rules.yml.example b/conf/trigger_rules.yml.example
--- a/conf/trigger_rules.yml.example
+++ b/conf/trigger_rules.yml.example
@@ -41,3 +41,10 @@
     tag: {$regex: '/.*(?<!testing-pending)$$/'}
   do:
     - {tasks: [upgradepath]}
+
+- when:
+    message_type: PagureGitReceive
+    repo:
+        $in: [taskotron/execdb, taskotron/libtaskotron, taskotron/resultsdb, taskotron/taskotron-trigger]
+  do:
+    - {discover: {repo: 'https://pagure.io/taskotron/task-taskotron-ci.git' branch="master"}}
diff --git a/fedmsg.d/taskotron-trigger.py b/fedmsg.d/taskotron-trigger.py
--- a/fedmsg.d/taskotron-trigger.py
+++ b/fedmsg.d/taskotron-trigger.py
@@ -3,4 +3,5 @@
     'taskotron.kojibuildcompletedjobconsumer.enabled': True,
     'taskotron.composecompletedjobconsumer.enabled': True,
     'taskotron.distgitcommitjobconsumer.enabled': True,
+    'taskotron.paguregitreceivejobconsumer.enabled': True,
 }
diff --git a/jobtriggers/jobrunner.py b/jobtriggers/jobrunner.py
--- a/jobtriggers/jobrunner.py
+++ b/jobtriggers/jobrunner.py
@@ -8,6 +8,7 @@
 from .koji_build_msg import KojiBuildCompletedJobTrigger
 from .dist_git_commit_msg import DistGitCommitJobTrigger
 from .compose_complete_msg import ComposeCompletedJobTrigger
+from .pagure_git_received import PagureGitReceiveJobTrigger
 
 
 # set up logging
@@ -38,6 +39,12 @@
         'category': 'git',
         'topic': 'org.fedoraproject.prod.git.receive',
         'page': 1,
+    }, {
+        'start': start,
+        'end': end,
+        'category': 'git',
+        'topic': 'io.pagure.prod.pagure.git.receive',
+        'page': 1,
     }]
 
     for params in topics:
@@ -58,7 +65,10 @@
                 elif 'compose' in msg['topic']:
                     trigger = ComposeCompletedJobTrigger(logger)
                 elif msg['topic'].endswith('git.receive'):
-                    trigger = DistGitCommitJobTrigger(logger)
+                    if msg['topic'].startswith('io.pagure'):
+                        trigger = PagureGitReceiveJobTrigger(logger)
+                    else:
+                        trigger = DistGitCommitJobTrigger(logger)
                 else:
                     logger.warning('Got an unexpected topic %s', msg['topic'])
                     continue
diff --git a/jobtriggers/pagure_git_received.py b/jobtriggers/pagure_git_received.py
new file mode 100644
--- /dev/null
+++ b/jobtriggers/pagure_git_received.py
@@ -0,0 +1,50 @@
+import fedmsg.consumers
+
+from . import config  # NOQA  # This gets mocked by the test suite.
+from .jobtrigger import JobTrigger
+from . import exceptions as exc
+
+MESSAGE_TYPE = 'PagureGitReceive'
+ITEM_TYPE = 'git_commit'
+
+
+class PagureGitReceiveJobTrigger(JobTrigger):
+    def process(self, msg):
+        server = 'https://pagure.io'
+        repo = msg['msg']['repo']['name']
+        branch = msg['msg']['branch']
+        start_commit = msg['msg']['start_commit']
+        end_commit = msg['msg']['end_commit']
+
+        item = "%s/%s#%s#%s" % (server, repo, branch, end_commit)
+
+        data = {
+            "_msg": msg,
+            "message_type": MESSAGE_TYPE,
+            "item": item,
+            "item_type": ITEM_TYPE,
+            "server": server,
+            "repo": repo,
+            "branch": branch,
+            "start_commit": start_commit,
+            "end_commit": end_commit,
+        }
+        return data
+
+
+class PagureGitReceiveJobConsumer(fedmsg.consumers.FedmsgConsumer):
+    topic = "io.pagure.prod.pagure.git.receive"
+    config_key = 'taskotron.paguregitreceivejobconsumer.enabled'
+
+    def __init__(self, *args, **kw):
+        super(PagureGitReceiveJobConsumer, self).__init__(*args, **kw)
+        self.trigger = PagureGitReceiveJobTrigger(self.log)
+
+    def consume(self, message):
+        msg = message['body']
+        try:
+            data = self.trigger.process(msg)
+            self.trigger.do_trigger(data)
+        except exc.TriggerMsgError, e:
+            self.log.debug(e)
+            return
diff --git a/setup.py b/setup.py
--- a/setup.py
+++ b/setup.py
@@ -17,6 +17,7 @@
     'kojitagchangedjobconsumer = jobtriggers.koji_tag_msg:KojiTagChangedJobConsumer',
     'composecompletedjobconsumer = jobtriggers.compose_complete_msg:ComposeCompletedJobConsumer',
     'distgitcommitjobconsumer = jobtriggers.dist_git_commit_msg:DistGitCommitJobConsumer',
+    'paguregitreceivejobconsumer = jobtriggers.pagure_git_received:PagureGitReceiveJobConsumer',
 )
 
 setup(
diff --git a/testing/test_dist_git_trigger.py b/testing/test_dist_git_trigger.py
--- a/testing/test_dist_git_trigger.py
+++ b/testing/test_dist_git_trigger.py
@@ -45,6 +45,8 @@
         mock_get_critpath = mock.Mock(return_value=mock_critpath)
         monkeypatch.setattr(utils, 'parse_yaml_from_file', mock_get_critpath)
 
+        dist_git_commit_msg.config.valid_arches = ['x86_64']
+
     def _create_msg(self):
         return Munch(body={
             "i": 1,
diff --git a/testing/test_pagure_commit_trigger.py b/testing/test_pagure_commit_trigger.py
new file mode 100644
--- /dev/null
+++ b/testing/test_pagure_commit_trigger.py
@@ -0,0 +1,118 @@
+import pytest
+import mock
+from dingus import Dingus
+from munch import Munch
+
+from jobtriggers import pagure_git_received
+from jobtriggers import utils
+
+
+def mock_clone_repo(repo, branch='master', fallback=None):
+    return '/tmp/path_to_repo', branch
+
+
+@pytest.mark.usefixtures('prepare')
+class TestPagureGitReceivedJobConsumer():
+
+    @pytest.fixture
+    def prepare(self, monkeypatch):
+        self.item_type = 'dist_git_commit'
+        self.ref_message = self._create_msg()
+        self.ref_tasks = ['dist_git_task1', 'dist_git_task2']
+        self.message_type = 'PagureGitReceive'
+
+        stub_hub = Munch(config=Munch(get=0))
+
+        self.helper = pagure_git_received.PagureGitReceiveJobConsumer(stub_hub)
+        self.helper.trigger.runner = Dingus()
+
+        pagure_git_received.config.trigger_rules_template = """---
+- when:
+    message_type: PagureGitReceive
+    repo:
+        $in: [fm-orchestrator]
+  do:
+    - {discover: {repo: 'https://pagure.io/${repo}.git'}}
+    - {tasks: [speclint]}
+"""
+
+        pagure_git_received.config.job_logging = False
+
+        mock_discover_tasks = mock.Mock(return_value=[])
+        monkeypatch.setattr(utils, 'discover_tasks', mock_discover_tasks)
+        monkeypatch.setattr(utils, 'clone_repo', mock_clone_repo)
+
+        pagure_git_received.config.valid_arches = ['x86_64']
+
+    def _create_msg(self):
+        return Munch(body={
+            "i": 1,
+            "timestamp": 1486024230.0,
+            "msg_id": "2017-c1117063-673e-4cce-803a-29a57e5a1ae1",
+            "topic": "io.pagure.prod.pagure.git.receive",
+            "msg": {
+                "forced": False,
+                "agent": "ralph",
+                "repo": {
+                    "custom_keys": [],
+                    "description": "The module build orchestrator for Modularity",
+                    "parent": None,
+                    "settings": {
+                        "issues_default_to_private": False,
+                        "Minimum_score_to_merge_pull-request": 0,
+                        "Web-hooks": None,
+                        "fedmsg_notifications": True,
+                        "always_merge": False,
+                        "project_documentation": False,
+                        "Enforce_signed-off_commits_in_pull-request": False,
+                        "pull_requests": True,
+                        "Only_assignee_can_merge_pull-request": False,
+                        "issue_tracker": True
+                    },
+                    "tags": [
+                        "modularity",
+                        "fedora-modularity"
+                    ],
+                    "namespace": None,
+                    "priorities": {},
+                    "close_status": [
+                        "Invalid",
+                        "Insufficient data",
+                        "Fixed",
+                        "Duplicate"
+                    ],
+                    "milestones": {},
+                    "user": {
+                        "fullname": "Petr \u0160abata",
+                        "name": "psabata"
+                    },
+                    "date_created": "1466078637",
+                    "id": 774,
+                    "name": "fm-orchestrator"
+                },
+                "end_commit": "d093c5eef3f7bc593abce48f9ac6bd79bb279a41",
+                "branch": "refs/heads/master",
+                "authors": [
+                    {
+                        "fullname": "Ralph Bean",
+                        "name": "ralph"
+                    }
+                ],
+                "total_commits": 1,
+                "start_commit": "FAKE_d093c5eef3f7bc593abce48f9ac6bd79bb279a41"
+            }
+        })
+
+    def test_consume(self):
+        self.helper.consume(self.ref_message)
+
+        runner_calls = self.helper.trigger.runner.trigger_job.calls()
+
+        assert len(runner_calls) == 1
+
+        assert runner_calls[0][1] == (
+            'https://pagure.io/fm-orchestrator#refs/heads/master#d093c5eef3f7bc593abce48f9ac6bd79bb279a41',  # NOQA
+            'git_commit',
+            'speclint',
+            'x86_64',
+        )

