The reset method resets the identify and group for the local session.
Specifically, it resets the anonymousId, userId, groupId, and traits.
The reset method should be called when users log out. This way, if the user
logs back in with another account, the userIds and traits from the different
sessions remain separate.
While Single Page Apps (SPAs) are great for many reasons, they do require some extra consideration in order to set up client-side tracking than with a traditional webpage.
By default, the Hightouch htevents.js library doesn't generate or store the referrer value. Instead, the referrer value you see in the payload is the value returned by document.referrer directly from the browser, and the URL value is the canonical URL on the page.
When a user navigates between pages on an SPA website, there won't be a referrer because there is no concept of a new page since it's all a single page load. This means that the referrer will always be the same as it was on the first page call where someone was first directed to your site. However, in order to circumvent this, you can manually set the referrer and URL in your Hightouch calls by updating the context object.
For example, a Page call with the referrer and URL manually set looks like this:
Your application should update the URL in the address bar to emulate traditional webpage navigation. Full page requests aren't made in most of these instances since the resources are loaded on initial page load. This means that the Page call in the traditional htevents.js snippet won't fire again as a user navigates around your site.
You should still place the snippet in the head of your site, but you should remove the Page call and fire it whenever you're emulating a page load. Hightouch recommends that you call Page from the same block of logic that updates the view and URL path like below:
// The new view has been called to render
htevents.page("Home")
To track more than the page field, pass those fields in as additional properties. Hightouch recommends that you use variables to set information about page properties, rather than hard-coding. In most SPA frameworks, you can automate this by attaching the Page call to the routing service.
The Browser SDK can trigger track and identify events based on the URL query string. You can use this when tracking email click-throughs, social media clicks, and digital advertising.
Query parameters:
Parameter
Description
Triggers
ajs_uid
The userId for the identify event.
This triggers an identify event.
ajs_event
The name for the track event.
This triggers a track event.
ajs_aid
The anonymousId for the user.
This sets the anonymousId, by itself does not trigger any event.
ajs_prop_<property>
A property to set on the track event.
This sets a property on the resulting track event, by itself does not trigger any event.
ajs_trait_<trait>
A trait to set on the identity event.
This sets a trait on the resulting identify event, by itself does not trigger any event.
The useQueryString option allows you to control the behavior of the query parameters. For example, you can entirely disable query string processing by setting useQueryString to false:
Using the QueryString API you can easily track users across different domains. For example, if you have the following sites:
Site 1: www.landing-page.com
Site 2: www.product-page.com
To track a user who starts on Site 1 and navigates to Site 2, you just need to pass the userId from Site 1 to Site 2 using the ajs_uid query parameter.
https://www.product-page.com/?ajs_uid=123
This will automatically trigger an identify event on Site 2 with userId: 123.
If you want to track anonymous users across domains, you can access the anonymousId on Site 1 using:
htevents.user().anonymousId()
You can then pass the anonymousId from Site 1 to Site 2 using the ajs_aid query parameter. Note that the ajs_aid parameter does not automatically trigger an identify event.
A session is a group of "uninterrupted" events that were performed by the same visitor. The session resets once the session's timeout has expired. For
example, if the visitor views a couple pages, and then returns to your site after a day, the next day's events will be considered a new session.
The browser SDK automatically tracks a sessionId field to track what events occurred in the same session. If two events occured in the same session, they
will have the same session ID.
The session timeout can be adjusted from the default of 30 minutes when the SDK is initialized:
e.load('YOUR_WRITE_KEY', {
apiHost: 'us-east-1.hightouch-events.com',
user: {
sessions: {
autoTrack:true,
// Set the timeout to 60 minutes.timeout: 60*60*1000,
}
}
})
Hightouch automatically captures UTM parameters that you pass in URLs. You can also manually pass UTMs into the context.campaign field.
UTM parameters are only used when linking to your site from outside of your domain. When a visitor arrives to your site using a link containing UTM parameters, Hightouch's Browser SDK will automatically parse the URL query string and store UTM parameters within the context.campaign object as outlined here. These parameters do not persist to subsequent calls unless you pass them explicitly.
UTM parameters:
Parameter
Mapping
Description
utm_campaign
campaign.name
This is the name of your campaign. All marketing activities that support this campaign need to have the same utm_campaign so that downstream analysis to measure performance for this specific campaign can be done off this primary key.
utm_medium
campaign.medium
How the traffic is coming to your site. Is it through email, a display ad, or an online forum? This ensures downstream analysis can easily see which channel performs the best.
Where the traffic is specifically coming from. You can be specific here. This ensures downstream analysis can measure which specific source brings the most conversions.
eg. twitter, facebook, adroll
utm_content
campaign.content
For multiple calls to action on a single page, utm_content indicates which one. For example, on a website, there may be three different display ads. While the link on each display ad will have the same utm_campaign, utm_medium, and utm_source, the utm_content will be different.
eg. banner, left-side, bottom-side
utm_term
campaign.term
This is the parameter suggested for paid search to identify keywords for your ad. If you’re using Google Adwords and have enabled “autotagging”, then you don’t need to worry about this. Otherwise, you can manually pass the keywords from your search terms through this parameter so that you can see which keywords convert the most. Note that this parameter is reserved explicitly for search.
eg. toast, butter, jam
If you’d like UTM parameters to persist in subsequent calls, you’ll need to manually set those fields in context.campaign. For example: