diff --git a/www/Dockerfile b/www/Dockerfile
index 4a487dd8b299de14b487f286673785acbbd9ca04..931f8d8419185cdfe31ab7d0a4f0b3bf3bca66dd 100644
--- a/www/Dockerfile
+++ b/www/Dockerfile
@@ -30,6 +30,7 @@ RUN pip3 install \
     ldap3 \
     uwsgi \
     django-two-factor-auth \
+    matterhook \
     --upgrade
 
 RUN pip3 install git+https://github.com/nkunihiko/django-bootstrap3-datetimepicker.git
diff --git a/www/conf/config.example.ini b/www/conf/config.example.ini
index cf6b5691fca6db839723e20886c385832a809cee..48e8fad5bdb19943fd1f78ad72d3214967268712 100644
--- a/www/conf/config.example.ini
+++ b/www/conf/config.example.ini
@@ -5,6 +5,9 @@ DEBUG = true
 SECRET_KEY = '4m4c(_$ubwued9p-insp!950g&r0yu851bp287$2a3ydj^y=0='
 PW_RESET_TOKEN_LIFETIME = 5
 
+[mattermost]
+API_KEY = bohtwe6zy7y43p5n36skph7ejy
+
 [ldap]
 LDAP_HOST = ldap
 LDAP_BIND_DN = cn=admin,dc=warpzone,dc=ms
diff --git a/www/web/warpfood/views.py b/www/web/warpfood/views.py
index 890692d74eff46f4628dadf5cd85e4e4013d47ff..7d6dadf43e4e0347b72c5d3d50b8a85677413dae 100644
--- a/www/web/warpfood/views.py
+++ b/www/web/warpfood/views.py
@@ -3,6 +3,8 @@ from django.http import HttpResponse, HttpResponseBadRequest, HttpResponseNotAll
 from django.shortcuts import redirect
 from django.contrib.auth.decorators import login_required
 from warpfood.util import *
+from warpzone.util import send_to_mattermost
+from django.utils.translation import ugettext as _
 from warpfood.models import *
 from reportlab.pdfgen import canvas
 from django.http import HttpResponse
@@ -21,7 +23,8 @@ def index(request):
         if request.method == 'POST':
             form = FoodSheetForm(request.POST)
             if form.is_valid():
-                form.save()
+                sheet = form.save()
+                send_to_mattermost("PizzaSheet", "town-square",  _("pizza_sheet_opened_for_%(est_order_time)s_at_%(pizza_service)s") % ({'est_order_time': sheet.estimated_order_time, 'pizza_service':sheet.food_service}))
 
     time_threshold = datetime.now() - timedelta(days=1)
     FoodSheet.objects.filter(order_time__lte=time_threshold).delete()
diff --git a/www/web/warpzone/settings.py b/www/web/warpzone/settings.py
index f22beb6663d31fa6a54be94a71eb1ce8f1be89e4..6c9249ddb6a93afc85c4d462677e95e5974947a3 100644
--- a/www/web/warpzone/settings.py
+++ b/www/web/warpzone/settings.py
@@ -39,9 +39,15 @@ EMAIL_SUBJECT_PREFIX = config.get('email','SUBJECT_PREFIX')
 PW_RESET_TOKEN_LIFETIME = config.get('security','PW_RESET_TOKEN_LIFETIME')
 SECRET_KEY = config.get('security','SECRET_KEY')
 
+# MATTERMOST
+API_KEY = config.get('mattermost','API_KEY')
+
 # DEBUG
 DEBUG = config.getboolean('debug','DEBUG')
 
+# MISC
+LOG_PATH = config.get('misc','LOG_PATH')
+
 ALLOWED_HOSTS = [config.get('security','ALLOWED_HOSTS')]
 
 LOGIN_URL = 'two_factor:login'
@@ -185,13 +191,29 @@ AUTH_LDAP_FIND_GROUP_PERMS = True
 AUTH_LDAP_CACHE_GROUPS = True
 AUTH_LDAP_GROUP_CACHE_TIMEOUT = 10
 
-logger = logging.getLogger('django_auth_ldap')
-logger.addHandler(logging.StreamHandler())
-hdlr = logging.FileHandler('/tmp/ldap.log')
-formatter = logging.Formatter('%(asctime)s %(levelname)s %(message)s')
-hdlr.setFormatter(formatter)
-logger.addHandler(hdlr) 
-logger.setLevel(logging.DEBUG)
+LOGGING = {
+    'version': 1,
+    'disable_existing_loggers': False,
+    'handlers': {
+        'file': {
+            'level': 'ERROR',
+            'class': 'logging.FileHandler',
+            'filename': LOG_PATH+'/error.log',
+        },
+    },
+    'loggers': {
+        'django': {
+            'handlers': ['file'],
+            'level': 'ERROR',
+            'propagate': True,
+        },
+        'django_auth_ldap': {
+            'handlers': ['file'],
+            'level': 'ERROR',
+            'propagate': True,
+        },
+    },
+}
 
 STATIC_URL = '/static/'
 STATIC_ROOT = os.path.join(BASE_DIR, "static")
diff --git a/www/web/warpzone/util.py b/www/web/warpzone/util.py
index f56b7974c73ba917c3f9b15da6b6860e0a86caec..ee10da226c33e567e2e93ea0a717e401eb7e37d3 100644
--- a/www/web/warpzone/util.py
+++ b/www/web/warpzone/util.py
@@ -1,12 +1,27 @@
 from django.core.mail import send_mail
 from django.conf import settings
 from django.utils.translation import ugettext as _
+from matterhook import Webhook
+import logging
 
 page_context = {'pages': [
     {"link": "pizza", "name": _("pizza_sheet")},
     {"link": "about", "name": _("about")},
 ], 'debug': settings.DEBUG}
 
+
+
+def send_to_mattermost(username, channel, message):
+    try:
+        if settings.API_KEY:
+            hook = Webhook("https://mattermost.warpzone.ms", settings.API_KEY)
+            if settings.DEBUG:
+                username = "["+channel+"] "+username
+                channel = "warpinfradebug"
+            hook.send(message, channel=channel, username=username)
+    except Exception as e:
+        logging.getLogger("django").error(e)
+
 def send_email(to_address, subject, content):
     try:
         send_mail(