diff --git a/src/durability/paths.cpp b/src/durability/paths.cpp
index ec851ee6a..a3254db3a 100644
--- a/src/durability/paths.cpp
+++ b/src/durability/paths.cpp
@@ -69,11 +69,13 @@ std::experimental::optional<tx::transaction_id_t> TransactionIdFromWalFilename(
   }
 }
 
-fs::path MakeSnapshotPath(const fs::path &durability_dir, const int worker_id) {
+fs::path MakeSnapshotPath(const fs::path &durability_dir, const int worker_id,
+                          tx::transaction_id_t tx_id) {
   std::string date_str =
       Timestamp(Timestamp::Now())
           .ToString("{:04d}_{:02d}_{:02d}__{:02d}_{:02d}_{:02d}_{:05d}");
-  auto file_name = date_str + "_worker_" + std::to_string(worker_id);
+  auto file_name = date_str + "_worker_" + std::to_string(worker_id) + "_tx_" +
+                   std::to_string(tx_id);
   return durability_dir / kSnapshotDir / file_name;
 }
 
diff --git a/src/durability/paths.hpp b/src/durability/paths.hpp
index 6790d84c4..7716016f0 100644
--- a/src/durability/paths.hpp
+++ b/src/durability/paths.hpp
@@ -26,9 +26,11 @@ std::experimental::optional<tx::transaction_id_t> TransactionIdFromWalFilename(
     const std::string &name);
 
 /** Generates a path for a DB snapshot in the given folder in a well-defined
- * sortable format with worker id appended to the file name. */
+ * sortable format with worker id and transaction from which the snapshot is
+ * created appended to the file name. */
 std::experimental::filesystem::path MakeSnapshotPath(
-    const std::experimental::filesystem::path &durability_dir, int worker_id);
+    const std::experimental::filesystem::path &durability_dir, int worker_id,
+    tx::transaction_id_t tx_id);
 
 /// Generates a file path for a write-ahead log file of a specified worker. If
 /// given a transaction ID the file name will contain it. Otherwise the file
diff --git a/src/durability/snapshooter.cpp b/src/durability/snapshooter.cpp
index f4ce972db..0327e8f8e 100644
--- a/src/durability/snapshooter.cpp
+++ b/src/durability/snapshooter.cpp
@@ -119,10 +119,11 @@ void RemoveOldWals(const fs::path &wal_dir,
 
 bool MakeSnapshot(database::GraphDb &db, const fs::path &durability_dir,
                   const int snapshot_max_retained) {
-  if (!EnsureDir(durability_dir / kSnapshotDir)) return false;
-  const auto snapshot_file = MakeSnapshotPath(durability_dir, db.WorkerId());
-  if (fs::exists(snapshot_file)) return false;
   database::GraphDbAccessor dba(db);
+  if (!EnsureDir(durability_dir / kSnapshotDir)) return false;
+  const auto snapshot_file =
+      MakeSnapshotPath(durability_dir, db.WorkerId(), dba.transaction_id());
+  if (fs::exists(snapshot_file)) return false;
   if (Encode(snapshot_file, db, dba)) {
     RemoveOldSnapshots(durability_dir / kSnapshotDir, snapshot_max_retained);
     RemoveOldWals(durability_dir / kWalDir, dba.transaction());
diff --git a/tests/manual/snapshot_generation/snapshot_writer.hpp b/tests/manual/snapshot_generation/snapshot_writer.hpp
index 579527ad0..62a3ea6a8 100644
--- a/tests/manual/snapshot_generation/snapshot_writer.hpp
+++ b/tests/manual/snapshot_generation/snapshot_writer.hpp
@@ -119,8 +119,10 @@ void WriteToSnapshot(GraphState &state, const std::string &path) {
       LOG(ERROR) << "Unable to create durability directory!";
       exit(0);
     }
+    // Pretend like this is coming from transaction numbered 1 - this is hack
+    // TODO(dgleich): Change this to something more reasonable
     const auto snapshot_file =
-        durability::MakeSnapshotPath(durability_dir, worker_id);
+        durability::MakeSnapshotPath(durability_dir, worker_id, 1);
 
     SnapshotWriter writer(snapshot_file, worker_id,
                           state.NumNodesOnWorker(worker_id),
diff --git a/tools/src/mg_import_csv/main.cpp b/tools/src/mg_import_csv/main.cpp
index 3d544dea5..47a7a3339 100644
--- a/tools/src/mg_import_csv/main.cpp
+++ b/tools/src/mg_import_csv/main.cpp
@@ -470,7 +470,9 @@ std::string GetOutputPath() {
     LOG(FATAL) << error.what();
   }
   int worker_id = 0;
-  return std::string(durability::MakeSnapshotPath(durability_dir, worker_id));
+  // TODO(dgleich): Remove this transaction id hack
+  return std::string(
+      durability::MakeSnapshotPath(durability_dir, worker_id, 1));
 }
 
 int main(int argc, char *argv[]) {