Cross-channel personalization

교차 채널 개인화

Reflect one preference change across email, push, and in-app touchpoints.

···
html
<div class="channels"><div class="pref">PREFERENCE: <b id="pref">TRAVEL</b></div><div class="cards"><div><small>EMAIL</small><strong>TRAVEL</strong></div><div><small>PUSH</small><strong>TRAVEL</strong></div><div><small>IN-APP</small><strong>TRAVEL</strong></div></div></div>
css
.channels{width:min(92%,640px);font:900 clamp(10px,max(1.6vmin,1vw),14px)/1.1 sans-serif}.pref{padding:clamp(9px,2vmin,18px);background:var(--fg);color:var(--bg);text-align:center}.pref b{color:var(--accent-2)}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(5px,1.5vmin,13px);margin-top:clamp(14px,4vmin,30px)}.cards div{min-width:0;border:2px solid var(--accent);padding:clamp(9px,2vmin,18px);transition:.5s}.cards div.flash{background:var(--accent);color:#fff}.cards small{display:block;opacity:.65}.cards strong{display:block;font-size:clamp(10px,max(2.5vmin,1vw),22px);margin-top:clamp(12px,3vmin,26px)}small{font-size:max(.833em,10px,1vw)}
js
let home=false;function show(){const value=home?'HOME':'TRAVEL';document.querySelector('#pref').textContent=value;document.querySelectorAll('.cards div').forEach((el,i)=>{el.querySelector('strong').textContent=value;el.classList.add('flash');setTimeout(()=>el.classList.remove('flash'),500+i*150)});home=!home}show();setInterval(show,2300);

Cross-channel personalization applies known customer context consistently across touchpoints. A 2026 engagement survey describes a gap between using personalization across channels and having the tools to coordinate it.

When the demo preference changes from travel to home, three channel cards update together. This avoids an email using an old preference after a customer has changed it elsewhere.

Channels may update at different speeds. Check data freshness and consent scope before sending with an old value.

When to use

Use it when channel recommendations conflict or duplicate messages appear.

Open as page ↗