diff --git a/shared/static/shared/js/vue-formulate-helper.js b/shared/static/shared/js/vue-formulate-helper.js
index bef4160bec19decc1a56582299e1f507116459ea..8a7d8d66a49ae26ac769db8aaab57284d9338910 100644
--- a/shared/static/shared/js/vue-formulate-helper.js
+++ b/shared/static/shared/js/vue-formulate-helper.js
@@ -1,21 +1,30 @@
-VueFormulate
-
 Vue.use(VueFormulate, {
   plugins: [VueFormulateI18n.cs.default],
   locale: "cs",
 });
 
+const errorDataKey = "mailtrainerror";
 const errorMessage = ["Vyskytla se chyba při zpracování požadavku, omlouváme se"];
 
 Vue.options.data ||= {};
-Vue.options.data.mailtrainerrors ||= [];
+Vue.options.data.mailtrainerrors ||= () => [];
 Vue.options.methods ||= {};
 Vue.options.methods.mailtrainsubmit = async function (data) {
+  $(this.$el).data(errorDataKey, "");
+  Vue.options.data.mailtrainerrors = () => [];
   $("[data-success]", this.$el).hide();
+
   const csrftoken = $("[name='csrfmiddlewaretoken']", this.$el).val();
   const headers = new Headers();
   headers.append('X-CSRFToken', csrftoken);
 
+  const createError = () => {
+    $(this.$el).data(errorDataKey, errorMessage);
+    Vue.options.data.mailtrainerrors = function() {
+      return $(this.$el).data(errorDataKey) || [];
+    };
+  };
+
   try {
     const response = await fetch("/newsletter/", {
       method: "POST",
@@ -24,11 +33,11 @@ Vue.options.methods.mailtrainsubmit = async function (data) {
       credentials: "include",
     });
     if (response.status >= 400) {
-      Vue.options.data.mailtrainerrors = errorMessage;
+      createError();
     } else {
       $("[data-success]", this.$el).show();
     }
   } catch {
-    Vue.options.data.mailtrainerrors = errorMessage;
+    createError();
   }
 };
diff --git a/shared/templates/shared/blocks/newsletter_subscription_block.html b/shared/templates/shared/blocks/newsletter_subscription_block.html
index 993795841024045d223934b5b471719214b7fb5d..3c09d7259fa9fb754fe4add57f49f31d608d80a9 100644
--- a/shared/templates/shared/blocks/newsletter_subscription_block.html
+++ b/shared/templates/shared/blocks/newsletter_subscription_block.html
@@ -22,7 +22,7 @@
                     </ul>
                 </div>
                 <div class="flex flex-col items-start">
-                    <formulate-form @submit="mailtrainsubmit" #default="{ isLoading }" :form-errors="mailtrainerrors">
+                    <formulate-form name="newsletter" @submit="mailtrainsubmit" #default="{ isLoading }" :form-errors="mailtrainerrors()">
                         <formulate-errors></formulate-errors>
                         {% csrf_token %}
                         <formulate-input
diff --git a/shared/utils.py b/shared/utils.py
index dc03063ee17284b9f196b7995fa1e2debe3c7f0b..989cf258d6449a6d62d5684f90815004727d78ea 100644
--- a/shared/utils.py
+++ b/shared/utils.py
@@ -72,7 +72,7 @@ def subscribe_to_newsletter_ajax(request):
     client_response = HttpResponse()
     if request.method == "POST":
         body = json.loads(request.body)
-        response = subscribe_to_newsletter(body["EMAIL"], body["LIST_ID"])
+        response = subscribe_to_newsletter(body["email"], body["list_id"])
         if "error" in response.json():
             client_response.status_code = 500
         else: