diff --git a/analytical/templatetags/intercom.py b/analytical/templatetags/intercom.py
index f0f50d1..27e9047 100644
--- a/analytical/templatetags/intercom.py
+++ b/analytical/templatetags/intercom.py
@@ -66,6 +66,8 @@ class IntercomNode(Node):
if 'email' not in params and user.email:
params['email'] = user.email
+ params.setdefault('user_id', user.pk)
+
params['created_at'] = int(time.mktime(
user.date_joined.timetuple()))
else:
diff --git a/analytical/tests/test_tag_intercom.py b/analytical/tests/test_tag_intercom.py
index bc24739..754081c 100644
--- a/analytical/tests/test_tag_intercom.py
+++ b/analytical/tests/test_tag_intercom.py
@@ -26,21 +26,21 @@ class IntercomTagTestCase(TagTestCase):
def test_node(self):
now = datetime.datetime(2014, 4, 9, 15, 15, 0)
- rendered_tag = IntercomNode().render(Context({
- 'user': User(
- username='test',
- first_name='Firstname',
- last_name='Lastname',
- email="test@example.com",
- date_joined=now),
- }))
+ user = User.objects.create(
+ username='test',
+ first_name='Firstname',
+ last_name='Lastname',
+ email="test@example.com",
+ date_joined=now,
+ )
+ rendered_tag = IntercomNode().render(Context({'user': user}))
# Because the json isn't predictably ordered, we can't just test the whole thing verbatim.
self.assertEqual("""
-""", rendered_tag) # noqa
+""" % {'user_id': user.pk}, rendered_tag) # noqa
@override_settings(INTERCOM_APP_ID=None)
def test_no_account_number(self):
@@ -52,18 +52,21 @@ class IntercomTagTestCase(TagTestCase):
def test_identify_name_email_and_created_at(self):
now = datetime.datetime(2014, 4, 9, 15, 15, 0)
+ user = User.objects.create(
+ username='test',
+ first_name='Firstname',
+ last_name='Lastname',
+ email="test@example.com",
+ date_joined=now,
+ )
r = IntercomNode().render(Context({
- 'user': User(
- username='test',
- first_name='Firstname',
- last_name='Lastname',
- email="test@example.com",
- date_joined=now),
+ 'user': user,
}))
self.assertTrue('window.intercomSettings = {'
'"app_id": "abc123xyz", "created_at": 1397074500, '
- '"email": "test@example.com", "name": "Firstname Lastname"'
- '};' in r)
+ '"email": "test@example.com", "name": "Firstname Lastname", '
+ '"user_id": %(user_id)s'
+ '};' % {'user_id': user.pk} in r, msg=r)
def test_custom(self):
r = IntercomNode().render(Context({
diff --git a/docs/services/intercom.rst b/docs/services/intercom.rst
index 700fc1e..5c9f250 100644
--- a/docs/services/intercom.rst
+++ b/docs/services/intercom.rst
@@ -120,6 +120,8 @@ Context variable Description
-------------------- -------------------------------------------
``intercom_email`` The visitor's email address.
-------------------- -------------------------------------------
+``intercom_user_id`` The visitor's user id.
+-------------------- -------------------------------------------
``created_at`` The date the visitor created an account
==================== ===========================================
@@ -130,7 +132,7 @@ Context variable Description
Identifying authenticated users
-------------------------------
-If you have not set the ``intercom_name`` or ``intercom_email`` variables
+If you have not set the ``intercom_name``, ``intercom_email``, or ``intercom_user_id`` variables
explicitly, the username and email address of an authenticated user are
passed to Intercom automatically. See :ref:`identifying-visitors`.