Product Concepts

Last Updated: 2021-05-19

Welcome to the Grouparoo Dictionary! This is the collection of terms we use throughout the Grouparoo application to help you sync customer data between your source(s) of truth and business applications.

Table of Contents


An App in Grouparoo represents a integration, or a connection to some service. Every Source and Destination requires an App. See this page for a full list of available integrations.

Application Database

The application database, sometimes referred to as the Grouparoo database, is the database created and used by the Grouparoo application. This is not to be confused with any database source that in which you store customer data.

Batch Generation

Some versions of the generate command support creating multiple config files from a single command. This is what we call Batch Generation.

Calculated Group

Calculated Groups are a type of Group that are always kept up to date for you by Grouparoo. As new Profiles are created, or the Profile Properties of existing Profiles are changed, Group membership will automatically be adjusted.

Columnar Source

A Columnar Source is a specific type of Source that imports data from a column-based mechanism, like a database. Sources of this type share most of their behavior in common.


Destinations are where you want Grouparoo Profiles and Groups to be sent. Often Destinations are customer marketing tools such as email marketing or push notification services, though databases and data warehouses can also function at Destinations.

When you set up a Destination in Grouparoo, you will choose which Groups as well as which Profile Properties you will send to each Destination. You will have control and visibility over what data gets sent to each Destination.

Grouparoo will keep the Profile and Group data in your Destinations up-to-date in real time.

See our Integrations page for an up-to-date list of our supported Destinations. We are always adding support for more Destinations. If you have a request, please let us know!


Filters are a series of rules used to filter data into some desired subset.


A Generator is an engine that builds config files for you, based on some input. Generators are accessed via the CLI's generate command. Generators use templates from Plugins to build the appropriate configuration files for you.

You can learn more about Generators by reading through the Code Config docs.


Groups are a collection of Profiles that you can define and filter. These filters (or rules) are built to be easy-to-understand by non-technical users.

Let's say we wanted to make a Group of high-value customers who recently abandoned the checkout process. Here is an example of the rules to define this group:

  • [Total Customer Value] [is greater than] [$50]
  • [Abandoned Cart] [in the last] [3 days]

With these rules, you have a Group consisting of every user who has purchased more than $50 and recently abandoned their cart. You can then synchronize that group in real-time to all of your Destinations to then communicate with them.

There are 2 types of groups: Calculated and Manual

High Watermark

A High Watermark is a value used for comparison during Runs that are scheduled. Grouparoo will only import items where the high watermark column is greater than the largest previously imported high watermark value. For example, let's say you use updated_at as your high watermark. Grouparoo will run an import and record the highest value from that column (presumably from the most recently updated record). The next time the import runs, Grouparoo will only consider records where updated_at is greater than the previous high watermark value. And it doesn't have to be a date, it just has to be comparable. Another example would be a numeric field, like version, in which the value is incremented when changes are made to the record in the Source database.

Manual Group

Manual Groups are a type of Group that only change when you add or remove Profiles.


When importing data from a Source, Grouparoo needs to know how to relate the data its importing to the Profiles already in Grouparoo. This is what we call a Mapping. It operates like a foreign key in a database.

Consider that you have a Property called email, while your Source has an attribute called emailAddress, which is a unique field in that Source. You could map emailAddress from your source to email in Grouparoo. This tells Grouparoo that when anything changes on the Source, it knows which profile to update.

Every Source needs a Mapping, as Grouparoo must know how to associate imported information.


The core Grouparoo application is the engine that drives syncing data from Sources to Destinations. The application relies on plugins to provide you with only the functionality you require to sync data between your preferred services.

Being that Grouparoo is a Node.js application, the plugins are available as JavaScript packages through NPM. The majority of plugins are open-source and available for free, though we do have also have paid plugins.

Learn more about existing plugins, or develop your own plugin.


Profiles represent individual people. For your specific company or organization, that may mean:

  • Leads
  • Customers
  • Users
  • Visitors to your site or app

Profile Property

Profile Properties are data associated with a profile. You can define Profile Properties based on data that exists in your data Sources.

Profile Properties are given a specific type, letting us know if they are a number, date, or string. Having a type helps Grouparoo know how to display this data and send it to Destinations.

Profile Properties can also be Unique or Not Unique. Defining Uniqueness is needed in order to create and merge Profiles from various sources without creating duplicate Profiles.

Common examples of Unique Profile Properties are:

  • Email Address
  • User ID

Common examples of Not Unique Profile Properties are:

  • First Name
  • Last Name
  • Date of Last Purchase


Properties define how a Profile Property gets pulled from a Source. Every Source might be structured in slightly different ways, so Grouparoo plugins make it easy for you to define Properties.

For example, you might define a Property called first_name which you are pulling from your product database via the @grouparoo/postgres plugin.

Query Source

A Query Source is an implementation of a Columnar Source that enables you to write custom queries to extract information from your database. This is a more flexible version when compared with a Table Source.


A Run is a series of imports and/or exports. Runs are triggered by actions in Grouparoo, such as creating a new Group. Runs can also be triggered by Schedules.


A Schedule defines some interval by which to process a Run. Though technically separate objects, Schedules are often used in conjunction with Sources.


Sources are the tools that Grouparoo will connect with to pull in customer data. A Source can be anything that contains customer data such as data warehouses, databases, and CRMs.

When you add a new Source, you will define how that Source connects with the Profiles that already exist in Grouparoo through a Unique Profile Property.

See our Integrations page for an up-to-date list of our supported Sources. We are always adding support for more Sources. If you have a request, please let us know!

Sync Mode

When creating a Grouparoo Destination, you will be asked to choose a Sync Mode. A Sync Mode tells the Grouparoo application how to create and delete Profiles on this destination. The types of Sync Modes are:

  • Sync: Add, update and remove profiles from the destination as needed.
  • Additive: Add new profiles and update those that already exist in the destination, but never remove anyone.
  • Enrich: Update profiles that already exist in the destination, enriching them with additional data and group membership information. No profiles are added or removed.

You can learn more about in our blog posts introducing Sync Modes and how to use Sync Modes

Table Source

A Query Source is an implementation of a Columnar Source that makes it easy to import data from a database by using aggregation methods to extract data from a column in your database. This is a more rigid version when compared with a Query Source, but often enables you to move faster when you either want to import data directly or perform minor operations or transformations of that data.