Understanding Segmentation

Back to Segmentation Main Page

Table of Contents

What is Segmentation?

Segmentation is the grouping of CRM.COM information into units called Segments, composed by lists of records with common business characteristics.  Segments can be used by various System business processes as identification conditions or for simple statistical calculations and can be created using CRMQL (CRM.COM Query Language), a business query language developed by CRM.COM. 

Segmentation  Glossary

TermsDescription
CRMQLInitials for CRM.COM Query Language, a business query language developed by CRM.COM, used to query information within the CRM.COM System.
SegmentsLists of records in CRM.COM based on conditions that are defined using CRMQL (CRM.COM Query Language), a business query language developed by CRM.COM. 
Segment TemplateA template written in CRMQL which includes Segment criteria and can be used when creating Segments to load the criteria instead of writing them repeatedly.
Segment EntityCRM.COM entities such as Contact Information, Accounts Receivable and Subscriptions, which determine the type of information which is grouped on generating the Segment. Depending on the selected entity, the respective CRMQL ' tags' become available.  

Segmentation  Key Processes and Concepts

Processes / ConceptDescription

Query Correctness Validation

A CRMQL Query must be correctly written to retrieve results. Its validation takes place in two instances:
  • When saving a Segment as 'Posted'
  • When previewing a 'Draft' Segment

Previewing/Exporting Segments

Once a Segment is created and saved, users can preview the results by using the PREVIEW action.
The results in the preview are generated dynamically based on the criteria and exceptional specified items. The Segment records can be exported in an EXCEL file using the EXPORT action, available through the Preview modal.

Not all the records in a Segment are available through Preview. For a complete list of the results, the Segment has to be exported.

Using Segment Criteria TemplatesSegment Criteria Templates are used during the creation or the modification of a Segment to automatically set its criteria according to the Template. In this way, existing Queries ca be reused and amended, instead of having to be rewritten.

Segmentation  Access & Viewing Controls

Business Network Characteristics define the level of access for each entry. i.e. whether it will be available for selection, for viewing or editing.

EntityNetwork CharacteristicsDescription
SegmentsGlobal Viewing EntitiesSegments have no access restrictions. They can be viewed and selected by all users.
Segment Criteria TemplateGlobal Viewing EntitiesSegment Criteria Template have no access restrictions. They can be viewed and selected by all users.

 

Segmentation  Related Modules

EntityInteraction of Segmentation with the Entity
Subscriptions
  • Segments can be created for Subscriptions.
Jobs
  • Segments can be created for Jobs.
Activities
  • Segments can be created for Activities.
Bills
  • Segments can be created for Bills.
  • Segments are included in conditions of Bill Sending Runs to include or exclude customers from being billed.
Contact Information
  • Segments can be created for Contact Information.
Accounts Receivable
  • Segments can be created for Accounts Receivable.

Rewards

  • Segments can be created for Award Transactions.
  • Segments can be created for Spend Transactions.
  • Segments can be created for Award Expiration Transactions.
  • Segments can be created for Rewards Participants.
  • Segments are included in the criteria of Award Expiration Definitions to include or exclude participants' Awards from expiring.

Service Requests

  • Segments can be created for Service Requests.

Payment Gateway

  • Segments can be created for Payment Gateway Cards.
  • Segments can be created for Payment Gateway Requests.
  • Segments are included in the criteria of Payment Gateway Runs to include or exclude customers' external (payment gateway) accounts from being updated by the Run.

Payments

  • Segments can be created for Payments.

Buy in Advance Request

  • Segments can be created for Buy in Advance Request.
  • Provisioning
    • Conax Contego
    • Nagravision
    • EXSETSMS
  • Segments are included in the criteria of Fingerprinting Runs to include or exclude customers from being sent a Fingerprinting message
Additive Discount
  • Segments are included in the criteria of Additive Discount Definitions to include or exclude customers from being illegible for the discounts
Notifications
  • Segments are included in the criteria of Notification Runs to include or exclude customers from being notified.

Segmentation  - Business Examples

The following section provides business examples of how the CRM.COM Segmentation module is used.

Company ZX wants to create Segments

Company ZX needs to create segments

Business Requirement

Company ZX wants to create a Segment for "Contacts that have their birthday in the next month" to be used on discounts. They must also to include Contacts that have their birthday in one and a half months.


CRM.COM Solution

  • Configuration
    • Create the following segment:
      • Name: Retrieve contacts that have their birthday in the current month
      • Entity: Contact Information
      • Criteria: 

     

    contact_information.type="Person"
    and contact_information.month_of_birth = current_month()

     

      • Click Save

More Information on Creating Segments can be found at Creating Segments.

Company ZX wants to create a Segment Template

Company ZX needs to create segment template

Business Requirement

Company ZX wants to create a Segment Criteria Template for "Contacts that have their birthday this month" to use it for various promotions and notifications.


CRM.COM Solution

  • Configuration

    The following configurations is required in the System to satisfy the requirement

    • Create the following Segment Criteria Template:
      • Name: Contacts that have their birthday this month
      • Entity: Contact Information
      • Criteria: 

     

    contact_information.type="Person"
    and contact_information.month_of_birth = current_month()

     

      • Click Save 

More Information on Creating segment templates can be found at Configuring Criteria Templates.

Company ZX wants to create Segments using a template

Company ZX needs to create segments using a template

Business Requirement

Company ZX wants to create a Segment for Accounts Receivables that are in Debt, excluding those of VIPs, to use in various segmentations and business processes. 


CRM.COM Solution

  • Configuration
    • Create the following Segment Criteria Template
      • Name:  Accounts Receivable in Debt excluding VIP
      • Criteria:

     

    accounts_receivable.balance > 0
    and accounts_receivable.credit_status = "Exceeded"
    and accounts_receivable.classification!= "VIP"
    • Create the following Segment using the above template:
      • Template: Accounts Receivable in Debt, excluding VIP 
      • Name: Accounts Receivable in Debt, excluding VIP
      • Entity: Accounts Receivable
      • Click Save 

More Information on creating Segments using a template can be found at Configuring Criteria Templates

 

Company ZX wants to export a promotional Segment

Company ZX needs to export a promotional segment

Business Requirement

Company ZX want to export a Segment for "Contacts that have their birthday in November" for a check-up process.


CRM.COM Solution

  • Configuration 
    • Navigate to the corresponding Segment:
      • Actions > Preview
      • Click on Export
      • Click on Download button that is present on the bottom of the Preview screen
      • Navigate to Downloads folder
      • Open the .csv file 

More Information on exporting Segments can be found at Managing Segments.

 

CRMQL Query Examples

Contact Information

Company ZX needs to create segments based on contacts

Retrieve Contact Information of Type "Person" living in Nicosia.

contact_information.type = "Person" 
and exist(contact_information.address.area = "Nicosia")

 

Retrieve Contact Information of Type "Person" that have their birthday in the current month.

contact_information.type="Person" 
and contact_information.month_of_birth = current_month() 
contact_information.type="Person" 
and contact_information.month_of_birth > current_month()
and contact_information.month_of_birth <= (current_month()+1) 

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Subscriptions

Company ZX needs to create segments based on subscriptions

Retrieve Subscriptions of Type "Normal" having at least one 'Effective' Service.

subscription.type = "Normal" 
and exist(subscription.service.life_cycle_state = "Effective")

 

Retrieve Subscriptions of Type "Normal" not having any 'Effective' movie Service.

subscription.type="Normal" 
and not exist
(subscription.service.life_cycle_state="Effective" 
and subscription.service.product= "movies" )

 

Retrieve Subscriptions of Type "Normal" having at least one 'Not Effective' Service, which was terminated in the last 15 days.

subscription.type="Normal" 
and exist(subscription.service.life_cycle_state="Not Effective" 
and subscription.service.life_cycle_state_start_date <= day_end() 
and subscription.service.life_cycle_state_start_date >= days_before(day_end(),15) )

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Accounts Receivable

Company ZX needs to create segments based on accounts receivable

Retrieve Accounts Receivable having a Balance greater than 0 and a credit status which is "Exceeded" and a Classification which is not "VIP".

accounts_receivable.balance > 0 
and accounts_receivable.credit_status = "Exceeded" 
and accounts_receivable.classification!= "VIP"

Retrieve Accounts Receivable which are not set to receive Bills by email.

accounts_receivable.life_cycle_state="Active"
and not exist(accounts_receivable.presentment_preference.presentment_method="Email"
and accounts_receivable.presentment_preference.active=true)

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Bills

Company ZX needs to create segments based on bills

Retrieve Bills which are partially paid and their outstanding amount or unsettled amount is less than 10.

bill.status = "Partially_settled" 
and (bill.outstanding_amount < 10
or bill.unsettled_amount < 10)

Retrieve Bills which are due at the end of the month and are not communicated by email yet .

bill.due_date=month_end()
and not exist(bill.communication_queue.media="Email"
and bill.communication_queue.life_cycle_state="Completed")

Retrieve Bills which are due at the end of the month and were communicated with errors.

bill.due_date=month_end()
and exist(bill.communication_queue.media="Email" and bill.communication_queue.life_cycle_state="Rejected")
and not exist(bill.communication_queue.media="Email" and bill.communication_queue.life_cycle_state="Completed")

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Activities

Company ZX needs to create segments based on activities

Retrieve Activities of Type "Installation" which are still in progress and are past their estimated completion date.

activity.type="Installation" 
and activity.life_cycle_state = "In progress" 
and activity.estimated_completion_date < day_start()

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Jobs

Company ZX needs to create segments based on jobs

Retrieve Jobs of Type "Maintenance" which were completed yesterday.

job.type="Maintenance" 
and job.life_cycle_state = "completed" 
and job.actual_completion_date < day_start() 
and job.actual_completion_date >=days_before(day_start(),1)

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Rewards Participants 

Company ZX needs to create segments based on Rewards Participants

Retrieve Rewards Participants who have signed up today.

rewards_participant.sign_up_date >= day_start() 

Retrieve Rewards Participants who have signed to a specific Reward Scheme today.

rewards_participant.sign_up_date >= day_start() 
and exist(rewards_participant.participating_reward_scheme.name="New Customers")

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Award Reward Transactions 

Company ZX needs to create segments based on Award Reward Transactions

Retrieve Award Reward Transactions submitted this week by a specific offer.

award_reward_transaction.submitted_date >= week_start()
and award_reward_transaction.submitted_date <= week_end()
and award_reward_transaction.reward_offer.number="00034

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Spend Reward Transactions 

Company ZX needs to create segments based on Spend Reward Transactions

Retrieve Spend Reward Transactions having a total amount of more than 10 submitted by specific units.

spend_reward_transactions.total_amount > 10
and (spend.reward_transactions.submitted_by_unit="Sales Department 1" or spend.reward_transactions.submitted_by_unit="Sales Department 2" )

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Service Requests

Company ZX needs to create segments based on Service Requests

Retrieve Service Requests of Classification Request for Change which were completed yesterday.

service_request.classification ="Request for Change" 
and service_request.life_cycle_state = "completed" 
and service_request.actual_completion_date < day_start() 
and service_request.actual_completion_date >= days_before(day_start(),1)

More Information on Using CRM Query Language can be found at Using CRM Query Language.

Payment Gateway Cards

Company ZX needs to create segments based on Payment Gateway Cards

Retrieve Payment Gateway Cards which are going to expire in the next month.

payment_gateway_card.payment_gateway_provider="Stripe" 
and (
   payment_gateway_card.expiration_year=current_year() 
   and payment_gateway_card.expiration_month=(current_month()+1)
   or
   (
      payment_gateway_card.expiration_year=(current_year()+1) 
      and payment_gateway_card.expiration_month=1 
      and current_month()=12
    )
)

Retrieve Payment Gateway Cards which failed the security code check.

payment_gateway_card.payment_gateway_provider="Stripe" 
and payment_gateway_card.security_code_check_result=FAIL

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Payment Gateway Requests

Company ZX needs to create segments based on Payment Gateway Requests

Retrieve Payment Gateway Requests that were rejected during the last month.

payment_gateway_request.payment_gateway_provider="Stripe" 
and payment_gateway_request.life_cylce_state="REJECTED" 
and payment_gateway_request.created_date<=month_start()
Retrieve Payment Gateway Requests that were posted successfully during the last month.
payment_gateway_request.payment_gateway_provider="Stripe" 
and payment_gateway_request.life_cylce_state="POSTED" 
and payment_gateway_request.created_date<=month_start()

More Information on Using CRM Query Language can be found at Using CRM Query Language.

 

Payments

Company ZX needs to create segments based on Payments

Retrieve Payments of Type "Web Payments" posted within the last day.

payment.type="Web Payments" 
and posted_date <= day_end() 
and posted_date>= day_start()

Retrieve Payments that were posted through Vouchers, within the last week.

posted_date<= day_end() and posted_date >= weeks_before(day_end(),1)
and payment.voucher.life_cycle_state="Used"

Retrieve Payments that were posted within the last day, that were not communicated by email yet.

posted_date <= day_end() and posted_date>= day_start()
and not exist(payment.communication.direction="Outgoing"
and payment.communication.media="Email"
and payment.communication.life_cycle_state="Completed")

More Information on Using CRM Query Language can be found at Using CRM Query Language.

Buy in Advance Requests

Company ZX needs to create segments based on Buy in Advance Requests

Retrieve Buy in Advance Requests that were submitted today.

buy_in_advance_request.created_date >= day_start and buy_in_advance_request.created_date <= day_end

Retrieve 'Effective' Buy in Advance Request that are becoming 'Effective' for billing tomorrow and have a duration of more than 3 months.

buy_in_advance_request.life_cycle_state="EFFECTIVE" and buy_in_advance_request.billing_effective_date > day_end and  buy_in_advance_request.billing_effective_date < days_after(current_date(),2) and buy_in_advance_request.duration > 3 and buy_in_advance_request.duration_unit_of_time="MONTH"

Retrieve 'Effective' Buy in Advance Requests that were rated and are expiring in the following 10 days.

buy_in_advance_request.life_cycle_state="EFFECTIVE" and buy_in_advance_request.billing_state="RATED"
 and buy_in_advance_request.expiration_date >=day_start and buy_in_advance_request.expiration_date < days_after(current_date(),11)

More Information on Using CRM Query Language can be found at Using CRM Query Language.