diff --git a/synapse/handlers/message.py b/synapse/handlers/message.py
index 81cff0870e77aaa6783c1de38afc7d2bfa01064e..1cb81b6cf849a0d604a15dcceccb7f519cdd05bb 100644
--- a/synapse/handlers/message.py
+++ b/synapse/handlers/message.py
@@ -572,6 +572,9 @@ class EventCreationHandler(object):
 
         u = yield self.store.get_user_by_id(user_id)
         assert u is not None
+        if u["appservice_id"] is not None:
+            # users registered by an appservice are exempt
+            return
         if u["consent_version"] == self.config.user_consent_version:
             return
 
diff --git a/synapse/storage/registration.py b/synapse/storage/registration.py
index a530e29f438c88ca391eb013f830fc77cf117187..40f7cc16ee965a63b667fbcac86d7ffc1555f0cd 100644
--- a/synapse/storage/registration.py
+++ b/synapse/storage/registration.py
@@ -36,6 +36,7 @@ class RegistrationWorkerStore(SQLBaseStore):
             retcols=[
                 "name", "password_hash", "is_guest",
                 "consent_version", "consent_server_notice_sent",
+                "appservice_id",
             ],
             allow_none=True,
             desc="get_user_by_id",