The Global Rollout That Broke the EU
A SaaS company runs a personalization activity on its pricing page that shows a 'Contact Sales' CTA to enterprise-looking visitors (company size attribute from its data layer) and a 'Start Free Trial' CTA to everyone else. The activity works in the US. In the EU, the CTA never changes - all visitors see 'Start Free Trial.' The data layer pushes company size on all pages, but the EU site is served from a separate domain (eu.example.com) that was recently added. The team uses a single at.js implementation across domains, and Target is configured with one property. The EU marketing lead reports that the enterprise segment is 35% of EU traffic and is being mis-served.
1. What is the most likely cause of the EU CTA not changing, and how would you confirm it?
Read the worked answer
Most likely the activity's audience or page-delivery rules are scoped to the US domain (or a specific URL pattern) and do not include eu.example.com. When a visitor does not match the audience, Target serves the default content - here the 'Start Free Trial' CTA - which looks like 'no personalization' rather than an error.
Confirm by:
- Audience rules. Inspect the activity's audience: is there a URL/domain condition limited to the US site, or a geo condition? If so, EU visitors fail the audience and get default content.
- Page delivery / mbox scope. Confirm the mbox or auto-target location fires on the EU domain. If the EU site uses a different template or a missing mbox, the offer never applies.
- Data layer timing. Verify the company-size attribute is available before the Target request fires on the EU site. If the EU implementation pushes the data layer after the Target call, the audience evaluates against a missing attribute.
- Property configuration. With a single property, confirm the EU domain is included in the property's domains; otherwise at.js may not initialize correctly for that domain.
- QA link. Use a QA/preview link with an EU visitor profile to force the enterprise audience and see whether the offer applies.
2. The team wants to fix this by adding eu.example.com to the activity audience. What else must be true for the personalization to work end-to-end, and what would you verify?
Read the worked answer
Adding the domain to the audience is necessary but not sufficient. Verify the full chain:
- Attribute availability and timing. The company-size attribute must be present in the data layer and pushed before the Target request on the EU site. If it arrives late, the audience evaluates as unknown and the visitor falls to default.
- Attribute mapping. Confirm the data layer key on the EU site maps to the same Target parameter/attribute name used in the audience. A renamed key (e.g.,
companySizevscompany_size) silently breaks the audience. - Value normalization. The enterprise audience likely matches specific values (e.g., 'enterprise' or a size range). Confirm EU values use the same casing/format; 'Enterprise' vs 'enterprise' can fail a case-sensitive match.
- Property/domain coverage. Ensure the EU domain is part of the property so at.js initializes and the activity can deliver.
- Consent and privacy. EU traffic may be subject to consent gating; if Target is only initialized after consent, confirm the attribute and the activity still fire for consenting visitors, and that non-consenting visitors correctly get default content.
- Test with real EU profiles. Use QA links and segment reporting by domain/geo to confirm the enterprise CTA actually renders for the intended EU segment before declaring the fix complete.