User traits

This article explains how to import, configure, and manage custom user traits in Recurly Engage to extend targeting beyond default behavior metrics.

Usage tracking in Recurly Engage lets you record and normalize user interactions — like page views, button clicks, and time spent — so you can build dynamic segments and deliver personalized prompts at the right moment.
Available on all Recurly Engage plans

Prerequisites

  • You must have Company or App Administrator permissions in Engage.

Definition

Usage tracking in Engage captures quantitative user behaviors — visits, duration, and custom events — normalizes them, and makes them available as traits for segmentation and targeting.

Key benefits

Fine-grained targeting Segment users by exact frequency and recency of actions, such as the top 10% of visitors by daily active minutes.
Real-time normalization Metrics are normalized on a 0–10 scale as data arrives, making thresholds intuitive and adaptive.
Custom event support Beyond pages and clicks, ingest backend or partner events to track off-site conversions.

Key details

Usage tracking

Engage usage tracking lets you track individual consumption of the value-creating elements of your app or site.

A trait is an individual user attribute or behavior that you can target, such as device, location, or even business metrics (for example, lifetime value or satisfaction score). Engage lets you track traits based on how often a user has engaged with a specific feature or section of your app, and target users by frequency and recency of engagement for maximum impact. By default, usage traits automatically track visits and minutes, but you can configure them to track additional behaviors in your apps, such as specific pages or screens visited or buttons clicked.

Usage traits can be normalized on a 0–10 scale, with the lowest value in the dataset normalized to 0 and the highest value normalized to 10. Normalization happens in real time as new low and high values are recorded. This lets business teams define “Heavy users” as users whose minutes per visit are growing by 30% or more week over week, without needing to understand site-wide averages or highs and lows.

Understanding usage tracking

Below are the types of usage trackers that are available. A newly added tracker begins collecting information immediately, and it may take up to 24 hours before it can produce meaningful targeting options.

Visit duration

Time spent by the user in the app in MM:SS. Visit duration is recorded at the user level on a daily, weekly, and monthly basis.

Visits

The number of times a user visits your site or app. Visits are recorded on a daily, weekly, and monthly basis. The default visit length is 10 minutes, which is extended in 10-minute increments for as long as the user is using the app.

For day-over-day comparison, Engage compares data from midnight to midnight on one day versus the previous day. For week-over-week comparison, Engage compares data from midnight Sunday to midnight Sunday.

Traits tracked automatically

In addition to visits and minutes, Engage automatically tracks or creates:

  • Churn Score — A number between 0–1 indicating the probability that a user will churn, derived using machine learning.
  • Device Type — Phone, tablet, laptop, desktop, TV, watch. Also includes full user agent string.
  • Device OS — iOS, Android, Windows, MacOS, other. Also includes full user agent string.
  • Device Browser — Chrome, Chrome Mobile, Safari, Edge, other. Also includes full user agent string.
  • Device Manufacturer — Apple iPhone, Apple iPad, Nexus, Samsung, other. Also includes full user agent string.
  • Device SDK — Android Phone, Android Tablet, Google TV, Roku, other. Also includes full user agent string.

The following optional items require processing the end user's IP address. Engage never stores IP addresses.

  • Fraud score — A number between 0–10 ranking the user's likelihood of being a fraudulent user, derived using machine learning.

See data privacy for more information on how we process end-user information.

In addition, you can customize the tracker to collect information on specific pages or button clicks.

Concurrent logins and password sharing

The Concurrent logins segment logic identifies when a single user account is actively logged in from multiple locations simultaneously.

  • Detection: Generally, our proprietary, privacy-preserving algorithm detects concurrent logins from different locations within a single session.
  • Logic basis: The system primarily uses different IP addresses (locations) to detect multiple concurrent logins. Multiple sessions originating from the same IP address are currently treated as a single concurrent login.
  • Segment setup: You can set the number of concurrent logins you want to track in the Concurrent logins segment. It's one of our default segments, giving you a ready-made way to detect and prompt users who might be sharing their account credentials.
  • Security and compliance: Helps flag potentially suspicious behavior, such as credential sharing or account takeover attempts, by monitoring access from geographically distinct locations.
  • Usage control: Allows a merchant to enforce policies on where and how many times an account can be simultaneously active.

Page tracker

A page tracker lets you track specific pages or groups of pages by using wildcards or regex. Here are two examples:

Button tracker (web only)

A button tracker lets you track specific elements that a user clicks using Cascading Style Sheets (CSS):

Custom tracker

A custom tracker lets you send tracking information from any external system to Engage via API or software development kit (SDK), available on Roku, Apple TV, Android, and iOS. For example, if a user's payment has failed, you can send an event from your backend and target that user to update their credit card via Engage.

Set up a tracker

Engage tracks your users' behaviors across your applications. By default, we automatically track user visits and minutes, but you can also add other trackers, such as button clicks and views. Once you've added a tracker, you can use it to target segments, such as the top 20% of users who have downloaded a video.

Here's how to set up a new tracker. Start by going to Settings > Usage Tracking > Add New Tracker:

Web usage

For web apps, you can create two types of trackers: page and track.

  • page — Refers to visits to a particular page, such as /settings or /signup
  • track — Refers to a CSS id such as #download-btn or a CSS class such as .download-btn

Page example

To track a user's visits to the Settings page:

1

Add a tracker

Click “Add a tracker” and change the value to match your app's URL path. In addition to actual URLs, you can use a regular expression to specify wildcard matches and other advanced URL configurations.

2

Save your changes

Click “Save Changes.”

3

Add a new segment

Go to add a new segment.

4

Find your new trait

Under the Usage tab, you can see the newly added Engage trait you can target.

Track example

To track a user's clicks on a particular button:

1

Add a tracker

Click “Add a tracker” and change the value to match your HTML button ID or button class.

2

Save your changes

Click “Save Changes.”

3

Add a new segment

Go to add a new segment, as shown in the Page example above.

4

Find your new trait

Under the Usage tab, you can see the newly added Engage trait you can target.

Device usage (Roku, Apple TV, Android, iPhone, iPad, or web)

For TVs, tablets, and phones, you can create one type of tracker — custom. You'll likely need your app developer's help to integrate a snippet of code that we provide directly from Pulse.

NoteIf you don't have the device SDK integrated or you're tracking from a third party, you can only track via the cURL option in step 4.

Custom example

This example shows you how to add a custom tracker. You can use it to track anything on your client, such as a button click, visits to different screens, or a payment.

1

Add a tracker

Click “Add a tracker” and name your tracker.

2

Save your changes

Click “Save Changes” (Settings → Integrations).

3

Open the integration options

Now click the symbol < > to see the devices you can integrate on, and pick yours.

4

Select your programming language

Select the programming language for your device. Here are reference examples. You may want your developer to read this section.

cURL

Can be used in any system. Provide the associated ENDUSER_ID in your system. Make sure rf-app is set to the actual app ID (from Pulse URL).

[TODO: Dev/PO review — possible issue: the rf-app placeholder's last group has 8 characters, while a standard UUID's last group has 12.]

curl -H 'rf-app: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxx' \
     -H 'user-id: ENDUSER_ID' \
     'https://conduit.redcurly.com/ping/?type=custom&custom_field_id=fc4ccd34-7876-430b-8b64-65ac7c19a505'

More on the cURL (server-to-server) method

Optional headers, only needed if your account is configured for them:

HeaderValueWhen to send
user-id-jwtSigned JSON Web Token (JWT) of the user IDOnly if your app requires JWT-verified user IDs.
anonymous-user-idAnonymous visitor IDOnly for anonymous visitors, on apps that allow anonymous tracking.

Query parameters

ParameterRequiredValueNotes
typeYescustomMarks this as a custom event.
custom_field_idYesThe usage tracker's IDThe tracker being incremented.
device_typeNoFor example, web, ios, or androidDefaults to web if omitted.

A few things to know before you integrate:

  • The tracker referenced by custom_field_id must already exist as a usage-type tracker (created via Add New Tracker in Settings > Usage Tracking). Reporting against an ID that isn't configured this way is silently ignored — you won't see an error, but no usage will be recorded.
  • An incorrect app ID or tracker ID also won't raise an error — the request still returns 200 OK, but nothing is recorded. Double-check both values when setting this up.
  • Processing happens shortly after the request is accepted, not synchronously in the response — don't expect the usage event to be immediately reflected.
  • The app ID can also be supplied as part of the URL path instead of a header, but the header form shown above is recommended for server-to-server integrations.

JavaScript

For web or JavaScript clients.

RecurlyEngage.customTrack("fc4ccd34-7876-430b-8b64-65ac7c19a505");

External Web Tracker

For third-party websites. Tutorial: Usage Tracking → External.

HTML

Tracking pixel for emails, web, or JavaScript clients.

<img src="https://conduit.redcurly.com/ping/?type=custom&custom_field_id=fc4ccd34-7876-430b-8b64-65ac7c19a505" />

Swift

For Apple devices.

PromotionManager.customTrack("fc4ccd34-7876-430b-8b64-65ac7c19a505")

Kotlin

For Android devices.

PromotionManager.customTrack("fc4ccd34-7876-430b-8b64-65ac7c19a505")

Roku

For Roku devices.

m.promoMgr.callFunc("customTrack", { custom_field_id: "fc4ccd34-7876-430b-8b64-65ac7c19a505" })
5

Add a new segment

Go to add a new segment, as shown in the Page example above.

6

Find your new trait

Under the Usage tab, you can see the newly added Engage trait you can target. Once the custom tracker from step 4 is integrated, users are automatically segmented according to your needs.

Tracking web actions from other sites

A common example of tracking external conversions is the need to track links that refer users off-site. In many cases, it's difficult to see whether the user actually converted (for example, signed up or paid) after they land on the partner page. The following method requires you to add your user ID to the URL when you redirect to your partner. The partner site should save the user ID. Then, on completion of the conversion, the partner needs to notify Engage. Here's how to configure it.

Custom website action

1

Create a redirect URL

Create a redirect URL using a custom website action that includes an rf_uid parameter:

// https://example.com?campaign_id=456&rf_uid=123
// rf_uid=123 is the important piece
if (RecurlyEngage.anonymousUserId) {
  return window.location.href = "https://example.com?campaign_id=456&rf_uid=" + RecurlyEngage.anonymousUserId;
} else if (RecurlyEngage.userId) {
  return window.location.href = "https://example.com?campaign_id=456&rf_uid=" + RecurlyEngage.userId;
}
2

Add a new website action

Go to Settings > Actions > Website Actions > Add New Action.

3

Add the code

Add the code from step 1, making sure to change the URL and parameters to your partner URL, but keep rf_uid intact.

4

Save your changes

Save the changes.

5

Open the prompt's website actions

Go to the prompt that you want to redirect from and click Website Actions > Add Action.

6

Add the custom website action

Add the custom website action to the prompt.

External custom tracker

1

Open the tracker form

Go to Settings > Usage Tracking > Add New Tracker, as shown in Set up a tracker above.

2

Add a custom tracker

Add a new custom tracker.

3

Save your changes

Click Save Changes.

4

Open the code view

Click the code icon < >.

5

Select External Web Tracker

Click External Web Tracker.

6

Share the first code block

Your partner should add the first code block to their landing page to save the referred user ID (Usage → External).

7

Share the second code block

Your partner should add the second code block to their conversion page to notify Engage of a successful conversion.

8

Add the tracker as a custom goal

Add the tracker as a Custom Goal to your prompt (no need to wait for steps 6 and 7). This lets you see how your prompt is performing.

9

Save the prompt

Save the prompt.

10

Start the prompt

Once your partner has implemented steps 6 and 7, start the prompt to see results.

Using events in Google Tag Manager

In some cases, you can use Google Tag Manager (GTM) events to trigger actions with the Engage SDK. Here's a quick primer.

GTM setup

1

Set up a trigger

Set up a new trigger that responds to an event named test.

2

Associate a tag

Associate a tag with the trigger.

3

Publish your changes

Publish changes to production.

Testing

To test, send an event via the GTM dataLayer. The contents of the Custom HTML tag will execute:

> dataLayer.push({ event: 'test' });

// Test Event for anon user: c7c02a061db6aba3adae5263523005b57a8f90f16cf59d46fe036191213be5dd, user: 123

Did this page help you?