diff --git a/buffet/notification/pull_channel.cc b/buffet/notification/pull_channel.cc
new file mode 100644
index 0000000..78e352f
--- /dev/null
+++ b/buffet/notification/pull_channel.cc
@@ -0,0 +1,53 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "buffet/notification/pull_channel.h"
+
+#include <base/bind.h>
+
+#include "buffet/notification/notification_delegate.h"
+
+namespace buffet {
+
+PullChannel::PullChannel(
+    base::TimeDelta pull_interval,
+    const scoped_refptr<base::SingleThreadTaskRunner>& task_runner)
+    : pull_interval_{pull_interval},
+      timer_{true, true} {
+  timer_.SetTaskRunner(task_runner);
+}
+
+std::string PullChannel::GetName() const {
+  return "pull";
+}
+
+void PullChannel::AddChannelParameters(base::DictionaryValue* channel_json) {
+  // No extra parameters needed for "Pull" channel.
+}
+
+void PullChannel::Start(NotificationDelegate* delegate) {
+  CHECK(delegate);
+  delegate_ = delegate;
+  timer_.Start(FROM_HERE, pull_interval_,
+               base::Bind(&PullChannel::OnTimer,
+                          weak_ptr_factory_.GetWeakPtr()));
+}
+
+void PullChannel::Stop() {
+  weak_ptr_factory_.InvalidateWeakPtrs();
+  timer_.Stop();
+}
+
+void PullChannel::UpdatePullInterval(base::TimeDelta pull_interval) {
+  timer_.Stop();
+  pull_interval_ = pull_interval;
+  Start(delegate_);
+}
+
+void PullChannel::OnTimer() {
+  base::DictionaryValue empty_dict;
+  delegate_->OnCommandCreated(empty_dict);
+}
+
+}  // namespace buffet
diff --git a/buffet/notification/pull_channel.h b/buffet/notification/pull_channel.h
new file mode 100644
index 0000000..fe89d40
--- /dev/null
+++ b/buffet/notification/pull_channel.h
@@ -0,0 +1,47 @@
+// Copyright 2015 The Chromium OS Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef BUFFET_NOTIFICATION_PULL_CHANNEL_H_
+#define BUFFET_NOTIFICATION_PULL_CHANNEL_H_
+
+#include <memory>
+#include <string>
+
+#include <base/macros.h>
+#include <base/memory/weak_ptr.h>
+#include <base/single_thread_task_runner.h>
+#include <base/timer/timer.h>
+
+#include "buffet/notification/notification_channel.h"
+
+namespace buffet {
+
+class PullChannel : public NotificationChannel {
+ public:
+  PullChannel(base::TimeDelta pull_interval,
+              const scoped_refptr<base::SingleThreadTaskRunner>& task_runner);
+  ~PullChannel() override = default;
+
+  // Overrides from NotificationChannel.
+  std::string GetName() const override;
+  void AddChannelParameters(base::DictionaryValue* channel_json) override;
+  void Start(NotificationDelegate* delegate) override;
+  void Stop() override;
+
+  void UpdatePullInterval(base::TimeDelta pull_interval);
+
+ private:
+  void OnTimer();
+
+  NotificationDelegate* delegate_{nullptr};
+  base::TimeDelta pull_interval_;
+  base::Timer timer_;
+
+  base::WeakPtrFactory<PullChannel> weak_ptr_factory_{this};
+  DISALLOW_COPY_AND_ASSIGN(PullChannel);
+};
+
+}  // namespace buffet
+
+#endif  // BUFFET_NOTIFICATION_PULL_CHANNEL_H_
