In addition to tracking page views, the HubSpot tracking code has functions that allow you identify visitors, track events, and manually track page views (without reloading the page).
Function calls are pushed into the
var _hsq = window._hsq = window._hsq || ; _hsq.push(["method", "arg1"]);
Anything already in the
_hsq array is processed when the tracking code is loaded, so you can push an
identify call to the array before the code loads to have the identity information pushed with the initial
trackPageView is automatically called when the tracking code loads, so you should not push any
trackPageView calls to
_hsq before the page loads.
The HubSpot Analytics system identifies unique records using two pieces of data, the usertoken (stored in the visitors browser in the hubspotutk cookie) and the email address. When the HubSpot tracking code tracks an action (such as a page view) for a visitor, the tracking code automatically associates that action with the usertoken. When you use the Tracking Code API to identify a record by its email address, the analytics system will tie that email address to the usertoken, so that the HubSpot Contacts system can update the contact record with that email address, or create a new contact record with the email address if no contact with that email exists yet. HubSpot will validate the email address used for any process that would create or update a contact record. The Contacts system uses the analytics data associated with the usertoken to show analytics data (page views, original source, etc.) for the contact record.
With this in mind, you should only use the Identify method when you know the identity (i.e. the email address) of the person viewing the page. Using a placeholder email for unknown visitors will create a contact record with that placeholder email, and the visitor's usertoken cookie will be associated with that record, meaning that all unknown visitors would be associated with that single placeholder contact.
Keep in mind that the
identify function only sets the identities in the tracker. The identities do not get passed to HubSpot until you make a separate
Please note that the HTTP API cannot be used to associate analytics data with a contact record, though you can still use the &email= parameter in the URL to associate the event with the contact with that email address (or create a new contact if the email address does not belong to an existing record).
trackEvent function is used to track Events in your HubSpot Reports. Events are used to track that some event occurred, and can be tied to a HubSpot Contact record so that you can see if/when a contact triggered that event. While you can set up simple events in the HubSpot Application, you can use the Events API to track more complicated processes on your website, or track events that occur offline.
There are two APIs that work with Events, the
trackEvent function in the Tracking Code API (which is the preferred API) and the HTTP API.
The HTTP API can be used in cases where the HubSpot tracking code cannot be installed, so it can be used to track offline events (so you could trigger an event based on data processed in a CRM). While the HTTP API cannot be used to tie analytics data to a contact record, you can identify a contact record by email address, so that offline events can still be tied to contact records.
Events can be triggered, using a numerical ID or a string name. If you're creating events in HubSpot, from the Reports > Events app, events will automatically be assigned a numerical ID, and you'll need to use that numerical ID to trigger that specific event. You can get the ID out of the URL when viewing the event in HubSpot. See this page for more details about creating events.
Second, you can trigger an event using a string name for the event. If you use a name, and there is not an existing event that already has that name, a new event with that name will be dynamically created. If there is an event was previously dynamically created with a matching name, then the event will count towards that existing event. This allows you to dynamically create new events, without needing to create them manually in HubSpot. Note: Events created in the HubSpot app cannot be triggered by name, only by ID.