SnapEngage – live chat

SnapEngage is a live chat widget for your site which integrates with your existing chat client. It integrates with many online applications and even allows you to make a remote screenshot of the webpage. SnapEngage can be customized to fit your website look and feel, offers reports and statistics and is available in many languages.


To start using the SnapEngage integration, you must have installed the django-analytical package and have added the analytical application to INSTALLED_APPS in your project file. See Installation and configuration for details.

Next you need to add the SnapEngage template tag to your templates. This step is only needed if you are not using the generic analytical.* tags. If you are, skip to Configuration.

The SnapEngage Javascript code is inserted into templates using a template tag. Load the SnapEngage template tag library and insert the SnapEngage tag. Because every page that you want to track must have the tag, it is useful to add it to your base template. Insert the tag at the bottom of the HTML body:

{% load snapengage %}
{% snapengage %}


Before you can use the SnapEngage integration, you must first set the widget ID. You can customize the visitor nickname and add information to their status in the operator buddy list, and customize the text used in the chat window.

Setting the widget ID

In order to install the chat code, you need to set the ID of the SnapEngage widget. You can find the site ID on the Your Widget ID page of your SnapEngage account. Set SNAPENGAGE_WIDGET_ID in the project file:


If you do not set the widget ID, the chat window will not be rendered.

Customizing the widget

The SnapEngage widget can be customized in various ways using either context variables or settings. More information about controlling the widget can be found on the customization FAQ section of the SnapEngage website.

Setting Context variable Description
SNAPENGAGE_DOMAIN snapengage_domain Manually set the domain name to follow users across subdomains.
SNAPENGAGE_SECURE_CONNECTION snapengage_secure_connection Force the use of SSL for the chat connection, even on unencrypted pages. (Default: False)
SNAPENGAGE_BUTTON_EFFECT snapengage_button_effect An effect applied when the mouse hovers over the button. (Example: "-4px")
SNAPENGAGE_BUTTON_STYLE snapengage_button_style What the chat button should look like. Use any of the BUTTON_STYLE_* constants, or a URL to a custom button image.
SNAPENGAGE_BUTTON_LOCATION snapengage_button_location The location of the chat button. Use any of the BUTTON_LOCATION_* constants.
SNAPENGAGE_BUTTON_LOCATION_OFFSET snapengage_button_location_offset The offset of the button from the top or left side of the page. (Default: "55%")
SNAPENGAGE_FORM_POSITION snapengage_form_position Configure the location of the chat window. Use any of the FORM_POSITION_* constants.
SNAPENGAGE_FORM_TOP_POSITION snapengage_form_top_position The chat window offset in pixels from the top of the page.
SNAPENGAGE_READONLY_EMAIL snapengage_readonly_email Whether a preset e-mail address can be changed by the visitor. (Default: False)
SNAPENGAGE_SHOW_OFFLINE snapengage_show_offline Whether to show the chat button when all operators are offline. (Default: True)
SNAPENGAGE_SCREENSHOTS snapengage_screenshots Whether to allow the user to take a screenshot. (Default: True)
SNAPENGAGE_OFFLINE_SCREENSHOTS snapengage_offline_screenshots Whether to allow the user to take a screenshot when all operators are offline. (Default: True)
SNAPENGAGE_SOUNDS snapengage_sounds Whether to play chat sound notifications. (Default: True)

There are also two customizations that can only be used with context variables.

Context variable Description
snapengage_proactive_chat Set to False to disable proactive chat, for example for users who are already converted.
snapengage_email Set the e-mail address of the website visitor. (See Setting the visitor e-mail address)

Setting the visitor e-mail address

If your website identifies visitors, you can use that to pass their e-mail address to the support agent. By default, the e-mail address of an authenticated user is automatically used. See Identifying authenticated users.

You can also set the visitor e-mail address yourself by adding either the snapengage_email (alias: snapengage_identity) or the analytical_identity variable to the template context. If both variables are set, the former takes precedence. For example:

context = RequestContext({'snapengage_email': email})
return some_template.render(context)

If you can derive the e-mail address from the HTTP request, you can also use a context processor that you add to the TEMPLATE_CONTEXT_PROCESSORS list in

from django.core.exceptions import ObjectDoesNotExist

def set_snapengage_email(request):
        profile = request.user.get_profile()
        return {'snapengage_email': profile.business_email}
    except (AttributeError, ObjectDoesNotExist):
        return {}

Just remember that if you set the same context variable in the RequestContext constructor and in a context processor, the latter clobbers the former.

If the user should not be able to edit the pre-set e-mail address, you can set either the snapengage_readonly_email context variable or the SNAPENGAGE_READONLY_EMAIL setting to True.

Thanks go to SnapEngage for their support with the development of this application.