diff --git a/CHANGELOG.md b/CHANGELOG.md
index f413e748bf2fc2e08f43695525511d4a408d2beb..e4878c259514aaa5a486639fcfcea1116ae59c3b 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
 The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
 and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
 
+## Unreleased
+
+### Fixed
+
+- Added a check to ensure `data.id` is present before rendering the delete button in the dataset edit form. This prevents server errors when `data.id` is not available, e.g., for new datasets.
+
 ## [2.4.2] - 2024-06-21
 
 ### Fixed
diff --git a/ckanext/odsh/templates/package/snippets/package_form.html b/ckanext/odsh/templates/package/snippets/package_form.html
index 37ef706909c1670e40887bd4b6e294ab620fe416..2cb0e5ccc7cf23900bfab39177361d0b5bae822c 100644
--- a/ckanext/odsh/templates/package/snippets/package_form.html
+++ b/ckanext/odsh/templates/package/snippets/package_form.html
@@ -26,7 +26,7 @@
     <div class="form-actions">
       <div class="row-fluid">
         <div class="span6">
-          {% if h.check_access('package_delete', {'id': data.id}) and not data.state == 'deleted' %}
+          {% if data.id and h.check_access('package_delete', {'id': data.id}) and not data.state == 'deleted' %}
           <a class="btn btn-danger pull-left" href="{% url_for 'dataset.delete', id=data.id %}"
             data-module="confirm-action" data-module-content="{{ _('Are you sure you want to delete this dataset?') }}">
             {% block delete_button_text %}{{ _('Delete') }}{% endblock %}</a>