diff --git a/opentech/public/forms/models.py b/opentech/public/forms/models.py
index 890ecc63602ded230ec0fddb7f90c9e750c59998..b901e1263340943be0c6cfc94ce757fe6267578c 100644
--- a/opentech/public/forms/models.py
+++ b/opentech/public/forms/models.py
@@ -1,5 +1,7 @@
+import os
 import json
 
+from django.core.files.storage import get_storage_class
 from django.core.serializers.json import DjangoJSONEncoder
 from django.conf import settings
 from django.db import models
@@ -16,18 +18,11 @@ from wagtail.contrib.forms.forms import FormBuilder
 from wagtail.contrib.forms.models import (
     AbstractEmailForm, AbstractFormField, FORM_FIELD_CHOICES
 )
-from wagtail.documents.models import get_document_model
 from wagtail.search import index
 
 from opentech.public.utils.models import BasePage
 
-
-def filename_to_title(filename):
-    from os.path import splitext
-    if filename:
-        result = splitext(filename)[0]
-        result = result.replace('-', ' ').replace('_', ' ')
-        return result.title()
+webform_storage = get_storage_class(getattr(settings, 'PRIVATE_FILE_STORAGE', None))()
 
 
 class FormField(AbstractFormField):
@@ -76,23 +71,11 @@ class FormPage(AbstractEmailForm, BasePage):
             if isinstance(field, FileField):
                 file_data = cleaned_data[name]
                 if file_data:
-                    DocumentModel = get_document_model()
-                    if form.user.is_anonymous:
-                        document = DocumentModel(
-                            file=cleaned_data[name],
-                            title=filename_to_title(cleaned_data[name].name),
-                        )
-                    else:
-                        document = DocumentModel(
-                            file=cleaned_data[name],
-                            title=filename_to_title(cleaned_data[name].name),
-                            uploaded_by_user=form.user,
-                        )
-                    document.save()
-                    if settings.DEBUG:
-                        file_details_dict = {name: 'localhost:8000' + document.url}
-                    else:
-                        file_details_dict = {name: 'https://www.opentech.fund' + document.url}
+                    file_name = file_data.name
+                    file_name = webform_storage.generate_filename(file_name)
+                    upload_to = os.path.join('webform', str(self.id), file_name)
+                    webform_storage.save(upload_to, file_data)
+                    file_details_dict = {name: file_name}
                     cleaned_data.update(file_details_dict)
                 else:
                     del cleaned_data[name]