diff --git a/addressbook/backends/google/e-book-backend-google.c b/addressbook/backends/google/e-book-backend-google.c
index bc6234d..d10e313 100644
--- a/addressbook/backends/google/e-book-backend-google.c
+++ b/addressbook/backends/google/e-book-backend-google.c
@@ -115,7 +115,7 @@ gboolean __e_book_backend_google_debug__;
 static void data_book_error_from_gdata_error (GError **dest_err, const GError *error);
 
 static GDataEntry *_gdata_entry_new_from_e_contact (EBookBackend *backend, EContact *contact);
-static gboolean _gdata_entry_update_from_e_contact (EBookBackend *backend, GDataEntry *entry, EContact *contact);
+static gboolean _gdata_entry_update_from_e_contact (EBookBackend *backend, GDataEntry *entry, EContact *contact, gboolean ensure_personal_group);
 
 static EContact *_e_contact_new_from_gdata_entry (EBookBackend *backend, GDataEntry *entry);
 static void _e_contact_add_gdata_entry_xml (EContact *contact, GDataEntry *entry);
@@ -912,21 +912,49 @@ sanitise_group_id (const gchar *group_id)
 	return id;
 }
 
+static const gchar *
+map_google_with_evo_group (const gchar *group_name,
+			   gboolean google_to_evo)
+{
+	struct _GroupsMap {
+		const gchar *google_name;
+		const gchar *evo_name;
+	} groups_map[] = {
+		{ GDATA_CONTACTS_GROUP_CONTACTS,  N_("Personal") }, /* System Group: My Contacts */
+		{ GDATA_CONTACTS_GROUP_FRIENDS,   N_("Friends")  }, /* System Group: Friends */
+		{ GDATA_CONTACTS_GROUP_FAMILY,    N_("Family")   }, /* System Group: Family */
+		{ GDATA_CONTACTS_GROUP_COWORKERS, N_("Coworkers") } /* System Group: Coworkers */
+	};
+	gint ii;
+
+	if (!group_name)
+		return NULL;
+
+	for (ii = 0; ii < G_N_ELEMENTS (groups_map); ii++) {
+		if (google_to_evo) {
+			if (g_str_equal (group_name, groups_map[ii].google_name))
+				return _(groups_map[ii].evo_name);
+		} else {
+			if (g_str_equal (group_name, _(groups_map[ii].evo_name)))
+				return groups_map[ii].google_name;
+		}
+	}
+
+	return NULL;
+}
+
 static gchar *
 sanitise_group_name (GDataEntry *group)
 {
 	const gchar *system_group_id = gdata_contacts_group_get_system_group_id (GDATA_CONTACTS_GROUP (group));
+	const gchar *evo_name;
+
+	evo_name = map_google_with_evo_group (system_group_id, TRUE);
 
 	if (system_group_id == NULL) {
 		return g_strdup (gdata_entry_get_title (group)); /* Non-system group */
-	} else if (strcmp (system_group_id, GDATA_CONTACTS_GROUP_CONTACTS) == 0) {
-		return g_strdup (_("Personal")); /* System Group: My Contacts */
-	} else if (strcmp (system_group_id, GDATA_CONTACTS_GROUP_FRIENDS) == 0) {
-		return g_strdup (_("Friends")); /* System Group: Friends */
-	} else if (strcmp (system_group_id, GDATA_CONTACTS_GROUP_FAMILY) == 0) {
-		return g_strdup (_("Family")); /* System Group: Family */
-	} else if (strcmp (system_group_id, GDATA_CONTACTS_GROUP_COWORKERS) == 0) {
-		return g_strdup (_("Coworkers")); /* System Group: Coworkers */
+	} else if (evo_name) {
+		return g_strdup (evo_name);
 	} else {
 		g_warning ("Unknown system group '%s' for group with ID '%s'.", system_group_id, gdata_entry_get_id (group));
 		return g_strdup (gdata_entry_get_title (group));
@@ -1039,6 +1067,11 @@ create_group (EBookBackend *backend,
 	EBookBackendGooglePrivate *priv;
 	GDataEntry *group, *new_group;
 	gchar *uid;
+	const gchar *google_system_name;
+
+	google_system_name = map_google_with_evo_group (category_name, FALSE);
+	if (google_system_name)
+		return g_strdup (google_system_name);
 
 	priv = E_BOOK_BACKEND_GOOGLE_GET_PRIVATE (backend);
 
@@ -1838,7 +1871,7 @@ e_book_backend_google_modify_contacts (EBookBackend *backend,
 	}
 
 	/* Update the old GDataEntry from the new contact */
-	_gdata_entry_update_from_e_contact (backend, entry, contact);
+	_gdata_entry_update_from_e_contact (backend, entry, contact, FALSE);
 
 	/* Output debug XML */
 	if (__e_book_backend_google_debug__) {
@@ -2703,7 +2736,7 @@ _gdata_entry_new_from_e_contact (EBookBackend *backend,
 {
 	GDataEntry *entry = GDATA_ENTRY (gdata_contacts_contact_new (NULL));
 
-	if (_gdata_entry_update_from_e_contact (backend, entry, contact))
+	if (_gdata_entry_update_from_e_contact (backend, entry, contact, TRUE))
 		return entry;
 
 	g_object_unref (entry);
@@ -2738,7 +2771,8 @@ remove_anniversary (GDataContactsContact *contact)
 static gboolean
 _gdata_entry_update_from_e_contact (EBookBackend *backend,
                                     GDataEntry *entry,
-                                    EContact *contact)
+                                    EContact *contact,
+				    gboolean ensure_personal_group)
 {
 	EBookBackendGooglePrivate *priv;
 	GList *attributes, *iter, *category_names;
@@ -3015,9 +3049,15 @@ _gdata_entry_update_from_e_contact (EBookBackend *backend,
 		}
 
 		gdata_contacts_contact_add_group (GDATA_CONTACTS_CONTACT (entry), category_id);
+		if (g_strcmp0 (category_id, GDATA_CONTACTS_GROUP_CONTACTS) == 0)
+			ensure_personal_group = FALSE;
 		g_free (category_id);
 	}
 
+	/* to have contacts shown in My Contacts by default */
+	if (ensure_personal_group)
+		gdata_contacts_contact_add_group (GDATA_CONTACTS_CONTACT (entry), GDATA_CONTACTS_GROUP_CONTACTS);
+
 	/* PHOTO */
 	photo = e_contact_get (contact, E_CONTACT_PHOTO);
 
