diff --git a/opentech/apply/activity/messaging.py b/opentech/apply/activity/messaging.py
index 9ff1e0251ce0fb6d896c849eaa4a8889bf30f15d..d38841979716887ec80ee92c46a5ea6067299075 100644
--- a/opentech/apply/activity/messaging.py
+++ b/opentech/apply/activity/messaging.py
@@ -98,10 +98,10 @@ class AdapterBase:
             self.process_send(message_type, recipients, events, request, user, submissions=submissions, submission=None, related=related, **kwargs)
 
     def process(self, message_type, event, request, user, submission, related=None, **kwargs):
-        recipients = self.recipients(message_type, **kwargs)
+        recipients = self.recipients(message_type, submission=submission, **kwargs)
         self.process_send(message_type, recipients, [event], request, user, submission, related=related, **kwargs)
 
-    def process_send(self, message_type, recipients, events, request, user, submission, submissions=None, related=None, **kwargs):
+    def process_send(self, message_type, recipients, events, request, user, submission, submissions=list(), related=None, **kwargs):
         kwargs = {
             'request': request,
             'user': user,
@@ -125,7 +125,7 @@ class AdapterBase:
             else:
                 status = 'Message not sent as SEND_MESSAGES==FALSE'
 
-            message_logs.update_status = status
+            message_logs.update_status(status)
 
             if not settings.SEND_MESSAGES:
                 if recipient:
@@ -244,7 +244,7 @@ class ActivityAdapter(AdapterBase):
         try:
             # If this was a batch action we want to pull out the submission
             submission = submissions[0]
-        except TypeError:
+        except IndexError:
             pass
 
         Activity.actions.create(
diff --git a/opentech/apply/activity/models.py b/opentech/apply/activity/models.py
index 4712437346508a82cdb629f273f222fb41caa843..ea3e7101324996b16082ff1d3694b1d6b388ec6c 100644
--- a/opentech/apply/activity/models.py
+++ b/opentech/apply/activity/models.py
@@ -136,12 +136,13 @@ class Event(models.Model):
 
 class MessagesQueryset(models.QuerySet):
     def update_status(self, status):
-        return self.update(
-            status=Case(
-                When(status='', then=Value(status)),
-                default=Concat('status', Value('<br />' + status))
+        if status:
+            return self.update(
+                status=Case(
+                    When(status='', then=Value(status)),
+                    default=Concat('status', Value('<br />' + status))
+                )
             )
-        )
 
     update_status.queryset_only = True
 
diff --git a/opentech/apply/activity/tasks.py b/opentech/apply/activity/tasks.py
index d0d920c3e8aec1c95b52c45ed62a3afde57b4a37..efbaef51c7d036ee43833b0e980ffc243ebee539 100644
--- a/opentech/apply/activity/tasks.py
+++ b/opentech/apply/activity/tasks.py
@@ -17,7 +17,7 @@ def send_mail(subject, message, from_address, recipients, logs=None):
             'from_email': from_address,
             'to': recipients,
         },
-        link=update_message_status.s(log.values_list('id', flat=True)),
+        link=update_message_status.s(logs.values_list('id', flat=True)),
     )
 
 
@@ -44,6 +44,6 @@ def send_mail_task(**kwargs):
 @app.task
 def update_message_status(response, message_ids):
     from .models import Message
-    message = Message.objects.filter(id__in=message_ids)
-    message.external_id = response['id']
-    message.update_status(response['status'])
+    messages = Message.objects.filter(id__in=message_ids)
+    messages.update(external_id=response['id'])
+    messages.update_status(response['status'])
diff --git a/opentech/apply/activity/tests/test_messaging.py b/opentech/apply/activity/tests/test_messaging.py
index d804f3c4f52f815e9b8376e62ea926cd269b3574..4b9838aaf062e2106768f668114736621d0c2d4a 100644
--- a/opentech/apply/activity/tests/test_messaging.py
+++ b/opentech/apply/activity/tests/test_messaging.py
@@ -193,7 +193,7 @@ class TestActivityAdapter(TestCase):
         user = UserFactory()
         submission = ApplicationSubmissionFactory()
 
-        self.adapter.send_message(message, user=user, submission=submission, related=None)
+        self.adapter.send_message(message, user=user, submission=submission, submissions=[], related=None)
 
         self.assertEqual(Activity.objects.count(), 1)
         activity = Activity.objects.first()
@@ -271,7 +271,7 @@ class TestActivityAdapter(TestCase):
     def test_lead_not_saved_on_activity(self):
         submission = ApplicationSubmissionFactory()
         user = UserFactory()
-        self.adapter.send_message('a message', user=user, submission=submission, related=user)
+        self.adapter.send_message('a message', user=user, submission=submission, submissions=[], related=user)
         activity = Activity.objects.first()
         self.assertEqual(activity.related_object, None)
 
@@ -279,7 +279,7 @@ class TestActivityAdapter(TestCase):
         submission = ApplicationSubmissionFactory()
         user = UserFactory()
         review = ReviewFactory(submission=submission)
-        self.adapter.send_message('a message', user=user, submission=submission, related=review)
+        self.adapter.send_message('a message', user=user, submission=submission, submissions=[], related=review)
         activity = Activity.objects.first()
         self.assertEqual(activity.related_object, review)