
When multiple campaigns are running within a single week, a customer may qualify for more than the desired number of messages. Without proper control, this leads to over-communication and a poor customer experience.

This use case describes how to orchestrate five weekly campaigns across three priority levels while enforcing a maximum of three messages per customer per week. The mechanism ensures that the highest-priority campaigns are always delivered first (as long as the weekly limit allows), and lower-priority campaigns only go out if the weekly contact limit has not yet been reached.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The example in this use case uses five campaigns and a limit of three messages per week, but both values are fully configurable. You can adjust the number of campaigns, priority levels, and the weekly cap to match your business needs.

This use case focuses on the **mobile push** channel, but the same logic and architecture can be applied to other communication channels such as email, SMS, or web push.

</div></div></div>


The key principles of this approach are:

- Each campaign has an assigned priority level (high, medium, or low).
- Each campaign has a specific scheduled send date and time within the week.
- The system runs cyclically (every hour) and checks whether the current moment matches a campaign's planned send time.
- Before sending, the system verifies how many messages the customer has already received and how many higher-priority campaigns the customer still qualifies for.
- Once the weekly limit is reached, all remaining campaigns are blocked for that customer.

This approach separates the scheduling logic (when a campaign should go out) from the priority logic (which campaigns are most important), and combines both with a hard weekly cap.

## Prerequisites
---

- Implement [tracking code](/docs/settings/tool/tracking_codes) on your website.
- Implement [Synerise SDK in your mobile app](/developers/mobile-sdk).
- Configure [mobile push](/docs/campaign/Mobile) as a communication channel.
- Define the criteria used to qualify customers for each campaign. These can be based on behavioral events, customer attributes, segmentation rules, or any combination of conditions available in Synerise. The first step of this process involves [creating segmentations](#create-individual-campaign-segmentations) that define the audience for each campaign.
- Create a mobile push template that will be used later in workflows.

## Process
---

In this use case, you will go through the following steps:

1. [Create individual campaign segmentations](#create-individual-campaign-segmentations) — one per campaign, defining who qualifies.
2. [Create expressions](#create-expressions) — for current timestamp comparison and counting higher-priority campaign eligibility.
3. [Create workflows](#create-workflows) — one per priority group, running cyclically and sending mobile pushes when conditions are met. These must be created before aggregates so that you have the diagram IDs needed in the next step.
4. [Create aggregates for counting sent pushes](#create-aggregates-for-counting-sent-pushes) — to track how many messages each customer has already received per priority level and in total.
5. [Create priority-level segmentations with split audience](#create-priority-level-segmentations-with-split-audience) — one per priority group, combining campaign eligibility, send-time matching, and contact-limit checks.

## Create individual campaign segmentations
---

Create five separate segmentations, one for each campaign planned for the week. Each segmentation defines the audience that qualifies for a given campaign. The conditions can be based on any criteria available in Synerise — behavioral events, customer attributes, transactional data, or other segmentation rules.

In this example, the five campaigns and their priority assignments are:

- **Campaign A** (high priority): customers who recently made a high-value purchase (for example, order total above 500) — targeting premium buyers with an exclusive loyalty offer
- **Campaign B** (high priority): customers who abandoned their cart in the last 7 days — a recovery campaign with a time-limited discount
- **Campaign C** (medium priority): customers who browsed a specific product category more than 3 times without purchasing — a nudge campaign with personalized recommendations
- **Campaign D** (medium priority): customers who haven't made a purchase in the last 30 days but were active on the website — a re-engagement campaign
- **Campaign E** (low priority): customers who signed up for the newsletter in the last 14 days — a welcome series follow-up

The priority labels used throughout this use case are: **high** (priority 1), **medium** (priority 2), and **low** (priority 3).


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The segmentation conditions and business scenarios presented here are only illustrative examples. In practice, they can be freely defined and adjusted based on user behavior, available data, and any additional parameters relevant to your setup. You can tailor these conditions to reflect your specific business logic, campaign goals, and communication strategy.

The number of values returned by expressions (for example, 0, 1, or 2 for a two-campaign priority level) is specific to this example and depends on how many campaigns you assign to each priority level in your setup.

</div></div></div>


### Create Campaign A segmentation

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name of the segmentation, for example `Campaign A - high priority`.
3. Click **Add condition**.
4. From the dropdown list, select the `transaction.charge` event.
5. Click the **+ where** button, from the **Choose parameter** dropdown menu, choose `$totalAmount`.
6. From the **Choose operator** dropdown, choose **More than**.
7. In the next field, type the value `500`.
8. Using the date picker in the lower-right corner, set the time range to **Last 30 days**. Confirm by clicking **Apply**.
9. Save the segmentation.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-segmentation-a.png" alt="Configuration of the Campaign A segmentation with the transaction.charge event and $totalAmount parameter" class="full">
<figcaption>Configuration of the Campaign A segmentation</figcaption>
</figure>

### Create Campaign B segmentation

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name of the segmentation, for example `Campaign B - high priority`.
3. Click **Add condition**.
4. Define the conditions that identify customers who qualify for this campaign (for example, customers who performed the `product.addToCart` event but did not complete a purchase within the last 7 days).
5. Using the date picker in the lower-right corner, set the appropriate time range. Confirm by clicking **Apply**.
6. Save the segmentation.


### Create Campaign C segmentation

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name of the segmentation, for example `Campaign C - medium priority`.
3. Click **Add condition**.
4. Define the conditions that identify customers who qualify for this campaign (for example, customers who visited a specific product category page more than 3 times without purchasing).
5. Using the date picker in the lower-right corner, set the appropriate time range. Confirm by clicking **Apply**.
6. Save the segmentation.


### Create Campaign D segmentation

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name of the segmentation, for example `Campaign D - medium priority`.
3. Click **Add condition**.
4. Define the conditions that identify customers who qualify for this campaign (for example, customers who were active on the website but haven't purchased in the last 30 days).
5. Using the date picker in the lower-right corner, set the appropriate time range. Confirm by clicking **Apply**.
6. Save the segmentation.

### Create Campaign E segmentation

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name of the segmentation, for example `Campaign E - low priority`.
3. Click **Add condition**.
4. Define the conditions that identify customers who qualify for this campaign (for example, customers who signed up for the newsletter in the last 14 days).
5. Using the date picker in the lower-right corner, set the appropriate time range. Confirm by clicking **Apply**.
6. Save the segmentation.


## Create expressions
---

Expressions are central to this use case. They provide real-time computed values used inside segmentation conditions. You will create the following expressions:

- **Current timestamp expression** — returns the current date and hour so the system can match it against each campaign's planned send time.
- **High priority campaign count expression** — counts how many high priority campaigns the customer qualifies for (used in medium priority segmentations).
- **Medium priority campaign count expression** — counts how many medium priority campaigns the customer qualifies for.
- **Combined high + medium priority campaign count expression** — sums the two above expressions (used in low priority segmentations).

### Create the current timestamp expression
---

This expression returns the current date and hour in the format `yyyy-mm-ddThh`, which allows the system to compare the current moment against each campaign's scheduled send time. The first 13 characters of the timestamp are used so that when the workflow runs every hour, it matches exactly the planned send hour.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Expressions > New expression**.
2. Enter the name, for example `Now (yyyy-mm-dd hh)`.
3. Set the expression type to **Attribute**.
4. In the **Formula definition** section, build the formula using the `Regexp` function.
5. Then add function `Now`.
6. Add the `Constant` pattern to extract the first 13 characters of the current timestamp, adding it as the value: `^.{13}`.
7. Save the expression.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-expression-now.png" alt="Configuration of the current timestamp expression with Regexp and Now functions" class="full">
<figcaption>Configuration of the current timestamp expression</figcaption>
</figure>


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The regular expression pattern `^.{13}` extracts the first 13 characters of the current timestamp, which corresponds to the date and hour portion (for example, `2026-04-30T08`). This expression is shared across all segmentation conditions and ensures that each segment (group within a segmentation) only returns customers at the exact planned hour of a campaign's send time. Every segmentation references this same expression, which means that it acts as an alternative schedule — the segmentation only becomes active when the current timestamp matches the planned send date and hour.

</div></div></div>


### Create the high priority campaign count expression
---

This expression calculates how many high priority campaigns the customer qualifies for. It checks whether the customer belongs to the Campaign A segmentation and the Campaign B segmentation, and sums the results. The output for this specific case is a number (0, 1, or 2) representing the potential number of high priority messages the customer may receive.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Expressions > New expression**.
2. Enter the name, for example `How many high priority campaigns user qualifies for`.
3. Set the expression type to **Attribute**.
4. Build the formula to check membership in the [Campaign A](#create-campaign-a-segmentation) and [Campaign B](#create-campaign-b-segmentation) segmentations and return the sum.
5. Save the expression.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-expression-prio1-count.png" alt="Configuration of the expression counting high priority campaign eligibility" class="full">
<figcaption>Configuration of the high priority campaign count expression</figcaption>
</figure>

### Create the medium priority campaign count expression
---

This expression calculates how many medium priority campaigns the customer qualifies for. It checks whether the customer belongs to the Campaign C segmentation and the Campaign D segmentation, and sums the results. The output for this specific case is a number (0, 1, or 2) representing the potential number of medium priority messages the customer may receive.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon">**Behavioral Data Hub > Expressions > New expression**.
2. Enter the name, for example `How many medium priority campaigns user qualifies for`.
3. Set the expression type to **Attribute**.
4. Build the formula to check membership in the [Campaign C](#create-campaign-c-segmentation) and [Campaign D](#create-campaign-d-segmentation) segmentations and return the sum. Build it in the same way as the [previous expression](#create-the-high-priority-campaign-count-expression), replacing the high priority segmentations with medium priority ones.
5. Save the expression.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-expression-prio2-count.png" alt="Configuration of the expression counting medium priority campaign eligibility" class="full">
<figcaption>Configuration of the medium priority campaign count expression</figcaption>
</figure>

### Create the combined high and medium priority campaign count expression
---

This expression calculates how many campaigns the customer qualifies for across both high and medium priority levels. It sums the results of the [high priority campaign count expression](#create-the-high-priority-campaign-count-expression) and the [medium priority campaign count expression](#create-the-medium-priority-campaign-count-expression). The output is used in low priority segmentations to determine the remaining contact slots.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Expressions > New expression**.
2. Enter the name, for example `How many high + medium priority campaigns user qualifies for`.
3. Set the expression type to **Attribute**.
4. Build the formula as a sum of the two previously created expressions: the high priority campaign count expression and the medium priority campaign count expression, as presented on the screen below.
5. Save the expression.

  <figure>
    <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-expression-prio12-count.png" alt="Configuration of the expression counting high + medium priority campaign eligibility" class="full">
    <figcaption>Configuration of the combined high + medium priority campaign count expression</figcaption>
    </figure>

## Create workflows
---

Create three workflows — one for each priority level. Each workflow uses the corresponding split audience segmentation (which you will create in a [later step](#create-priority-level-segmentations-with-split-audience)) and runs cyclically every hour. When the current hour matches a campaign's scheduled send time and all conditions are met, the mobile push is sent.


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

Workflows must be created **before** the [aggregates](#create-aggregates-for-counting-sent-pushes) because the aggregates need the diagram IDs of these workflows to correctly scope the push count. At this stage, create each workflow with its schedule and structure (Audience node, Send Mobile Push nodes, and End nodes). You can leave the split audience segmentation reference empty or use a placeholder — you will update it after creating the [priority-level segmentations with split audience](#create-priority-level-segmentations-with-split-audience) in a later step.

After saving each workflow, note the **diagram ID** from the workflow URL (the part after `/automation-diagram/`). You will need these IDs in the next step when configuring the aggregates.

</div></div></div>


### Create the workflow for high priority campaigns
---

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/automation-hub-icon.svg" alt="Automation Hub icon" class="icon"> **Automation Hub > Workflows > New workflow**.
2. Enter the name of the workflow, for example `Split audience - high priority`.

#### Define the Audience trigger node

1. Start the workflow with the **Audience** node. In the configuration:
    1. Set the **Action limit** to `1` times per workflow.
    2. In the **Schedule** section, select **Repeat runs**.
    3. Select the timezone, for example `Europe/Warsaw (Central European Standard Time) UTC+01:00`.
    4. Set the interval type to **Interval**.
    5. Set the interval to `1 Hour`.
    6. Set the **Begin at** date to the start of the campaign week.
    7. In the **Audience** section, select **Split audience**.
    8. Select the `Split audience - high priority` segmentation (you will create this segmentation in a [later step](#create-the-high-priority-split-audience-segmentation) — for now, you can leave this field empty or use a placeholder and update it later).
    9. Map **Segment A** to **Path A** (Campaign A).
    10. Map **Segment B** to **Path B** (Campaign B).
2. Click **Apply**.


#### Configure Path A (Campaign A)

1. On Path A (Segment A), add the **Send Mobile Push** node.
2. Configure the mobile push message content for Campaign A according to your business needs.
3. Add the **End** node after the Send Mobile Push node.

#### Configure Path B (Campaign B)

1. On Path B (Segment B), add the **Send Mobile Push** node.
2. Configure the mobile push message content for Campaign B.
3. Add the **End** node.

4. In the upper right corner, click **Save & Run**.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-workflow-prio1-full.png" alt="The complete high priority workflow with two paths for Campaign A and Campaign B" class="full">
<figcaption>The complete high priority workflow configuration</figcaption>
</figure>

### Create the workflow for medium priority campaigns
---

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/automation-hub-icon.svg" alt="Automation Hub icon" class="icon"> **Automation Hub > Workflows > New workflow**.
2. Enter the name, for example `Split audience - medium priority`.
3. Configure the **Audience** node with the same settings as the high priority workflow:
    - Action limit: `1`
    - Repeat runs at an interval of `1 Hour`
    - Begin at: the start of the campaign week
    - Split audience using the `Split audience - medium priority` segmentation (to be created in a [later step](#create-the-medium-priority-split-audience-segmentation))
    - Map Segment C → Path A, Segment D → Path B
4. On each path, add a **Send Mobile Push** node followed by an **End** node.
5. Click **Save & Run**.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-workflow-prio2-full.png" alt="The complete medium priority workflow with two paths for Campaign C and Campaign D" class="full">
<figcaption>The complete medium priority workflow configuration</figcaption>
</figure>

### Create the workflow for low priority campaigns
---

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/automation-hub-icon.svg" alt="Automation Hub icon" class="icon"> **Automation Hub > Workflows > New workflow**.
2. Enter the name, for example `Split audience - low priority`.
3. Configure the **Audience** node with the same settings:
    - Action limit: `1`
    - Repeat runs at an interval of `1 Hour`
    - Begin at: the start of the campaign week
    - Select the `Split audience - low priority` segmentation (to be created in a [later step](#create-the-low-priority-split-audience-segmentation))
4. Add a **Send Mobile Push** node followed by an **End** node.
5. Click **Save & Run**.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-workflow-prio3-audience.png" alt="The complete low priority workflow with one active path for Campaign E" class="full">
<figcaption>The complete low priority workflow configuration</figcaption>
</figure>


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The automation runs every hour and checks the segmentation conditions at each iteration. Since the `Now (yyyy-mm-dd hh)` expression is compared against the planned send timestamp, the segment will only return customers at the exact hour the campaign is scheduled. At all other hours, the segment will be empty and no messages will be sent.

</div></div></div>


## Create aggregates for counting sent pushes
---

To enforce the weekly contact limit, you need aggregates that count how many push notifications have already been sent to each customer. You will create three aggregates — one scoped to the high priority workflow, one scoped to the medium priority workflow, and one that counts all pushes sent across all campaign workflows.

Each aggregate is based on the `push.send` event and uses the `diagramId` parameter to scope the count to the relevant workflow. The `diagramId` is the unique identifier of a workflow and can be found in the URL when viewing the workflow in the Automation Hub (the part of the URL that comes after `/automation-diagram/`).


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

This step requires the diagram IDs of the workflows you created in the [previous step](#create-workflows). If you haven't noted them yet, open each workflow in the Automation Hub and copy the ID from the URL.

</div></div></div>


### Create the aggregate for high priority sent pushes
---

This aggregate counts how many push notifications were sent to a customer from the high priority workflow.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Live Aggregates > Create aggregate**.
2. As the aggregate type, select **Profile**.
3. Enter the name of the aggregate, for example `Number of sent pushes - high priority`.
4. Click **Analyze profiles by** and select **Count**.
5. From the **Choose event** dropdown list, select the `push.send` event.
6. Click the **+ where** button.
7. From the **Choose parameter** dropdown list, select **diagramId**.
8. From the **Choose operator** dropdown list, select **Equal**.
9. In the value field, enter the diagram ID of the high priority workflow (for example, `71526b66-51e1-47b8-9ecb-6cc61f821dec`). You can find this ID in the URL of the workflow in the Automation Hub.
10. Define the period to **Last 30 days**.
11. Save the aggregate.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-aggregate-push-prio1.png" alt="Configuration of the aggregate counting sent pushes for the high priority workflow" class="full">
<figcaption>Configuration of the aggregate counting sent pushes for the high priority workflow</figcaption>
</figure>


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The time range of **Last 30 days** is intentionally set broader than the actual campaign week to ensure coverage regardless of which day the aggregate is evaluated. Since the workflow and segmentations are designed to operate within a single week, the aggregate will in practice only count pushes sent during that week. A broader time range provides a safety margin without affecting the logic.

</div></div></div>


### Create the aggregate for medium priority sent pushes
---

This aggregate counts how many push notifications were sent to a customer from the medium priority workflow. The configuration is identical to the high priority aggregate, but uses the diagram ID of the medium priority workflow.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Live Aggregates > Create aggregate**.
2. As the aggregate type, select **Profile**.
3. Enter the name of the aggregate, for example `Number of sent pushes - medium priority`.
4. Click **Analyze profiles by** and select **Count**.
5. From the **Choose event** dropdown list, select the `push.send` event.
6. Click the **+ where** button.
7. From the **Choose parameter** dropdown list, select **diagramId**.
8. From the **Choose operator** dropdown list, select **Equal**.
9. In the value field, enter the diagram ID of the medium priority workflow.
10. Define the period to **Last 30 days**.
11. Save the aggregate.


### Create the aggregate for all sent pushes
---

This aggregate counts how many push notifications were sent to a customer across all campaign workflows combined. Unlike the per-priority aggregates, this one uses the **In array** operator to match against the diagram IDs of all three priority workflows at once.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/behavioral-data-hub-icon.svg" alt="Behavioral Data Hub icon" class="icon"> **Behavioral Data Hub > Live Aggregates > Create aggregate**.
2. As the aggregate type, select **Profile**.
3. Enter the name of the aggregate, for example `Number of sent pushes - all`.
4. Click **Analyze profiles by** and select **Count**.
5. From the **Choose event** dropdown list, select the `push.send` event.
6. Click the **+ where** button.
7. From the **Choose parameter** dropdown list, select **diagramId**.
8. From the **Choose operator** dropdown list, select **In array**.
9. In the value field, enter the diagram IDs of all three priority workflows (the high priority workflow ID, the medium priority workflow ID, and the low priority workflow ID).
10. Define the period to **Last 30 days**.
11. Save the aggregate.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-aggregate-push-all.png" alt="Configuration of the aggregate counting all sent pushes across campaign workflows" class="full">
<figcaption>Configuration of the aggregate counting all sent pushes across all campaign workflows</figcaption>
</figure>


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The `push.send` event is automatically generated by Synerise when a mobile push notification is sent through a workflow. The `diagramId` parameter identifies the specific workflow (diagram) that triggered the send.

</div></div></div>


## Create priority-level segmentations with split audience
---

Create three segmentations — one per priority level — that combine campaign eligibility, scheduled send-time matching, and weekly contact-limit enforcement. Each segmentation uses the **split audience** feature to create separate segments (groups within a segmentation) for each campaign within the priority level.


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

Within a single priority level, only **one campaign can be scheduled per hour**. The split audience mechanism processes segments sequentially — if two campaigns within the same priority are scheduled for the same hour, only the first segment will be processed. For example, if Campaign A and Campaign B are both high priority, Campaign A could be scheduled for 10:00 and Campaign B no earlier than 11:00.

</div></div></div>


In the examples below, all campaigns are planned within a single week (Monday through Friday). The specific dates used here are illustrative — adjust them to match your actual campaign week.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

Each split audience segmentation groups campaigns by priority level, not by campaign name. This means that the segments within each segmentation are labeled sequentially (Segment A, Segment B, etc.) and correspond to the campaigns assigned to that priority level. For example, in the high priority segmentation, Segment A corresponds to Campaign A and Segment B to Campaign B. In the medium priority segmentation, Segment A corresponds to Campaign C and Segment B to Campaign D. In the low priority segmentation, Segment A corresponds to Campaign E. The segment labels (A, B) are internal to each segmentation and reset for each priority level.

</div></div></div>


### Create the high priority split audience segmentation
---

This segmentation contains two segments — one for Campaign A and one for Campaign B. Since high priority is the highest level, these campaigns are sent as long as the scheduled time matches and the weekly limit has not been exceeded. No checks against higher-priority campaigns are needed.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name, for example `Split audience - high priority`.

#### Configure Segment A (Campaign A)

3. In the first segment, add the following conditions connected by the **AND** operator:
    1. **Condition A** — Has property: `Campaign A - high priority` segmentation **Is true**. This checks if the customer qualifies for Campaign A.
    2. **Condition B** — Has property: `Now (yyyy-mm-dd hh)` expression **Contain** the value representing Campaign A's planned send date and hour (for example, `2026-04-15T10`). This ensures the campaign only triggers at the exact scheduled hour.
    3. **Condition C** — Has property: `Number of sent pushes - high priority` aggregate **Less than** `3`. This enforces the weekly contact limit within the high priority workflow.
    4. **Condition D** — Has property: `Number of sent pushes - all` aggregate **Less than** `3`. This enforces the overall weekly contact limit.
4. Click **Apply**.

#### Configure Segment B (Campaign B)

5. Click **Add segment** and add the following conditions connected by the **AND** operator:
    1. **Condition A** — Has property: `Campaign B - high priority` segmentation **Is true**.
    2. **Condition B** — Has property: `Now (yyyy-mm-dd hh)` expression **Contain** the value representing Campaign B's planned send date and hour (for example, `2026-04-16T10`).
    3. **Condition C** — Has property: `Number of sent pushes - all` aggregate **Less than** `3`.
    4. **Condition D** — Has property: `Number of sent pushes - high priority` aggregate **Less than** `3`.
6. Save the segmentation.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-split-prio1-segmentA.png" alt="Configuration of segments in the high priority split audience segmentation" class="full">
<figcaption>Configuration of segments in the high priority split audience segmentation</figcaption>
</figure>


<div class="admonition admonition-important"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M12 8v4m0 4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

After saving this segmentation, go back to the [high priority workflow](#create-the-workflow-for-high-priority-campaigns) and update the Audience node to reference this segmentation. Do the same for the medium and low priority workflows after creating their respective segmentations.

</div></div></div>


### Create the medium priority split audience segmentation
---

This segmentation contains two segments — one for Campaign C and one for Campaign D. In addition to the send-time and contact-limit checks, each segment includes a condition that verifies how many high priority campaigns the customer qualifies for. This prevents medium priority campaigns from consuming contact slots that should be reserved for higher-priority ones.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name, for example `Split audience - medium priority`.

#### Configure Segment A (Campaign C)

3. In the first segment, add the following conditions connected by the **AND** operator:
    1. **Condition A** — Has property: `Campaign C - medium priority` segmentation **Is true**.
    2. **Condition B** — Has property: `Now (yyyy-mm-dd hh)` expression **Contain** the value representing Campaign C's planned send date and hour (for example, `2026-04-13T09`).
    3. **Condition C** — Has property: `Number of sent pushes - all` aggregate **Less than** `3`.
    4. **Condition D** — Has property: `How many high priority campaigns user qualifies for` expression **Less than** `3`. This ensures that the total number of potential high priority sends plus this send would not exceed the weekly limit.
    5. **Condition E** — Has property: `Number of sent pushes - high priority` aggregate **Less than** `3`.
4. Click **Apply**.

#### Configure Segment B (Campaign D)

5. Click **Add segment** and add the following conditions connected by the **AND** operator:
    1. **Condition A** — Has property: `Campaign D - medium priority` segmentation **Is true**.
    2. **Condition B** — Has property: `Now (yyyy-mm-dd hh)` expression **Contain** the value representing Campaign D's planned send date and hour (for example, `2026-04-13T14`).
    3. **Condition C** — Has property: `Number of sent pushes - all` aggregate **Less than** `3`.
    4. **Condition D** — Has property: `How many high priority campaigns user qualifies for` expression **Less than** `3`.
    5. **Condition E** — Has property: `Number of sent pushes - high priority` aggregate **Less than** `3`.
6. Save the segmentation.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-split-prio2-segmentB.png" alt="Configuration of segments in the medium priority split audience segmentation" class="full">
<figcaption>Configuration of segments in the medium priority split audience segmentation</figcaption>
</figure>

### Create the low priority split audience segmentation
---

This segmentation contains one segment for Campaign E. It includes the broadest set of checks — verifying the weekly limit and counting how many campaigns the customer qualifies for across both high and medium priority levels.

1. Go to <img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/icons/decision-hub-icon.svg" alt="Decision Hub icon" class="icon"> **Decision Hub > Segmentations > New segmentation**.
2. Enter the name, for example `Split audience - low priority`.

#### Configure Segment A (Campaign E)

3. In the first segment, add the following conditions connected by the **AND** operator:
    1. **Condition A** — Has property: `Campaign E - low priority` segmentation **Is true**.
    2. **Condition B** — Has property: `Now (yyyy-mm-dd hh)` expression **Contain** the value representing Campaign E's planned send date and hour (for example, `2026-04-14T10`).
    3. **Condition C** — Has property: `Number of sent pushes - all` aggregate **Less than** `3`.
    4. **Condition D** — Has property: `How many high + medium priority campaigns user qualifies for` expression **Less than** `3`. This ensures that the combined potential sends from higher priorities plus this send would not exceed the weekly limit.
4. Save the segmentation.

<figure>
<img src="/api/docs/image/54176ad07f146575310749eba44b7c2f42c1b327/use-cases/all-cases/_gfx/campaign-priority-split-prio3-segmentA.png" alt="Configuration of the segment in the low priority split audience segmentation" class="full">
<figcaption>Configuration of the segment in the low priority split audience segmentation</figcaption>
</figure>

## How the priority logic works in practice
---

Consider the following example scenario where high priority campaigns are scheduled **later** in the week than medium and low priority ones. This demonstrates how the slot reservation mechanism ensures that lower-priority campaigns do not consume contact slots that are reserved for higher-priority campaigns — regardless of chronological order.

- A customer qualifies for all five campaigns: Campaign A (high priority), Campaign B (high priority), Campaign C (medium priority), Campaign D (medium priority), and Campaign E (low priority).
- The weekly contact limit is 3 messages.
- Campaign C is scheduled for Monday at 09:00, Campaign D for Monday at 14:00, Campaign E for Tuesday at 10:00, Campaign A for Wednesday at 10:00, and Campaign B for Thursday at 10:00.

The system processes the campaigns as follows:

1. **Monday at 09:00 — Campaign C (medium priority)**. The medium priority workflow runs. The customer qualifies for Campaign C and the time matches. Before sending, the system checks the expressions: the customer qualifies for 2 high priority campaigns (A and B). This means 2 of the 3 weekly slots are reserved for high priority. Only 1 slot remains available for medium priority. Since no medium priority pushes have been sent yet, Campaign C is sent. Push count becomes 1.

2. **Monday at 14:00 — Campaign D (medium priority)**. The medium priority workflow runs again. The customer qualifies for Campaign D and the time matches. However, the system checks: the customer still qualifies for 2 high priority campaigns (A and B are not yet sent but are planned). Since 1 medium priority campaign was already sent and only 1 slot was available for this priority level (3 total minus 2 reserved for high), Campaign D is **blocked**.

3. **Tuesday at 10:00 — Campaign E (low priority)**. The low priority workflow runs. The customer qualifies for Campaign E and the time matches. The system checks how many campaigns the customer qualifies for across high and medium priority: 2 (high) + 2 (medium) = 4, but the weekly limit is 3. In practice, 1 push has already been sent and 2 slots are reserved for high priority. No remaining capacity exists for low priority. Campaign E is **blocked**.

4. **Wednesday at 10:00 — Campaign A (high priority)**. The high priority workflow runs. The customer qualifies for Campaign A, the time matches, and the overall push count is 1 (below 3). No additional reservation checks are needed at the highest priority level. Campaign A is sent. Push count becomes 2.

5. **Thursday at 10:00 — Campaign B (high priority)**. The high priority workflow runs again. The customer qualifies for Campaign B, the time matches, and the push count is 2 (below 3). Campaign B is sent. Push count becomes 3.

**Result:** The customer received 3 messages — Campaign C (medium), Campaign A (high), and Campaign B (high). Despite Campaigns A and B being scheduled later in the week, their slots were reserved from the beginning. Campaign D (medium) and Campaign E (low) were correctly blocked because the remaining weekly capacity was already allocated to higher-priority campaigns.

This mechanism ensures that high priority campaigns are always delivered as long as the weekly limit allows, medium priority campaigns are sent only when there is remaining capacity after accounting for higher-priority reservations, and low priority campaigns fill any leftover slots.


<div class="admonition admonition-note"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z" /></svg></div><div class="admonition-body"><div class="admonition-content">

Keep in mind that segmentations are evaluated dynamically. A customer's eligibility for a given campaign may change during the week — for example, if a customer performs an action that adds them to a new segmentation, or if their behavior causes them to leave a segmentation they were previously in. This means that the slot reservation calculations (based on how many higher-priority campaigns the customer qualifies for) reflect the state at the moment of evaluation, not a fixed snapshot from the beginning of the week.

</div></div></div>



<div class="admonition admonition-tip"><div class="admonition-icon"><svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke="currentColor" stroke-width="2.5"><path stroke-linecap="round" stroke-linejoin="round" d="M9.663 17h4.673M12 3v1m6.364 1.636l-.707.707M21 12h-1M4 12H3m3.343-5.657l-.707-.707m2.828 9.9a5 5 0 117.072 0l-.548.547A3.374 3.374 0 0014 18.469V19a2 2 0 11-4 0v-.531c0-.895-.356-1.754-.988-2.386l-.548-.547z" /></svg></div><div class="admonition-body"><div class="admonition-content">

The expressions that count potential higher-priority campaign eligibility effectively **reserve contact slots** for higher-priority campaigns. This means that regardless of how campaigns are distributed across the week, lower-priority campaigns will not consume slots that could be needed by higher-priority ones — even if the higher-priority campaigns are scheduled later in the week.

However, keep in mind that within a single priority level, if you have more campaigns than the weekly limit allows, only the first campaigns (in chronological order) will be sent. For example, if you assign 5 campaigns to high priority with a weekly limit of 3, only the first 3 scheduled campaigns will go out.

</div></div></div>


## Check the use case set up on the Synerise Demo workspace
---

You can check the configuration of each step directly in the Synerise Demo workspace:

**Individual campaign segmentations:**
- [Campaign A - high priority](https://app.synerise.com/analytics-v2/segmentations/70120506-a0f3-49bf-81b7-9741d5be3515)
- [Campaign B - high priority](https://app.synerise.com/analytics-v2/segmentations/32e043c4-1c03-443d-8e2b-3e5556e95027)
- [Campaign C - medium priority](https://app.synerise.com/analytics-v2/segmentations/962b7546-9ec9-45e3-955e-43e40c510a22)
- [Campaign D - medium priority](https://app.synerise.com/analytics-v2/segmentations/af0a9237-8352-4d6c-9dca-960894be7801)
- [Campaign E - low priority](https://app.synerise.com/analytics-v2/segmentations/2016e126-55d0-4f7d-a19d-76b433d9d824)

**Priority-level split audience segmentations:**
- [Split audience - high priority](https://app.synerise.com/analytics-v2/segmentations/cb7ecafa-64e5-4e98-b675-85094de41aba)
- [Split audience - medium priority](https://app.synerise.com/analytics-v2/segmentations/ad2871e1-5d93-4168-a45e-0d43b1f11d9d)
- [Split audience - low priority](https://app.synerise.com/analytics-v2/segmentations/7e46627b-ef8e-45bb-8674-f5f823824983)

**Aggregates:**
- [Number of sent pushes - high priority](https://app.synerise.com/analytics-v2/aggregates/df5bc4aa-971b-3a55-bd95-3c6c21adfc25)
- [Number of sent pushes - medium priority](https://app.synerise.com/analytics-v2/aggregates/0bb96bcd-1906-3603-b1aa-6f3891b7279c)
- [Number of sent pushes - all](https://app.synerise.com/analytics-v2/aggregates/1f9250a1-83e3-3ee2-8439-6d7b4846c7e8)

**Expressions:**
- [Now (yyyy-mm-dd hh)](https://app.synerise.com/analytics/expressions/363d0fc1-bf57-481e-ad02-7715fd7ba81c)
- [High priority campaign count](https://app.synerise.com/analytics/expressions/794299b1-8e4c-496c-94fa-4a188f970fcf)
- [Medium priority campaign count](https://app.synerise.com/analytics/expressions/971bb8bd-15ce-457b-b2e4-8647b745cfc9)
- [High + medium priority campaign count](https://app.synerise.com/analytics/expressions/3b79df31-920d-4977-96c8-592a2b3cc068)

**Workflows:**
- [Workflow for high priority](https://app.synerise.com/automations/workflows/automation-diagram/76e67c89-5300-4a9e-b371-df64edf274f4)
- [Workflow for medium priority](https://app.synerise.com/automations/workflows/automation-diagram/eafba479-ec37-47e7-9763-40efe1a5f767)
- [Workflow for low priority](https://app.synerise.com/automations/workflows/automation-diagram/84b6be35-4775-4ef1-a75c-20942d62635a)

If you’re our partner or client, you already have automatic access to the **Synerise Demo workspace (1590)**, where you can explore all the configured elements of this use case and copy them to your workspace.  

If you’re not a partner or client yet, we encourage you to fill out the contact [form](https://demo.synerise.com/request) to schedule a meeting with our representatives. They’ll be happy to show you how our demo works and discuss how you can apply this use case in your business.

## Read more
---

- [Segmentations](/docs/analytics/segmentations)
- [Expressions](/docs/analytics/expressions)
- [Aggregates](/docs/analytics/aggregates)
- [Automation Hub](/docs/automation)
- [Creating workflows](/docs/automation/creating-automation)
- [Mobile push campaigns](/docs/campaign/Mobile)
- [Branching logic in workflows](/docs/automation)
