diff --git a/semantic_router/schema.py b/semantic_router/schema.py
index 9c37ef724314069cec4212cb40c41fa8be14a5e3..678cd747e761527d72679ef1c924b758042855ca 100644
--- a/semantic_router/schema.py
+++ b/semantic_router/schema.py
@@ -129,10 +129,11 @@ class Utterance(BaseModel):
         if include_metadata:
             # we sort the dicts to ensure consistent order as we need this to compare
             # stringified function schemas accurately
-            function_schemas_sorted = [
-                json.dumps(schema, sort_keys=True)
-                for schema in self.function_schemas
-            ]
+            if self.function_schemas is not None:
+                function_schemas_sorted = [
+                    json.dumps(schema, sort_keys=True)
+                    for schema in self.function_schemas
+                ]
             # we must do the same for metadata
             metadata_sorted = json.dumps(self.metadata, sort_keys=True)
             return f"{self.route}: {self.utterance} | {function_schemas_sorted} | {metadata_sorted}"