diff --git a/homeassistant/components/recorder/statistics.py b/homeassistant/components/recorder/statistics.py
index fcd8e4f393002dd658663ba7f957765b23b32100..1b0a4e64897f43a6c3afedd829eb038204bb4558 100644
--- a/homeassistant/components/recorder/statistics.py
+++ b/homeassistant/components/recorder/statistics.py
@@ -267,12 +267,14 @@ def _update_or_add_metadata(
     if (
         old_metadata["has_mean"] != new_metadata["has_mean"]
         or old_metadata["has_sum"] != new_metadata["has_sum"]
+        or old_metadata["name"] != new_metadata["name"]
         or old_metadata["unit_of_measurement"] != new_metadata["unit_of_measurement"]
     ):
         session.query(StatisticsMeta).filter_by(statistic_id=statistic_id).update(
             {
                 StatisticsMeta.has_mean: new_metadata["has_mean"],
                 StatisticsMeta.has_sum: new_metadata["has_sum"],
+                StatisticsMeta.name: new_metadata["name"],
                 StatisticsMeta.unit_of_measurement: new_metadata["unit_of_measurement"],
             },
             synchronize_session=False,
diff --git a/tests/components/recorder/test_statistics.py b/tests/components/recorder/test_statistics.py
index 8db4587f1cfd25b1888d514b90a08d55613c1182..5bc8aa76a000ee7da85c4f9a9fece2e050c99b27 100644
--- a/tests/components/recorder/test_statistics.py
+++ b/tests/components/recorder/test_statistics.py
@@ -161,6 +161,7 @@ def mock_sensor_statistics():
                 "unit_of_measurement": "dogs",
                 "has_mean": True,
                 "has_sum": False,
+                "name": None,
             },
             "stat": {"start": start},
         }
@@ -599,7 +600,7 @@ async def test_import_statistics(
         ]
     }
 
-    # Update the previously inserted statistics
+    # Update the previously inserted statistics + rename
     external_statistics = {
         "start": period1,
         "max": 1,
@@ -609,8 +610,34 @@ async def test_import_statistics(
         "state": 4,
         "sum": 5,
     }
+    external_metadata["name"] = "Total imported energy renamed"
     import_fn(hass, external_metadata, (external_statistics,))
     await async_wait_recording_done(hass)
+    statistic_ids = list_statistic_ids(hass)
+    assert statistic_ids == [
+        {
+            "has_mean": False,
+            "has_sum": True,
+            "statistic_id": statistic_id,
+            "name": "Total imported energy renamed",
+            "source": source,
+            "unit_of_measurement": "kWh",
+        }
+    ]
+    metadata = get_metadata(hass, statistic_ids=(statistic_id,))
+    assert metadata == {
+        statistic_id: (
+            1,
+            {
+                "has_mean": False,
+                "has_sum": True,
+                "name": "Total imported energy renamed",
+                "source": source,
+                "statistic_id": statistic_id,
+                "unit_of_measurement": "kWh",
+            },
+        )
+    }
     stats = statistics_during_period(hass, zero, period="hour")
     assert stats == {
         statistic_id: [
@@ -639,6 +666,7 @@ async def test_import_statistics(
         ]
     }
 
+    # Adjust the statistics
     await client.send_json(
         {
             "id": 1,