diff --git a/apimail/api/serializers.py b/apimail/api/serializers.py
index ccb347fb8ac9e3da5a69765474e182dcdb01920f..7f644606ea08e7e5166e64b48337e33c7dcd7f30 100644
--- a/apimail/api/serializers.py
+++ b/apimail/api/serializers.py
@@ -16,4 +16,4 @@ class EventSerializer(serializers.ModelSerializer):
 class StoredMessageSerializer(serializers.ModelSerializer):
     class Meta:
         model = StoredMessage
-        fields = ['uuid', 'data',]
+        fields = ['uuid', 'data', 'datetimestamp']
diff --git a/apimail/management/commands/mailgun_get_stored_messages.py b/apimail/management/commands/mailgun_get_stored_messages.py
index 7b0b5f1dd42a3760d5a3ce179d7107b052bebb07..aeaa48c203337a330551f18f205c655483affc25 100644
--- a/apimail/management/commands/mailgun_get_stored_messages.py
+++ b/apimail/management/commands/mailgun_get_stored_messages.py
@@ -2,6 +2,7 @@ __copyright__ = "Copyright © Stichting SciPost (SciPost Foundation)"
 __license__ = "AGPL v3"
 
 
+from email.utils import parsedate_to_datetime
 from tempfile import TemporaryFile
 
 import requests
@@ -34,7 +35,9 @@ class Command(BaseCommand):
             if not StoredMessage.objects.filter(
                 data__contains={'message-id': orphan.data['message']['headers']['message-id']}
             ).exists():
-                sm = StoredMessage.objects.create(data=response)
+                sm = StoredMessage.objects.create(
+                    data=response,
+                    datetimestamp=parsedate_to_datetime(response['Date']))
                 orphan.stored_message = sm
                 orphan.save()
                 # Now deal with attachments
diff --git a/apimail/managers.py b/apimail/managers.py
index 63e1eac127c75cbb92b66ab8bb90b9d6d0c16507..3f6d006567de0151b98a711826cd51675b3b39b0 100644
--- a/apimail/managers.py
+++ b/apimail/managers.py
@@ -9,17 +9,17 @@ class StoredMessageQuerySet(models.QuerySet):
     """
     All StoredMessage querysets are always filtered for the user.
     """
-    def filter_for_user(self, request):
+    def filter_for_user(self, user):
         """
         Either su or staff, or user's email addresses overlap with sender/recipients.
         """
-        if not request.user.is_authenticated:
+        if not user.is_authenticated:
             return self.none()
-        elif request.user.is_superuser or request.user.is_admin:
+        elif user.is_superuser or user.is_admin:
             return self
-        emails = [request.user.email,] if request.user.email else []
-        if request.user.contributor:
-            for pe in request.user.contributor.profile.emails.all():
+        emails = [user.email,] if user.email else []
+        if user.contributor:
+            for pe in user.contributor.profile.emails.all():
                 emails.append(pe.email)
         return self.filter_for_emails(emails=emails)
 
diff --git a/apimail/migrations/0004_auto_20191114_2115.py b/apimail/migrations/0004_auto_20191114_2115.py
new file mode 100644
index 0000000000000000000000000000000000000000..b1819eb09c90d1858703288e1d8261bdcd6c206f
--- /dev/null
+++ b/apimail/migrations/0004_auto_20191114_2115.py
@@ -0,0 +1,27 @@
+# Generated by Django 2.1.8 on 2019-11-14 20:15
+
+from django.db import migrations, models
+import django.utils.timezone
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('apimail', '0003_auto_20191113_2226'),
+    ]
+
+    operations = [
+        migrations.AlterModelOptions(
+            name='event',
+            options={'ordering': ['-data__timestamp']},
+        ),
+        migrations.AlterModelOptions(
+            name='storedmessage',
+            options={'ordering': ['-datetimestamp']},
+        ),
+        migrations.AddField(
+            model_name='storedmessage',
+            name='datetimestamp',
+            field=models.DateTimeField(default=django.utils.timezone.now),
+        ),
+    ]
diff --git a/apimail/models/event.py b/apimail/models/event.py
index 183d54009496fd5b7441b04a8ff5e2ae10e9b641..c830e26aa4166636820e82ed613c830d53dc89c5 100644
--- a/apimail/models/event.py
+++ b/apimail/models/event.py
@@ -38,5 +38,8 @@ class Event(models.Model):
         on_delete=models.CASCADE
     )
 
+    class Meta:
+        ordering = ['-data__timestamp',]
+
     def get_absolute_url(self):
         return reverse('apimail:event_detail', kwargs={'uuid': self.uuid})
diff --git a/apimail/models/stored_message.py b/apimail/models/stored_message.py
index 1f5e01b9a7efc9db0497d8a11f114a5f76d8923b..d9ccade77780f552056f74269bd6f8b92dce8af3 100644
--- a/apimail/models/stored_message.py
+++ b/apimail/models/stored_message.py
@@ -7,6 +7,7 @@ import uuid as uuid_lib
 from django.contrib.postgres.fields import JSONField
 from django.db import models
 from django.urls import reverse
+from django.utils import timezone
 
 from scipost.storage import SecureFileStorage
 
@@ -23,11 +24,12 @@ class StoredMessage(models.Model):
         default=uuid_lib.uuid4,
         editable=False)
     data = JSONField(default=dict)
+    datetimestamp = models.DateTimeField(default=timezone.now)
 
     objects = StoredMessageQuerySet.as_manager()
 
     class Meta:
-        ordering = ['-data__Date',]
+        ordering = ['-datetimestamp',]
 
     def get_absolute_url(self):
         return reverse('apimail:stored_message_detail', kwargs={'uuid': self.uuid})