diff --git a/data/dbus-interfaces.xml b/data/dbus-interfaces.xml
index 6e97292..4f3c227 100644
--- a/data/dbus-interfaces.xml
+++ b/data/dbus-interfaces.xml
@@ -3,7 +3,7 @@
 "http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
 
 <!--
- Copyright (C) 2011, 2012, 2013 Red Hat, Inc.
+ Copyright (C) 2011, 2012, 2013, 2014 Red Hat, Inc.
 
  This library is free software; you can redistribute it and/or
  modify it under the terms of the GNU Lesser General Public
@@ -165,6 +165,16 @@
     -->
     <property name="DocumentsDisabled" type="b" access="readwrite"/>
 
+    <!-- PrintersDisabled:
+         If %TRUE, the account will not expose any
+         #org.gnome.OnlineAccounts.Printers interface. If the account does not
+         provide printers-like capabilities, this property does nothing.
+
+         Note that the #org.gnomeOnlineAccounts.Printers interface is added or
+         removed from the account asynchronously.
+    -->
+    <property name="PrintersDisabled" type="b" access="readwrite"/>
+
     <!-- PhotosDisabled:
          @since: 3.8.0
 
@@ -660,4 +670,13 @@
   <interface name="org.gnome.OnlineAccounts.ReadLater">
   </interface>
 
+  <!--
+      org.gnome.OnlineAccounts.Printers:
+
+      An account object implements this interface if it provides
+      network printing capabilities.
+  -->
+  <interface name="org.gnome.OnlineAccounts.Printers">
+  </interface>
+
 </node>
diff --git a/src/goabackend/goabackendenums.h b/src/goabackend/goabackendenums.h
index 5af588b..291619b 100644
--- a/src/goabackend/goabackendenums.h
+++ b/src/goabackend/goabackendenums.h
@@ -1,6 +1,6 @@
 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
 /*
- * Copyright (C) 2011, 2012 Red Hat, Inc.
+ * Copyright (C) 2011, 2012, 2014 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -68,6 +68,7 @@ typedef enum
  * @GOA_PROVIDER_FEATURE_PHOTOS: Photos storage services (ie. Flickr).
  * @GOA_PROVIDER_FEATURE_FILES: Files storage services (ie. WebDAV).
  * @GOA_PROVIDER_FEATURE_TICKETING: Ticketing services (ie. Kerberos).
+ * @GOA_PROVIDER_FEATURE_PRINTERS: Network printing services (e.g. Google Cloud Print).
  * @GOA_PROVIDER_FEATURE_INVALID: Used for error handling. No provider
  *   should provide this feature.
  *
@@ -90,6 +91,7 @@ typedef enum /*< flags >*/
   GOA_PROVIDER_FEATURE_FILES     = 1 << 8,
   GOA_PROVIDER_FEATURE_TICKETING = 1 << 9,
   GOA_PROVIDER_FEATURE_READ_LATER= 1 << 10,
+  GOA_PROVIDER_FEATURE_PRINTERS  = 1 << 11,
   GOA_PROVIDER_FEATURE_INVALID   = 0
 } GoaProviderFeatures;
 
diff --git a/src/goabackend/goagoogleprovider.c b/src/goabackend/goagoogleprovider.c
index 8ce6095..6f5eeab 100644
--- a/src/goabackend/goagoogleprovider.c
+++ b/src/goabackend/goagoogleprovider.c
@@ -1,6 +1,6 @@
 /* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- */
 /*
- * Copyright (C) 2011, 2012, 2013 Red Hat, Inc.
+ * Copyright (C) 2011, 2012, 2013, 2014 Red Hat, Inc.
  *
  * This library is free software; you can redistribute it and/or
  * modify it under the terms of the GNU Lesser General Public
@@ -94,7 +94,8 @@ get_provider_features (GoaProvider *_provider)
          GOA_PROVIDER_FEATURE_CALENDAR |
          GOA_PROVIDER_FEATURE_CONTACTS |
          GOA_PROVIDER_FEATURE_CHAT |
-         GOA_PROVIDER_FEATURE_DOCUMENTS;
+         GOA_PROVIDER_FEATURE_DOCUMENTS |
+         GOA_PROVIDER_FEATURE_PRINTERS;
 }
 
 static const gchar *
@@ -141,6 +142,9 @@ get_scope (GoaOAuth2Provider *provider)
          /* GMail IMAP and SMTP access */
          "https://mail.google.com/ "
 
+	 /* Google Cloud Print */
+	 "https://www.googleapis.com/auth/cloudprint "
+
          /* Google Talk */
          "https://www.googleapis.com/auth/googletalk";
 }
@@ -148,7 +152,7 @@ get_scope (GoaOAuth2Provider *provider)
 static guint
 get_credentials_generation (GoaProvider *provider)
 {
-  return 6;
+  return 7;
 }
 
 static const gchar *
@@ -319,12 +323,14 @@ build_object (GoaProvider         *provider,
   GoaContacts *contacts;
   GoaChat *chat;
   GoaDocuments *documents;
+  GoaPrinters *printers;
   gboolean ret;
   gboolean mail_enabled;
   gboolean calendar_enabled;
   gboolean contacts_enabled;
   gboolean chat_enabled;
   gboolean documents_enabled;
+  gboolean printers_enabled;
   const gchar *email_address;
 
   account = NULL;
@@ -333,6 +339,7 @@ build_object (GoaProvider         *provider,
   contacts = NULL;
   chat = NULL;
   documents = NULL;
+  printers = NULL;
   ret = FALSE;
 
   /* Chain up */
@@ -460,6 +467,24 @@ build_object (GoaProvider         *provider,
         goa_object_skeleton_set_documents (object, NULL);
     }
 
+  /* Printers */
+  printers = goa_object_get_printers (GOA_OBJECT (object));
+  printers_enabled = g_key_file_get_boolean (key_file, group, "PrintersEnabled", NULL);
+
+  if (printers_enabled)
+    {
+      if (printers == NULL)
+        {
+          printers = goa_printers_skeleton_new ();
+          goa_object_skeleton_set_documents (object, printers);
+        }
+    }
+  else
+    {
+      if (printers != NULL)
+        goa_object_skeleton_set_printers (object, NULL);
+    }
+
   if (just_added)
     {
       goa_account_set_mail_disabled (account, !mail_enabled);
@@ -467,6 +492,7 @@ build_object (GoaProvider         *provider,
       goa_account_set_contacts_disabled (account, !contacts_enabled);
       goa_account_set_chat_disabled (account, !chat_enabled);
       goa_account_set_documents_disabled (account, !documents_enabled);
+      goa_account_set_printers_disabled (account, !printers_enabled);
 
       g_signal_connect (account,
                         "notify::mail-disabled",
@@ -488,11 +514,16 @@ build_object (GoaProvider         *provider,
                         "notify::documents-disabled",
                         G_CALLBACK (goa_util_account_notify_property_cb),
                         "DocumentsEnabled");
+      g_signal_connect (account,
+                        "notify::printers-disabled",
+                        G_CALLBACK (goa_util_account_notify_property_cb),
+                        "PrintersEnabled");
     }
 
   ret = TRUE;
 
  out:
+  g_clear_object (&printers);
   g_clear_object (&documents);
   g_clear_object (&chat);
   g_clear_object (&contacts);
@@ -552,6 +583,11 @@ show_account (GoaProvider         *provider,
                                                    NULL,
                                                    "documents-disabled",
                                                    _("_Documents"));
+
+  goa_util_add_row_switch_from_keyfile_with_blurb (grid, row++, object,
+                                                   NULL,
+                                                   "printers-disabled",
+                                                   _("_Printers"));
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
@@ -565,6 +601,7 @@ add_account_key_values (GoaOAuth2Provider  *provider,
   g_variant_builder_add (builder, "{ss}", "ContactsEnabled", "true");
   g_variant_builder_add (builder, "{ss}", "ChatEnabled", "true");
   g_variant_builder_add (builder, "{ss}", "DocumentsEnabled", "true");
+  g_variant_builder_add (builder, "{ss}", "PrintersEnabled", "true");
 }
 
 /* ---------------------------------------------------------------------------------------------------- */
