Efficient event-based Engagement usage

This guide covers how to keep your implementation efficient on event-based pricing by minimizing unnecessary event processing and storage.

Bloomreach supports multiple pricing models. If you're not sure which one applies to your contract, see Which pricing model am I on?

  • On event-based pricing, monthly processed events (MPE) and maximum stored events (MES) are your commercial meters. This guide covers how to stay within those limits.

  • On profile-based pricing (introduced May 2026), billing is based on billable profiles and MUV rather than event volume. This guide doesn't apply—see Pricing and usage instead.

Key concepts

MPE

MPE is the total number of events processed into or within the platform in a calendar month—including events triggered when customers view items, start sessions, open emails, and interact with campaigns and channels. This includes both system events—predefined and available by default—and custom events tailored for your business.

📘

Note

If you send or import the same event multiple times, each occurrence counts toward MPE—even if deduplication later removes the duplicate.

Duplicated events

If you send or import the same event multiple times, each occurrence is treated as a new event and counts toward MPE. However, if there is a 1:1 duplication, deduplication takes place.

Duplication can occur when the same event is sent with different attributes multiple times. To avoid this, ensure only unique data is tracked or imported.

You can use event deduplication to clean up and prevent the same event from being stored twice. However, the event will still be considered processed and counted toward your MPE, even with deduplication.

MES

MES is the maximum number of events stored in your account at any point in time. It includes all active events that haven't expired or been deleted, and excludes events that have been moved to external storage, such as Engagement BigQuery (EBQ).

Different event attributes don't count as separate events, but events with the same name and different statuses do.

What generates events

Not all platform actions generate events. The following table shows which sources count toward your event volume.

SourceGenerates events?
Ad audiencesYes
API—retrieving events, customers, or catalogsNo
API—sending eventsYes
BigQueryYes
Customer attribute updatesNo
Email, SMS, MMS, push, WhatsApp, webhooksYes
ExportsNo
Imports—customers, catalogs, vouchersNo
Imports—eventsYes
PredictionsNo
RecommendationsYes, if shown or clicked
Web trackingYes, if the SDK is enabled for the specified events
Weblayers, in-app messages, experimentsYes

Check your tracking health

Before optimizing, check whether your event volumes reflect real user behavior. Go to Overview > Bloomreach usage to review event volume, MPE, channel dashboards, and data breakdowns by event and campaign.

Quick health checks

CheckHealthy sign
Banner shows vs. clicksShows higher than clicks
Campaign enqueued vs sentWithin ~5% of each other
checkout vs. view_itemLower than or similar to view_item
session_start vs. view_itemRoughly in line over time

Unhealthy patterns and likely causes

PatternLikely cause
Banner clicked > banner shownIncorrect tracking in weblayer JavaScript
Campaign enqueued ≠ campaign sentOutside ~5% margin—investigate campaign logic
cart_update > view_itemMultiple pings for cart_update
checkout > view_itemToo many checkout steps tracked—track only critical ones
session_start > 10× session_endsession_end not loading, or multiple pings on start
session_start > 5× view_itemview_item should be higher in a healthy implementation
view_category > 2× view_itemview_category firing on every scroll

For example, if view_item and view_category consistently exceed page_visit, that's a sign of misconfigured tracking—page visits should be driving item and category views, not the reverse. Similarly, session_start and session_end counts should track closely together; a large gap suggests session_end isn't firing correctly.

Reduce MPE

  • Track only events you actively use for journeys, segmentation, or analytics.

  • Avoid multiple events for the same action — for example, redundant heartbeat or scroll events.

  • Use properties on a single event type instead of creating many similar types.

  • Use DELTA imports to bring in only new or updated data. Sending or importing the same event multiple times counts toward MPE even if deduplication later removes the duplicate.

Keep ad events in check

Ad events should constitute at most 10–20% of your total MPE. If you send ad audiences daily to segments of customers rather than to all of them, check the conditions in your scenarios to ensure you don't send the same data repeatedly.
Before sending an ad audience to the relevant segments, check whether the customer received one the previous day and whether their qualifying condition has changed in the last 24 hours. See the Ads Best Practices Guide for more detail.

Reduce MES

For more details on your stored events, create a report in Analyses > Reports counting each event to understand your current storage footprint before optimizing.

  • Use EBQ: Move older events to EBQ. This frees up in-platform storage while keeping historical data available for analysis. By expiring events in the platform, you retain the data in EBQ without it counting toward your MES.
  • Set expirations: Set data expirations to automatically delete unnecessary events. Without expirations, MES grows continuously. Apply shorter retention to high-volume, low-value events like page_visit, and longer retention to high-value events like purchase and consent.
  • Ensure consistent tracking: Inconsistent tracking can cause unexpected storage growth. Use the retention reference table to check whether your event volumes are in line with expected patterns.
  • Delete obsolete data: Use the Data manager to delete events and properties you no longer need. This reduces MES but doesn't affect historical MPE.
  • Storage benchmarks:
    • page_visit: Keep below ~5% of MES. It's high volume and often low value, so it's a good candidate for short expiry.
    • campaign and banner events: Keep each below ~30% of MES. Expire old split tests, irrelevant statuses, and low-value banner actions like shows and closes.
🚧

Data deletion

Deleting data reduces MES only—it has no effect on your MPE count.

Event tracking and retention reference

EventMain useTrack?Recommended retention
bannerWeblayer efficiency, A/B tests, scenario triggersAlwaysSee below
campaignCampaign efficiency, engagement triggersAlwaysSee below
cart_updateAbandoned cart, recommendationsAlways1 month
checkoutAbandoned checkout, funnel analysisAdvanced use only — cart_update is usually enough1 month
consentRequired for all communicationAlwaysAlways
double_opt_inConsent campaigns, identificationAlways in the EU; recommended elsewhere1 month
first_sessionLifetime attributionAlwaysForever
page_visitQuality controlOnly when needed1 month or less
purchaseCommercial KPIs and journeysAlwaysForever
purchase_itemPost-purchase campaigns, recommendationsAlways13 months
search and search_resultsFunnel analysisAdvanced use only1 month
session_endAverage time on siteAlways1 month
session_startVisit frequency, campaign efficiency, ad attributionAlways13 months
view_categoryRecommendations, funnel analysisAdvanced use only — often replaceable by view_item1 month
view_itemAbandoned browse, recommendations, funnel analysisAlways3 months

Banner retention

StatusRecommended retention
Other banners—click3 months
Other banners—show/close1 month
Subscription banner—click6 months
Subscription banner—show/close1 month

Campaign retention

TypeRecommended retention
Ad communication1 week
Email—other statuses1 month
Email delivered/opened/clicked13 months
Email enqueued3 months
Other channels3 months
Split (A/B test)1 month

© Bloomreach, Inc. All rights reserved.