Organize your Audiences
To set up your Octolis account in the most efficient way possible, it’s important to carefully design the organization of your audiences. With a clear architecture designed, the setup will be quicker, and it’s gonna be easier to make it evolve.
An audience is a dataset combining several data sources, on which you could apply transformation rules (data prep, scoring, etc.).
For example, you could create audiences like:
Audiences can be built from your raw data sources, or from another audience.
You can create an audience with the no-code builder or in SQL.
Once an audience is created, you can join it with one or several other audiences. The main purpose is to be able to add computed fields based on the columns of another audience.
For example, I can join my “Contacts” and my “Orders” audiences. This allows me to create new columns for each contact based on “Orders” columns, for example, the count of orders, the sum of orders amount, the average of orders from a specific category, etc.
For now, you manage the link between audiences at each audience level. For example, in the audience “Contacts”, I can join it with “Orders” to compute the number of orders per contact. If I open then the audience “Orders”, there will be no “join” already defined. From the Orders audience, I can join it (again) with the audience “Contacts”, to add the customer name to each order for example.
Business entities could be Contacts, Orders, Products, Contracts, etc.
The idea is to have a “Master” audience for each business entity. If never you need to create several audiences Contacts, you should have one “Contacts Master” audience.
This principle has two implications.
Split information related to different entities in several audiences.
For example, you have a source file “Contacts” with columns for Company name, Company address. The best practice is to consider “Companies” as a business entity, and to create a separate audience “Companies”. By doing so, you will be able to create a create sync pipeline from the “Companies” audience, and compute columns like the number of contacts for each company.
Try not to create several audiences for the same business entity
You can connect different data sources to the same audience. For example, an audience “Contacts” could be fed at the same time by a Shopify connector, by a CSV file dropped every day in an FTP server, and by some API queries. Even if each data source has a different data model, you will be able to merge them into the same audience.
In practice, there are some situations that lead to having several audiences for the same business entity. For example, when you need some advanced data preparation for one source file, it may be easier to use a SQL audience. So you could have one SQL-based audience “Contacts - Source A”, in addition to a no code built audience “Contacts - Source B + C”. You will merge them into a “Master - Contacts” audience. We recommend you use the prefix “Master -” (or something similar) to identify easily the master audiences.
Use SQL builder + no code builder
As said just above, if you need advanced data preparation in SQL for one specific source file, it may be useful to create one or more SQL audiences for specific source files, then merge them.
To split information related to several business entities
It’s the case of the source file containing information related to contacts and companies. In this case, you will need to create several audiences. It could be done by creating several no-code audiences based on the same data source and just deleting some columns or using SQL audiences that split the file into several audiences.
To send a custom table to some destination
When you configure a sync pipeline toward a destination, you start from an audience to which you can apply some basic filters. There are often use cases for which you need some specific data preparation transformation on some audience. In this case, you will create an audience “on top” of the first one. For example, it could be an audience “Export - Contacts - For my ERP”, that is based on the “Master - Contacts” audience, on which you have applied some data prep to fit the requirements of the destination “My ERP”. Same logic as the “Master -” prefix, it could be useful to use the prefix “Export -” in the name of this type of audience.
To create an audience of scores
In the “No code” audience builder, you can add quite simple computed fields based on a joined audience. You can also add a SQL recipe but use only the columns of this audience. For advanced scores, you may need to create a SQL audience that will be able to use all the audiences. It happens often for the Contacts audience, we compute most of the aggregates (=scores) in a SQL audience “Contacts - Agg” which is joined to the “Master - Contacts” audience.
To create a data-logging audience of metrics
You could create an audience using metrics only. For example “Daily Customer stats”, an audience containing a line for each day with columns like “Nb customers”, “Nb active customers”, etc.
Let’s take the example of a retail company who have both an e-commerce website and a point of sale. This company is using the marketing CRM solution Splio as the main destination.
Macro level - Audiences organization
In this case, the main complexity comes from the fact that we need to merge Orders and Orders items to send them to the destination “Splio API”.
Octolis - Help Center - Architecture Retail 1
Data level - Audiences data models
Ideally, you should take the time to detail each audience data model, and the link between audiences before configuring anything. The more precise your vision of the target data model, the quicker the configuration will be. This job can be done in Excel or with a database design tool like drawsql.app or dbdiagram.io.
Help - Example archi 1 | DrawSQL
We suggest listing all the business entities by analyzing your data sources, the entities used, and also the targeted use cases.
To inspire you, here is the typical list of business entities for a e-commerce / retail business:
For each business entity, the idea is to define precisely all the data sources. By precisely, I mean that it is useful to anticipate how this data source will be imported.
For example, you could have 3 data sources for your “Contacts”:
For each data source, you may have some custom work for data preparation. The idea is first to define the data model for each business entity, and then to adjust each data source to this data model.
We suggest you start by listing the target columns for each business entity, and the expected format for each one. For example, I want a column “County”, with the format, is “ISO code 3 letters”.
Because some destination syncs will imply having specific audiences, it is worth listing the main outgoing flows you will need.
For each flow, you could define:
We suggest you start with a macro map that highlights
Once you have reviewed the first macro map, you can specify the data model of each audience in more detail, and also anticipate how you’re gonna link audiences between them.