5 minutes
h1

Designing a truly cross‑device experience means treating the person as the unit of personalization—not the browser, device, or session. A common example is the onboarding modal or welcome popup: users are willing to see it once but seeing it multiple times across devices quickly becomes friction. This article explores this use case.

The use case

When a user logs in to Device A, the onboarding modal should show once; when the same user logs in on Device B, it should not appear again. In our current approach, we use Real-Time CDP (RTCDP) to manage this behavior across devices.RTCDP is the source of truth for the cross‑device “has seen modal” / frequency‑capping state. We define the rule at the person level (for example, “show the onboarding modal once per user across all devices”), and RTCDP evaluates it using its unified customer profile and identity graph. The resulting attribute or audience (for example, has_seen_onboarding_modal = true) is exposed to Adobe Target via the Adobe Experience Platform Edge Network. Target reads these RTCDP segments and profile attributes on each request, so suppression is near real time for edge—typically from a few seconds up to a couple of minutes. The exact latency depends on whether the audience is built using edge segments (evaluated on the edge with very low latency) or streaming segment or a combination of both, as well as on identity stitching. This ensures the modal is consistently suppressed once it has been seen on any device.

RTCDP‑centric cross‑device frequency capping with Target: Identity graph, Edge projection, and thirdPartyId coexistence

After introducing RTCDP‑based frequency capping, cross‑device identity is primarily managed in RTCDP, while Target can still use thirdPartyId (or other identifiers) to support experience delivery. RTCDP’s identity graph stitches together identifiers like ECID, CRM ID, login ID, and device ID into a unified profile, governed by merge policies (for example, authenticated over anonymous), and projects this to Edge profiles for same‑page / next‑hit personalization. On login, the application sends an identityMap with the login or customer ID as primary; RTCDP links Device A and Device B via that login/CRM ID and, once stitching and Edge projection complete (typically seconds to a few minutes), the “has seen modal” / popupViewed flag is computed once per person, not per device. When Target reads from RTCDP via the Adobe Target destination, it sees the same profile state on both devices.

In this model, RTCDP is the source of truth for person‑level frequency capping, and Target thirdPartyId can still be used where needed for cross‑device experience consistency and activation. It is not a requirement to remove thirdPartyId from Target for RTCDP‑based frequency capping to work; any issues observed with thirdPartyId and reporting are likely implementation‑specific, not a general constraint.

Implementing the modal using Web SDK

RTCDP as the brain, Target as the delivery engine

Profile scripts in Target are handy but limited: they live only in Target’s own profile store, are hard to reuse in other channels, can add latency at scale, and depend heavily on whatever IDs you pass directly into Target. The broader platform strategy is to shift this kind of logic to AEP/RTCDP as the single source of truth.

In practice, that means no longer computing “has seen modal” inside Target but instead defining it as a segment or attribute in RTCDP, then letting Target simply read that state at decision time. Events like logins and modal impressions are collected via AEP Web SDK / Edge, RTCDP turns them into a streaming segment or computed attribute answering, “Has this profile ever seen the modal?”, and that state is shared to Target through the RTCDP Target destination so it’s available in real time. RTCDP also becomes the place where identity is solved: it stitches ECID, login IDs, CRM IDs, and device IDs into a single profile, applies merge policies, and projects Edge profiles for same‑page or next‑hit personalization. When the user logs in, you send an identityMap along with their login ID as primary; RTCDP connects Device A and Device B under one person, computes “has seen modal” once per person, and Target simply sees the same flag on both devices.

What you gain by moving to RTCDP

By using RTCDP to power the “has seen modal” frequency‑capping logic (in addition to what you can do in Target), you unlock several additional advantages:

Target profile scripts still have valid use cases (for example, quick per‑session logic, Target‑only experiments, or when RTCDP isn’t available). For cross‑device, cross‑channel, identity‑dependent scenarios like this modal, RTCDP provides an additional, scalable option to centralize the person‑level “has seen modal” state and share it with Target, which then acts as the delivery engine. This RTCDP‑based approach is designed to co‑exist with standard Target identities such as thirdPartyId, especially when cross‑device personalization is involved, rather than replace them.