Skip to content

Segmentation

User segmentation is the process of separating users into distinct groups, or segments, based on shared characteristics. Developers might segment users based on language preferences, product version, geographical region, or user persona. All that is needed is to define segment's Condition using one or several User Properties.

Balancy has several built-in segments:

Monetary

Defines how much in total the player has already paid in the game:

- Killer Whale ≥$1500
- Whale ≥$500
- Orca ≥$150
- Dolphin ≥$30
- Minnow ≥$1
- None $0

Frequency

Defines how often the player makes purchases.

- F0 (None)
- F1 (Daily)
- F3 (2-4 a Week)
- F7 (Weekly)
- F14 (Once per 2 Weeks)
- F30 (Monthly)
- F60 (Rarely)

Recency

Defines how much time passed since the last purchase.

None (never)
R0 (<1 day)
R1 (1-2 days)
R2 (2-7) days
R7 (7+ days)

MaxPay

Defines the maximum one-time payment the player can afford.

- $5
- $10
- $20
- $50
- $100

All the segments Balancy provides can be edited, and you can also create your own custom Segments. Just open the Segmentation section.

Below are some examples of custom Segments:

Service account

Comfort Payment

The Comfort Payment user property is a powerful tool for user segmentation and personalisation, enabling you to tailor experiences based on a player's spending habits. This property helps to identify the typical amount a player is comfortable spending, facilitating more effective marketing strategies and personalised offers.

Calculation Methods

Balancy offers three methods to calculate the Comfort Payment:

  1. Several Last Payments:

    • This method uses the last N payments made by the player to determine their comfort payment amount. By default, N=60.
  2. During Last Several Days:

    • This method calculates the comfort payment based on all transactions made during the last N days. By default, N=60.
  3. All Purchases:

    • This approach uses the entire payment history of the player to compute the comfort payment amount.

Excluding Specific Payments

To ensure accuracy, you can exclude certain payments from the calculation. This is useful for omitting promotional or conventional payments that might skew the data.

Statistical Measures

From the collected payment data, you can choose to use either the median or the average value for the comfort payment. Balancy will automatically recalculate this value after each purchase, ensuring it remains up-to-date and reflective of the player's current spending behaviour.

LiveOps Settings

All the above mentioned parameters can be set up in LiveOps Settings modal available after installation of LiveOps package.

LiveOps Settings

Importance of Comfort Payment Segmentation

Understanding a player's comfort payment amount is crucial for several reasons:

  1. Enhanced Personalization:

    • By knowing how much is it comfortable for player to spend you can tailor in-game offers and promotions to align with their spending habits, increasing the likelihood of purchases.
  2. Improved User Experience:

    • Players are more likely to engage positively with offers that match their spending comfort, enhancing their overall experience and satisfaction with the game.
  3. Optimized Revenue:

    • Effective segmentation based on comfort payment can lead to higher conversion rates, as players are presented with offers they are more likely to accept.
  4. Targeted Marketing:

    • This property allows for more precise targeting in marketing campaigns, ensuring that promotional efforts are directed towards players with the highest potential for engagement and spending.

By leveraging the Comfort Payment property, developers can significantly enhance their ability to segment and personalize user experiences, driving both player satisfaction and revenue growth.

Section for programmers

Balancy informs the client if the client's segment has changed. Read more about ISmartObjectsEvents

namespace Balancy
{
    public class SmartObjectsEventsExample : ISmartObjectsEvents
    {
        ...

        public void OnSegmentUpdated(SegmentInfo segmentInfo)
        {
            Debug.Log("=> OnSegmentUpdated: " + segmentInfo?.Segment?.Name + " ; IsIn = " + segmentInfo?.IsIn);
        }
    }
}

If you would like to find a specific segment by its UnnyID, you can do so using DataEditor.GetModelByUnnyId:

var segment = DataEditor.GetModelByUnnyId<SegmentOption>(segmentUnnyId);

After you get the segment, you can do some cool things with it, like check if the end user is in the segment, using the IsInSegment method:

var isUserInSegment = LiveOps.Analytics.IsInSegment(segment);