Groups (Enterprise Edition)
Last Updated: 2021-10-13Once you have an App, Source, and Properties (start with an App if you don't have any), then you're ready to define your Groups.
Groups are where the magic happens in Grouparoo. (It's in the name, after all!) Groups are a segment or cohort of Records. They are useful in that you can use Groups to target a specific set of users to export to some Destination. You can have Calculated Groups and Manual Groups. See here to learn more about the core concepts in Grouparoo.
Adding Calculated Groups
Calculated Groups add and remove Records automatically based on Group Rules that you define. Each Rule has several options for logically determining if a Record belongs in the Group. Those options are listed below, followed by a few examples.
Rule Operation Options
Each Rule has an operator — a logical statement to filter records. A Record must match every Rule to be included in the Group.
Available operations depends on both the type of Property and the underlying Grouparoo database (SQLite vs. Postgres). See below for a list of rules. (If in doubt, choose Postgres.)
The following operators are available on boolean
properties:
exists
{"propertyId": "subscribed","op": "exists"}
notExists
{"propertyId": "subscribed","op": "notExists"}
eq
{"propertyId": "subscribed","op": "eq","match": "true"}
ne
{"propertyId": "subscribed","op": "ne","match": "true"}
YYYY-MM-DDThh:mm:ss.mmm+TZD ("2020-09-01T08:15:00+00:00") A date passed as YYYY-MM-DD will pass validation, but may result in less accurate Group results.
date
properties:exists
{"propertyId": "last_purchase_date","op": "exists"}
notExists
{"propertyId": "last_purchase_date","op": "notExists"}
eq
{"propertyId": "last_purchase_date","op": "eq","match": "2021-05-25T04:45:00.000+00:00"}
ne
{"propertyId": "last_purchase_date","op": "ne","match": "2021-05-25T04:45:00.000+00:00"}
gt
{"propertyId": "last_purchase_date","op": "lt","match": "2020-12-25T04:45:00.00+00:00"}
lt
{"propertyId": "last_purchase_date","op": "lt","match": "2021-05-25T09:30:00.000+00:00"}
gte
{"propertyId": "last_purchase_date","op": "gte","match": "2019-06-14T18:16:00.000+00:00"}
lte
{"propertyId": "last_purchase_date","op": "lte","match": "2020-12-25T04:45:00.000+00:00"}
relative_gt
{"propertyId": "last_purchase_date","op": "relative_gt","relativeMatchNumber": "60","relativeMatchUnit": "days"}
relative_lt
{"propertyId": "subscription_ends","op": "relative_lt","relativeMatchNumber": "30","relativeMatchUnit": "days"}
The following operators are available on email
properties:
exists
{"propertyId": "email","op": "exists"}
notExists
{"propertyId": "email","op": "notExists"}
eq
{"propertyId": "email","op": "eq","match": "hello@grouparoo.com"}
ne
{"propertyId": "email","op": "ne","match": "hello@grouparoo.com"}
like
{"propertyId": "email","op": "like","match": "%smith%"}
notLike
{"propertyId": "email","op": "notLike","match": "%smith%"}
startsWith
{"propertyId": "email","op": "startsWith","match": "test"}
endsWith
{"propertyId": "email","op": "endsWith","match": "grouparoo.com"}
substring
{"propertyId": "email","op": "substring","match": "grouparoo"}
iLike
{"propertyId": "email","op": "like","match": "%smith%"}
notILike
{"propertyId": "email","op": "notILike","match": "%smith%"}
The following operators are available on float
properties:
exists
{"propertyId": "ltv","op": "exists"}
notExists
{"propertyId": "ltv","op": "notExists"}
eq
{"propertyId": "ltv","op": "eq","match": "113932.97"}
ne
{"propertyId": "ltv","op": "ne","match": "113932.97"}
gt
{"propertyId": "ltv","op": "gt","match": "113932.97"}
lt
{"propertyId": "ltv","op": "lt","match": "113932.97"}
gte
{"propertyId": "ltv","op": "gte","match": "113932.97"}
lte
{"propertyId": "ltv","op": "lte","match": "113932.97"}
The following operators are available on integer
properties:
exists
{"propertyId": "visits","op": "notExists"}
notExists
{"propertyId": "visits","op": "notExists"}
eq
{"propertyId": "visits","op": "eq","match": "6"}
ne
{"propertyId": "visits","op": "ne","match": "6"}
gt
{"propertyId": "visits","op": "gt","match": "6"}
lt
{"propertyId": "visits","op": "ne","match": "6"}
gte
{"propertyId": "visits","op": "gte","match": "6"}
lte
{"propertyId": "visits","op": "lte","match": "6"}
The following operators are available on phoneNumber
properties:
exists
{"propertyId": "phone","op": "exists"}
notExists
{"propertyId": "phone","op": "notExists"}
eq
{"propertyId": "phone","op": "eq","match": "+1-555-555-5555"}
ne
{"propertyId": "phone","op": "ne","match": "+1-555-555-5555"}
like
{"propertyId": "phone","op": "like","match": "%780%"}
notLike
{"propertyId": "phone","op": "notLike","match": "%780%"}
startsWith
{"propertyId": "phone","op": "startsWith","match": "+1"}
endsWith
{"propertyId": "phone","op": "startsWith","match": "80"}
substring
{"propertyId": "phone","op": "startsWith","match": "80"}
iLike
{"propertyId": "phone","op": "notLike","match": "%780%"}
notILike
{"propertyId": "phone","op": "notLike","match": "%780%"}
The following operators are available on string
properties:
exists
{"propertyId": "lastName","op": "exists"}
notExists
{"propertyId": "lastName","op": "notExists"}
eq
{"propertyId": "lastName","op": "eq","match": "Ramirez"}
ne
{"propertyId": "lastName","op": "ne","match": "Ramirez"}
like
{"propertyId": "lastName","op": "like","match": "__m%"}
notLike
{"propertyId": "lastName","op": "notLike","match": "__m%"}
startsWith
{"propertyId": "lastName","op": "startsWith","match": "Mc"}
endsWith
{"propertyId": "lastName","op": "endsWith","match": "son"}
substring
{"propertyId": "lastName","op": "substring","match": "al"}
iLike
{"propertyId": "lastName","op": "iLike","match": "%al%"}
notILike
{"propertyId": "lastName","op": "iLike","match": "%al%"}
The following operators are available on url
properties:
exists
{"propertyId": "company_url","op": "exists"}
notExists
{"propertyId": "company_url","op": "notExists"}
eq
{"propertyId": "company_url","op": "eq","match": "https://www.grouparoo.com"}
ne
{"propertyId": "company_url","op": "ne","match": "https://www.grouparoo.com"}
like
{"propertyId": "company_url","op": "like","match": "%grouparoo.com"}
notLike
{"propertyId": "company_url","op": "like","match": "%grouparoo.com"}
startsWith
{"propertyId": "company_url","op": "startsWith","match": "https"}
endsWith
{"propertyId": "company_url","op": "startsWith","match": ".com"}
substring
{"propertyId": "company_url","op": "substring","match": "grouparoo"}
iLike
{"propertyId": "company_url","op": "substring","match": "%Grouparoo.com"}
notILike
{"propertyId": "company_url","op": "substring","match": "%Grouparoo.com"}
The following operators are available on boolean
properties:
exists
{"propertyId": "subscribed","op": "exists"}
notExists
{"propertyId": "subscribed","op": "notExists"}
eq
{"propertyId": "subscribed","op": "eq","match": "true"}
ne
{"propertyId": "subscribed","op": "ne","match": "true"}
YYYY-MM-DDThh:mm:ss.mmm+TZD ("2020-09-01T08:15:00+00:00") A date passed as YYYY-MM-DD will pass validation, but may result in less accurate Group results.
date
properties:exists
{"propertyId": "last_purchase_date","op": "exists"}
notExists
{"propertyId": "last_purchase_date","op": "notExists"}
eq
{"propertyId": "last_purchase_date","op": "eq","match": "2021-05-25T04:45:00.000+00:00"}
ne
{"propertyId": "last_purchase_date","op": "ne","match": "2021-05-25T04:45:00.000+00:00"}
gt
{"propertyId": "last_purchase_date","op": "lt","match": "2020-12-25T04:45:00.00+00:00"}
lt
{"propertyId": "last_purchase_date","op": "lt","match": "2021-05-25T09:30:00.000+00:00"}
gte
{"propertyId": "last_purchase_date","op": "gte","match": "2019-06-14T18:16:00.000+00:00"}
lte
{"propertyId": "last_purchase_date","op": "lte","match": "2020-12-25T04:45:00.000+00:00"}
relative_gt
{"propertyId": "last_purchase_date","op": "relative_gt","relativeMatchNumber": "60","relativeMatchUnit": "days"}
relative_lt
{"propertyId": "subscription_ends","op": "relative_lt","relativeMatchNumber": "30","relativeMatchUnit": "days"}
The following operators are available on email
properties:
exists
{"propertyId": "email","op": "exists"}
notExists
{"propertyId": "email","op": "notExists"}
eq
{"propertyId": "email","op": "eq","match": "hello@grouparoo.com"}
ne
{"propertyId": "email","op": "ne","match": "hello@grouparoo.com"}
like
{"propertyId": "email","op": "like","match": "%smith%"}
notLike
{"propertyId": "email","op": "notLike","match": "%smith%"}
startsWith
{"propertyId": "email","op": "startsWith","match": "test"}
endsWith
{"propertyId": "email","op": "endsWith","match": "grouparoo.com"}
substring
{"propertyId": "email","op": "substring","match": "grouparoo"}
The following operators are available on float
properties:
exists
{"propertyId": "ltv","op": "exists"}
notExists
{"propertyId": "ltv","op": "notExists"}
eq
{"propertyId": "ltv","op": "eq","match": "113932.97"}
ne
{"propertyId": "ltv","op": "ne","match": "113932.97"}
gt
{"propertyId": "ltv","op": "gt","match": "113932.97"}
lt
{"propertyId": "ltv","op": "lt","match": "113932.97"}
gte
{"propertyId": "ltv","op": "gte","match": "113932.97"}
lte
{"propertyId": "ltv","op": "lte","match": "113932.97"}
The following operators are available on integer
properties:
exists
{"propertyId": "visits","op": "notExists"}
notExists
{"propertyId": "visits","op": "notExists"}
eq
{"propertyId": "visits","op": "eq","match": "6"}
ne
{"propertyId": "visits","op": "ne","match": "6"}
gt
{"propertyId": "visits","op": "gt","match": "6"}
lt
{"propertyId": "visits","op": "ne","match": "6"}
gte
{"propertyId": "visits","op": "gte","match": "6"}
lte
{"propertyId": "visits","op": "lte","match": "6"}
The following operators are available on phoneNumber
properties:
exists
{"propertyId": "phone","op": "exists"}
notExists
{"propertyId": "phone","op": "notExists"}
eq
{"propertyId": "phone","op": "eq","match": "+1-555-555-5555"}
ne
{"propertyId": "phone","op": "ne","match": "+1-555-555-5555"}
like
{"propertyId": "phone","op": "like","match": "%780%"}
notLike
{"propertyId": "phone","op": "notLike","match": "%780%"}
startsWith
{"propertyId": "phone","op": "startsWith","match": "+1"}
endsWith
{"propertyId": "phone","op": "startsWith","match": "80"}
substring
{"propertyId": "phone","op": "startsWith","match": "80"}
The following operators are available on string
properties:
exists
{"propertyId": "lastName","op": "exists"}
notExists
{"propertyId": "lastName","op": "notExists"}
eq
{"propertyId": "lastName","op": "eq","match": "Ramirez"}
ne
{"propertyId": "lastName","op": "ne","match": "Ramirez"}
like
{"propertyId": "lastName","op": "like","match": "__m%"}
notLike
{"propertyId": "lastName","op": "notLike","match": "__m%"}
startsWith
{"propertyId": "lastName","op": "startsWith","match": "Mc"}
endsWith
{"propertyId": "lastName","op": "endsWith","match": "son"}
substring
{"propertyId": "lastName","op": "substring","match": "al"}
The following operators are available on url
properties:
exists
{"propertyId": "company_url","op": "exists"}
notExists
{"propertyId": "company_url","op": "notExists"}
eq
{"propertyId": "company_url","op": "eq","match": "https://www.grouparoo.com"}
ne
{"propertyId": "company_url","op": "ne","match": "https://www.grouparoo.com"}
like
{"propertyId": "company_url","op": "like","match": "%grouparoo.com"}
notLike
{"propertyId": "company_url","op": "like","match": "%grouparoo.com"}
startsWith
{"propertyId": "company_url","op": "startsWith","match": "https"}
endsWith
{"propertyId": "company_url","op": "startsWith","match": ".com"}
substring
{"propertyId": "company_url","op": "substring","match": "grouparoo"}
Examples
Here are a few different examples of Calculated Groups and their rules:
Example: Repeat Purchasers
Group Rules:
- Records who have purchased more than once
- Records with an email
Example: High-Value & Abandoned Cart Recently
Group Rules:
- Records who have a Life-time Value (LTV) of over 30
- Records who have recently added an item to their cart
- Records with an email
Example: High-Value Xhosa Speakers
Group Rules:
- Records with a language set to
xhosa
- Records who have a Life-time Value (LTV) of over 50
Adding Manual Groups
While a great deal of the value of Grouparoo comes from our Calculated Groups, Manual Groups are still valuable in certain circumstances. Manual Groups are Groups of records where you manually add or remove Records from the Group.
Next Steps
Once you've grouped your users, you're ready for the last step in the Grouparoo configuration journey, exporting Groups to Destinations.
Having Problems?
If you are having trouble, visit the list of common issues or open a Github issue to get support.