diff --git a/src/stats/admin.py b/src/stats/admin.py
index fd70892afee769a75d1164ebdc0c5fcb4b31a293..6fc16517abb03ecce68ab234398cafd96c879f53 100644
--- a/src/stats/admin.py
+++ b/src/stats/admin.py
@@ -9,3 +9,10 @@ from . import resources
 class EventAdmin(ExportMixin, admin.ModelAdmin):
     filter_horizontal = ('visitors', )
     resource_class = resources.EventResource
+
+
+@admin.register(models.Note)
+class NoteAdmin(ExportMixin, admin.ModelAdmin):
+    list_display = ('user', 'note', 'event', 'created_by', 'created_at', 'updated_at')
+    list_filter = ('user', 'created_by', 'event')
+    resource_class = resources.NoteResource
diff --git a/src/stats/migrations/0008_note.py b/src/stats/migrations/0008_note.py
new file mode 100644
index 0000000000000000000000000000000000000000..8b08926a7916ef37a514309d69c0f9b3ac8779c0
--- /dev/null
+++ b/src/stats/migrations/0008_note.py
@@ -0,0 +1,27 @@
+# Generated by Django 2.0.1 on 2018-02-21 00:18
+
+from django.db import migrations, models
+import django.db.models.deletion
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('account', '0017_auto_20180205_2004'),
+        ('stats', '0007_auto_20180215_0018'),
+    ]
+
+    operations = [
+        migrations.CreateModel(
+            name='Note',
+            fields=[
+                ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
+                ('note', models.TextField()),
+                ('created_at', models.DateTimeField(auto_now_add=True)),
+                ('updated_at', models.DateTimeField(auto_now=True)),
+                ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='created_notes', to='account.Profile')),
+                ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='stats.Event')),
+                ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='notes', to='account.Profile')),
+            ],
+        ),
+    ]
diff --git a/src/stats/models.py b/src/stats/models.py
index 854def4bdcf72136b6321ef7b52eb2d87f97ca72..aa38fd947c9ec32fd41c407f52387c1c683779b7 100644
--- a/src/stats/models.py
+++ b/src/stats/models.py
@@ -15,3 +15,16 @@ class Event(models.Model):
 
     def __str__(self):
         return self.name
+
+
+class Note(models.Model):
+    event = models.ForeignKey(Event, related_name='notes', on_delete=models.CASCADE)
+    user = models.ForeignKey(Profile, related_name='notes', on_delete=models.CASCADE)
+    note = models.TextField()
+
+    created_by = models.ForeignKey(Profile, related_name='created_notes', on_delete=models.CASCADE)
+    created_at = models.DateTimeField(auto_now_add=True, editable=False)
+    updated_at = models.DateTimeField(auto_now=True, editable=False)
+
+    def __str__(self):
+        return self.note
diff --git a/src/stats/resources.py b/src/stats/resources.py
index 848f9465de8fdeb289cf40ae337f3a7cde5d9afd..712c971ae27eb0f4bebfd30be07eb952d8c5fbb7 100644
--- a/src/stats/resources.py
+++ b/src/stats/resources.py
@@ -17,3 +17,25 @@ class EventResource(resources.ModelResource):
             'date',
             'visitors',
         )
+
+
+class NoteResource(resources.ModelResource):
+    created_by = fields.Field()
+    user = fields.Field()
+
+    class Meta:
+        model = models.Note
+        fields = (
+            'user',
+            'event__name',
+            'note',
+            'created_at',
+            'updated_at',
+            'created_by',
+        )
+
+    def dehydrate_created_by(self, obj):
+        return obj.created_by.full_name
+
+    def dehydrate_user(self, obj):
+        return obj.user.full_name