diff --git a/addressbook/backends/google/e-book-backend-google.c b/addressbook/backends/google/e-book-backend-google.c
index ccee9de..32b4e14 100644
--- a/addressbook/backends/google/e-book-backend-google.c
+++ b/addressbook/backends/google/e-book-backend-google.c
@@ -2691,8 +2691,29 @@ remove_anniversary (GDataContactsContact *contact)
 	g_list_free (events);
 }
 
+static gboolean
+available_as_x_uris (EVCard *vcard, const gchar *type)
+{
+	GList *attr;
+
+	g_return_val_if_fail (vcard != NULL, FALSE);
+	g_return_val_if_fail (type != NULL, FALSE);
+
+	for (attr = e_vcard_get_attributes (vcard); attr; attr = attr->next) {
+		const gchar *name = e_vcard_attribute_get_name (attr->data);
+
+		if (!name || g_ascii_strcasecmp (name, "X-URIS") != 0)
+			continue;
+
+		if (e_vcard_attribute_has_type (attr->data, type))
+			return TRUE;
+	}
+
+	return FALSE;
+}
+
 static void
-remove_websites (GDataContactsContact *contact)
+remove_websites (GDataContactsContact *contact, EVCard *vcard)
 {
 	GList *websites, *itr;
 
@@ -2706,9 +2727,12 @@ remove_websites (GDataContactsContact *contact)
 	gdata_contacts_contact_remove_all_websites (contact);
 	for (itr = websites; itr; itr = itr->next) {
 		GDataGContactWebsite *website = itr->data;
+		const gchar *reltype;
 
-		if (g_strcmp0 (gdata_gcontact_website_get_relation_type (website), GDATA_GCONTACT_WEBSITE_HOME_PAGE) != 0 &&
-		    g_strcmp0 (gdata_gcontact_website_get_relation_type (website), GDATA_GCONTACT_WEBSITE_BLOG) != 0)
+		reltype = gdata_gcontact_website_get_relation_type (website);
+		if (g_strcmp0 (reltype, GDATA_GCONTACT_WEBSITE_HOME_PAGE) != 0 &&
+		    g_strcmp0 (reltype, GDATA_GCONTACT_WEBSITE_BLOG) != 0 &&
+		    !available_as_x_uris (vcard, reltype))
 			gdata_contacts_contact_add_website (contact, website);
 	}
 
@@ -2775,6 +2799,7 @@ _gdata_entry_update_from_e_contact (EBookBackend *backend,
 	gdata_contacts_contact_remove_all_postal_addresses (GDATA_CONTACTS_CONTACT (entry));
 	gdata_contacts_contact_remove_all_im_addresses (GDATA_CONTACTS_CONTACT (entry));
 	gdata_contacts_contact_remove_all_organizations (GDATA_CONTACTS_CONTACT (entry));
+	remove_websites (GDATA_CONTACTS_CONTACT (entry), E_VCARD (contact));
 
 	category_names = gdata_contacts_contact_get_groups (GDATA_CONTACTS_CONTACT (entry));
 	for (iter = category_names; iter != NULL; iter = g_list_delete_link (iter, iter))
@@ -2847,6 +2872,22 @@ _gdata_entry_update_from_e_contact (EBookBackend *backend,
 				gdata_contacts_contact_add_im_address (GDATA_CONTACTS_CONTACT (entry), im);
 				g_object_unref (im);
 			}
+		} else if (0 == g_ascii_strcasecmp (name, "X-URIS")) {
+			GList *param;
+
+			param = e_vcard_attribute_get_param (attr, EVC_TYPE);
+			if (param) {
+				GDataGContactWebsite *website;
+				gchar *url = e_vcard_attribute_get_value (attr);
+
+				website = gdata_gcontact_website_new (url, param->data, NULL, FALSE);
+				if (website) {
+					gdata_contacts_contact_add_website (GDATA_CONTACTS_CONTACT (entry), website);
+					g_object_unref (website);
+				}
+
+				g_free (url);
+			}
 		} else if (e_vcard_attribute_is_single_valued (attr)) {
 			gchar *value;
 
@@ -2886,8 +2927,6 @@ _gdata_entry_update_from_e_contact (EBookBackend *backend,
 			gdata_gd_organization_set_job_description (org, role);
 	}
 
-	remove_websites (GDATA_CONTACTS_CONTACT (entry));
-
 	url = e_contact_get_const (contact, E_CONTACT_HOMEPAGE_URL);
 	if (url && *url) {
 		GDataGContactWebsite *website = gdata_gcontact_website_new (url, GDATA_GCONTACT_WEBSITE_HOME_PAGE, NULL, FALSE);
@@ -3159,6 +3198,12 @@ _e_contact_new_from_gdata_entry (EBookBackend *backend,
 			e_contact_set (E_CONTACT (vcard), E_CONTACT_HOMEPAGE_URL, uri);
 		else if (g_str_equal (reltype, GDATA_GCONTACT_WEBSITE_BLOG))
 			e_contact_set (E_CONTACT (vcard), E_CONTACT_BLOG_URL, uri);
+		else {
+			EVCardAttribute *attr = e_vcard_attribute_new (NULL, "X-URIS");
+
+			e_vcard_attribute_add_param_with_value (attr, e_vcard_attribute_param_new (EVC_TYPE), reltype);
+			e_vcard_append_attribute_with_value (vcard, attr, uri);
+		}
 	}
 
 	g_date_clear (&bdate, 1);
