diff --git a/src/bp-xprofile/classes/class-bp-xprofile-field.php b/src/bp-xprofile/classes/class-bp-xprofile-field.php
index ce4a95a..e27980c 100644
--- a/src/bp-xprofile/classes/class-bp-xprofile-field.php
+++ b/src/bp-xprofile/classes/class-bp-xprofile-field.php
@@ -360,6 +360,9 @@ class BP_XProfile_Field {
 			return false;
 		}
 
+		// Delete all metadata for this field.
+		bp_xprofile_delete_meta( $this->id, 'field' );
+
 		// Delete the data in the DB for this field.
 		if ( true === $delete_data ) {
 			BP_XProfile_ProfileData::delete_for_field( $this->id );
diff --git a/tests/phpunit/testcases/xprofile/class-bp-xprofile-field.php b/tests/phpunit/testcases/xprofile/class-bp-xprofile-field.php
index ce7a07b..e06c22b 100644
--- a/tests/phpunit/testcases/xprofile/class-bp-xprofile-field.php
+++ b/tests/phpunit/testcases/xprofile/class-bp-xprofile-field.php
@@ -224,4 +224,38 @@ class BP_Tests_BP_XProfile_Field_TestCases extends BP_UnitTestCase {
 
 		$this->set_current_user( $old_user );
 	}
+
+	/**
+	 * @ticket BP6658
+	 */
+	public function test_delete_field_should_delete_default_field_metadata() {
+		$group = self::factory()->xprofile_group->create();
+		$field = self::factory()->xprofile_field->create( array(
+			'field_group_id' => $group
+		) );
+
+		$field_obj = new BP_XProfile_Field( $field );
+		$field_obj->delete();
+
+		$value = bp_xprofile_get_meta( $field, 'field', 'default_visibility' );
+		$this->assertEmpty( $value );
+	}
+
+	/**
+	 * @ticket BP6658
+	 */
+	public function test_delete_field_should_delete_custom_field_metadata() {
+		$group = self::factory()->xprofile_group->create();
+		$field = self::factory()->xprofile_field->create( array(
+			'field_group_id' => $group
+		) );
+
+		bp_xprofile_update_meta( $field, 'field', 'custom', 'metadata' );
+
+		$field_obj = new BP_XProfile_Field( $field );
+		$field_obj->delete();
+
+		$value = bp_xprofile_get_meta( $field, 'field', 'custom' );
+		$this->assertEmpty( $value );
+	}
 }
