diff --git a/http/http_response.hpp b/http/http_response.hpp
index ddc808c..213117d 100644
--- a/http/http_response.hpp
+++ b/http/http_response.hpp
@@ -153,6 +153,7 @@
         stringResponse.emplace(response_type{});
         jsonValue.clear();
         completed = false;
+        expectedHash = std::nullopt;
     }
 
     void write(std::string_view bodyPart)
@@ -224,7 +225,30 @@
         return ret;
     }
 
+    void setHashAndHandleNotModified()
+    {
+        // Can only hash if we have content that's valid
+        if (jsonValue.empty() || result() != boost::beast::http::status::ok)
+        {
+            return;
+        }
+        size_t hashval = std::hash<nlohmann::json>{}(jsonValue);
+        std::string hexVal = "\"" + intToHexString(hashval, 8) + "\"";
+        addHeader(boost::beast::http::field::etag, hexVal);
+        if (expectedHash && hexVal == *expectedHash)
+        {
+            jsonValue.clear();
+            result(boost::beast::http::status::not_modified);
+        }
+    }
+
+    void setExpectedHash(std::string_view hash)
+    {
+        expectedHash = hash;
+    }
+
   private:
+    std::optional<std::string> expectedHash;
     bool completed = false;
     std::function<void(Response&)> completeRequestHandler;
     std::function<bool()> isAliveHelper;
