diff --git a/grudge/geometry/metrics.py b/grudge/geometry/metrics.py
index 3090cd56547cf0b88a1576395367d1883667eec0..40eb0306bd114c369c289826b981ce159ab5a062 100644
--- a/grudge/geometry/metrics.py
+++ b/grudge/geometry/metrics.py
@@ -552,12 +552,15 @@ def mv_normal(
     import grudge.dof_desc as dof_desc
 
     dd = dof_desc.as_dofdesc(dd)
-    if not dd.is_trace():
-        raise ValueError("may only request normals on boundaries")
 
     dim = dcoll.discr_from_dd(dd).dim
     ambient_dim = dcoll.ambient_dim
 
+    if dim == ambient_dim:
+        raise ValueError("may only request normals on domains whose topological "
+                f"dimension ({dim}) differs from "
+                f"their ambient dimension ({ambient_dim})")
+
     if dim == ambient_dim - 1:
         return rel_mv_normal(actx, dcoll, dd=dd)