{"templateId":"markdown","sharedDataIds":{"sidebar":"sidebar-sidebars.yaml"},"props":{"metadata":{"markdoc":{"tagList":["admonition"]},"redocly_category":"Products","product_name":"Real-time","type":"markdown"},"seo":{"title":"Lookup Catalog","description":"Learn how to use RT 2.0 Lookup Catalog to reference non-user-keyed business data — product catalogs, coupon definitions, sale schedules — in real-time personalization responses.","siteUrl":"https://docs.treasure.ai","lang":"en-US","jsonLd":{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.treasure.ai/","name":"Treasure AI","url":"https://www.treasure.ai/","logo":"https://www.treasure.ai/hubfs/assets/images/logos/primary-logo.svg"},{"@type":"WebSite","@id":"https://docs.treasure.ai/#website","name":"Treasure AI Documentation","url":"https://docs.treasure.ai/","inLanguage":["en","ja"],"publisher":{"@id":"https://www.treasure.ai/"}}]},"llmstxt":{"hide":false,"sections":[{"title":"Table of contents","includeFiles":["**/*"],"excludeFiles":[]}],"excludeFiles":[]}},"dynamicMarkdocComponents":[],"compilationErrors":[],"ast":{"$$mdtype":"Tag","name":"article","attributes":{},"children":[{"$$mdtype":"Tag","name":"Heading","attributes":{"level":1,"id":"lookup-catalog","__idx":0},"children":["Lookup Catalog"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup Catalog"]}," enables RT 2.0 Personalization to reference external business data — such as product catalogs, coupon definitions, and sale schedules — at the moment a personalization request is made. Unlike profile attributes that store per-user values, Lookup Catalog data is keyed by a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["non-user dimension"]}," such as ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," and is queried in real time from RT 2.0's internal storage."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"when-to-use-lookup-catalog","__idx":1},"children":["When to Use Lookup Catalog"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Use Lookup Catalog when the personalization response must include data that varies by product, SKU, coupon, or another non-user dimension:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Return a sale banner that contains the specific discount rate and end date for the product currently being viewed."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Return a coupon reminder only when the user has a coupon applicable to the product they just added to the cart."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Return product recommendation metadata keyed by the user's most recently viewed item."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If your use case requires only per-user attributes (name, tier, purchase history), use ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/customer-data-platform/real-time/real-time-attributes-overview"},"children":["Real-time Attributes"]}," instead."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"how-lookup-catalog-works","__idx":2},"children":["How Lookup Catalog Works"]},{"$$mdtype":"Tag","name":"Diagram","attributes":{"data-language":"mermaid","diagramType":"mermaid","diagramSource":"flowchart TD\n    A[(\"cdp_lookup_catalog\\ndatabase\")] -->|Treasure Workflow\\nscheduled upload| B[(\"RT 2.0\\nInternal Storage\")]\n    B -->|Queried on each\\np13n API call| C[Personalization Response]\n    C --> D[Client / SDK]\n","diagramHtml":"<svg id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 267.375px;\" viewBox=\"0 0 267.375 577.1259765625\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .error-icon{fill:#552222;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .error-text{fill:#552222;stroke:#552222;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-thickness-normal{stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-thickness-thick{stroke-width:3.5px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-pattern-solid{stroke-dasharray:0;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-pattern-dashed{stroke-dasharray:3;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edge-pattern-dotted{stroke-dasharray:2;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .marker{fill:#333333;stroke:#333333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .marker.cross{stroke:#333333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f p{margin:0;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .label{font-family:\"Redocly Mermaid Sans\",sans-serif;color:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster-label text{fill:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster-label span{color:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster-label span p{background-color:transparent;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .label text,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f span{fill:#333;color:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node rect,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node circle,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node ellipse,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node polygon,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .rough-node .label text,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node .label text,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .image-shape .label,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .icon-shape .label{text-anchor:middle;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .rough-node .label,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node .label,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .image-shape .label,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .icon-shape .label{text-align:center;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node.clickable{cursor:pointer;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .arrowheadPath{fill:#333333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edgePath .path{stroke:#333333;stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .flowchart-link{stroke:#333333;fill:none;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster text{fill:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .cluster span{color:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f rect.text{fill:none;stroke-width:0;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .icon-shape,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .icon-shape p,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .icon-shape .label rect,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f .node .neo-node{stroke:#9370DB;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node rect,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].cluster rect,#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node polygon{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node path{stroke:#9370DB;stroke-width:1px;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node .outer-path{filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node .neo-line path{stroke:#9370DB;filter:none;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node circle{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].icon-shape .icon{fill:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f [data-look=\"neo\"].icon-shape .icon-neo path{stroke:#9370DB;filter:drop-shadow(1px 2px 2px rgba(185, 185, 185, 1));}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M133.688,113.279L133.688,121.446C133.688,129.613,133.688,145.946,133.688,161.613C133.688,177.279,133.688,192.279,133.688,199.779L133.688,207.279\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjExMy4yNzkyNzM5ODY4MTY0fSx7IngiOjEzMy42ODc1LCJ5IjoxNjIuMjc5MjczOTg2ODE2NH0seyJ4IjoxMzMuNjg3NSwieSI6MjExLjI3OTI3Mzk4NjgxNjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointEnd)\"></path><path d=\"M133.688,313.126L133.688,321.293C133.688,329.459,133.688,345.793,133.688,361.459C133.688,377.126,133.688,392.126,133.688,399.626L133.688,407.126\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjMxMy4xMjU5ODQxOTE4OTQ1M30seyJ4IjoxMzMuNjg3NSwieSI6MzYyLjEyNTk4NDE5MTg5NDUzfSx7IngiOjEzMy42ODc1LCJ5Ijo0MTEuMTI1OTg0MTkxODk0NTN9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointEnd)\"></path><path d=\"M133.688,465.126L133.688,469.293C133.688,473.459,133.688,481.793,133.688,489.459C133.688,497.126,133.688,504.126,133.688,507.626L133.688,511.126\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-L_C_D_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_D_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjQ2NS4xMjU5ODQxOTE4OTQ1M30seyJ4IjoxMzMuNjg3NSwieSI6NDkwLjEyNTk4NDE5MTg5NDUzfSx7IngiOjEzMy42ODc1LCJ5Ijo1MTUuMTI1OTg0MTkxODk0NX1d\" data-look=\"classic\" marker-end=\"url(#diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(133.6875, 162.2792739868164)\"><g class=\"label\" data-id=\"L_A_B_0\" transform=\"translate(-69.640625, -24)\"><foreignObject width=\"139.28125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Treasure Workflow<br>scheduled upload</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(133.6875, 362.12598419189453)\"><g class=\"label\" data-id=\"L_B_C_0\" transform=\"translate(-61.8671875, -24)\"><foreignObject width=\"123.734375\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Queried on each<br>p13n API call</p></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_C_D_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-flowchart-A-0\" data-look=\"classic\" transform=\"translate(133.6875, 60.6396369934082)\"><path d=\"M0,14.093090472814527 a80.7578125,14.093090472814527 0,0,0 161.515625,0 a80.7578125,14.093090472814527 0,0,0 -161.515625,0 l0,77.09309047281452 a80.7578125,14.093090472814527 0,0,0 161.515625,0 l0,-77.09309047281452\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-80.7578125, -52.63963570922179)\"></path><g class=\"label\" style=\"\" transform=\"translate(-73.2578125, -14)\"><rect></rect><foreignObject width=\"146.515625\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>cdp_lookup_catalog<br>database</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-flowchart-B-1\" data-look=\"classic\" transform=\"translate(133.6875, 262.20262908935547)\"><path d=\"M0,12.948903350204871 a67.15625,12.948903350204871 0,0,0 134.3125,0 a67.15625,12.948903350204871 0,0,0 -134.3125,0 l0,75.94890335020487 a67.15625,12.948903350204871 0,0,0 134.3125,0 l0,-75.94890335020487\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-67.15625, -50.92335502530731)\"></path><g class=\"label\" style=\"\" transform=\"translate(-59.65625, -14)\"><rect></rect><foreignObject width=\"119.3125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>RT 2.0<br>Internal Storage</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-flowchart-C-3\" data-look=\"classic\" transform=\"translate(133.6875, 438.12598419189453)\"><rect class=\"basic label-container\" style=\"\" x=\"-125.6875\" y=\"-27\" width=\"251.375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-95.6875, -12)\"><rect></rect><foreignObject width=\"191.375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Personalization Response</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-flowchart-D-5\" data-look=\"classic\" transform=\"translate(133.6875, 542.1259841918945)\"><rect class=\"basic label-container\" style=\"\" x=\"-73.546875\" y=\"-27\" width=\"147.09375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-43.546875, -12)\"><rect></rect><foreignObject width=\"87.09375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Client / SDK</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs><defs><filter id=\"diagram-6b0d722e52b9c47ed73af7d4e68af3cdc2ba78f037dfbfe8d0461338cccc409f-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#000000\"></feDropShadow></filter></defs></svg>","diagramHtmlDark":"<svg id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6\" width=\"100%\" xmlns=\"http://www.w3.org/2000/svg\" class=\"flowchart\" style=\"max-width: 267.375px;\" viewBox=\"0 0 267.375 577.1259765625\" role=\"graphics-document document\" aria-roledescription=\"flowchart-v2\"><style>#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;fill:#ccc;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .error-icon{fill:#a44141;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .error-text{fill:#ddd;stroke:#ddd;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-thickness-normal{stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-thickness-thick{stroke-width:3.5px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-pattern-solid{stroke-dasharray:0;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-thickness-invisible{stroke-width:0;fill:none;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-pattern-dashed{stroke-dasharray:3;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edge-pattern-dotted{stroke-dasharray:2;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .marker{fill:lightgrey;stroke:lightgrey;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .marker.cross{stroke:lightgrey;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 svg{font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:16px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 p{margin:0;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .label{font-family:\"Redocly Mermaid Sans\",sans-serif;color:#ccc;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster-label text{fill:#F9FFFE;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster-label span{color:#F9FFFE;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster-label span p{background-color:transparent;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .label text,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 span{fill:#ccc;color:#ccc;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node rect,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node circle,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node ellipse,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node polygon,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node path{fill:#1f2020;stroke:#ccc;stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .rough-node .label text,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node .label text,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .image-shape .label,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .icon-shape .label{text-anchor:middle;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .rough-node .label,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node .label,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .image-shape .label,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .icon-shape .label{text-align:center;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node.clickable{cursor:pointer;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .root .anchor path{fill:lightgrey!important;stroke-width:0;stroke:lightgrey;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .arrowheadPath{fill:lightgrey;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edgePath .path{stroke:lightgrey;stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .flowchart-link{stroke:lightgrey;fill:none;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edgeLabel{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edgeLabel p{background-color:hsl(0, 0%, 34.4117647059%);}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .edgeLabel rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .labelBkg{background-color:rgba(87.75, 87.75, 87.75, 0.5);}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster rect{fill:hsl(180, 1.5873015873%, 28.3529411765%);stroke:rgba(255, 255, 255, 0.25);stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster text{fill:#F9FFFE;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .cluster span{color:#F9FFFE;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:\"Redocly Mermaid Sans\",sans-serif;font-size:12px;background:hsl(20, 1.5873015873%, 12.3529411765%);border:1px solid rgba(255, 255, 255, 0.25);border-radius:2px;pointer-events:none;z-index:100;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#ccc;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 rect.text{fill:none;stroke-width:0;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .icon-shape,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .image-shape{background-color:hsl(0, 0%, 34.4117647059%);text-align:center;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .icon-shape p,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .image-shape p{background-color:hsl(0, 0%, 34.4117647059%);padding:2px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .icon-shape .label rect,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .image-shape .label rect{opacity:0.5;background-color:hsl(0, 0%, 34.4117647059%);fill:hsl(0, 0%, 34.4117647059%);}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 .node .neo-node{stroke:#ccc;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node rect,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].cluster rect,#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node polygon{stroke:url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node path{stroke:url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient);stroke-width:1px;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node .neo-line path{stroke:#ccc;filter:none;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node circle{stroke:url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].node circle .state-start{fill:#000000;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].icon-shape .icon{fill:url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 [data-look=\"neo\"].icon-shape .icon-neo path{stroke:url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6 :root{--mermaid-font-family:\"Redocly Mermaid Sans\",sans-serif;}</style><g><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 0 L 10 5 L 0 10 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"4.5\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"8\" markerHeight=\"8\" orient=\"auto\"><path d=\"M 0 5 L 10 10 L 10 0 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"11.5\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"10.5\" markerHeight=\"14\" orient=\"auto\"><path d=\"M 0 0 L 11.5 7 L 0 14 z\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 11.5 14\" refX=\"1\" refY=\"7\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11.5\" markerHeight=\"14\" orient=\"auto\"><polygon points=\"0,7 11.5,14 11.5,0\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></polygon></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-circleEnd\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"11\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-circleStart\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-1\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 1; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-circleEnd-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refY=\"5\" refX=\"12.25\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-circleStart-margin\" class=\"marker flowchart-v2\" viewBox=\"0 0 10 10\" refX=\"-2\" refY=\"5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"14\" markerHeight=\"14\" orient=\"auto\"><circle cx=\"5\" cy=\"5\" r=\"5\" class=\"arrowMarkerPath\" style=\"stroke-width: 0; stroke-dasharray: 1, 0;\"></circle></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-crossEnd\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"12\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-crossStart\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 11 11\" refX=\"-1\" refY=\"5.2\" markerUnits=\"userSpaceOnUse\" markerWidth=\"11\" markerHeight=\"11\" orient=\"auto\"><path d=\"M 1,1 l 9,9 M 10,1 l -9,9\" class=\"arrowMarkerPath\" style=\"stroke-width: 2; stroke-dasharray: 1, 0;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-crossEnd-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"17.7\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5;\"></path></marker><marker id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-crossStart-margin\" class=\"marker cross flowchart-v2\" viewBox=\"0 0 15 15\" refX=\"-3.5\" refY=\"7.5\" markerUnits=\"userSpaceOnUse\" markerWidth=\"12\" markerHeight=\"12\" orient=\"auto\"><path d=\"M 1,1 L 14,14 M 1,14 L 14,1\" class=\"arrowMarkerPath\" style=\"stroke-width: 2.5; stroke-dasharray: 1, 0;\"></path></marker><g class=\"root\"><g class=\"clusters\"></g><g class=\"edgePaths\"><path d=\"M133.688,113.279L133.688,121.446C133.688,129.613,133.688,145.946,133.688,161.613C133.688,177.279,133.688,192.279,133.688,199.779L133.688,207.279\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-L_A_B_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_A_B_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjExMy4yNzkyNzM5ODY4MTY0fSx7IngiOjEzMy42ODc1LCJ5IjoxNjIuMjc5MjczOTg2ODE2NH0seyJ4IjoxMzMuNjg3NSwieSI6MjExLjI3OTI3Mzk4NjgxNjR9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointEnd)\"></path><path d=\"M133.688,313.126L133.688,321.293C133.688,329.459,133.688,345.793,133.688,361.459C133.688,377.126,133.688,392.126,133.688,399.626L133.688,407.126\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-L_B_C_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_B_C_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjMxMy4xMjU5ODQxOTE4OTQ1M30seyJ4IjoxMzMuNjg3NSwieSI6MzYyLjEyNTk4NDE5MTg5NDUzfSx7IngiOjEzMy42ODc1LCJ5Ijo0MTEuMTI1OTg0MTkxODk0NTN9XQ==\" data-look=\"classic\" marker-end=\"url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointEnd)\"></path><path d=\"M133.688,465.126L133.688,469.293C133.688,473.459,133.688,481.793,133.688,489.459C133.688,497.126,133.688,504.126,133.688,507.626L133.688,511.126\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-L_C_D_0\" class=\"edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link\" style=\";\" data-edge=\"true\" data-et=\"edge\" data-id=\"L_C_D_0\" data-points=\"W3sieCI6MTMzLjY4NzUsInkiOjQ2NS4xMjU5ODQxOTE4OTQ1M30seyJ4IjoxMzMuNjg3NSwieSI6NDkwLjEyNTk4NDE5MTg5NDUzfSx7IngiOjEzMy42ODc1LCJ5Ijo1MTUuMTI1OTg0MTkxODk0NX1d\" data-look=\"classic\" marker-end=\"url(#diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6_flowchart-v2-pointEnd)\"></path></g><g class=\"edgeLabels\"><g class=\"edgeLabel\" transform=\"translate(133.6875, 162.2792739868164)\"><g class=\"label\" data-id=\"L_A_B_0\" transform=\"translate(-69.640625, -24)\"><foreignObject width=\"139.28125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Treasure Workflow<br>scheduled upload</p></span></div></foreignObject></g></g><g class=\"edgeLabel\" transform=\"translate(133.6875, 362.12598419189453)\"><g class=\"label\" data-id=\"L_B_C_0\" transform=\"translate(-61.8671875, -24)\"><foreignObject width=\"123.734375\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"><p>Queried on each<br>p13n API call</p></span></div></foreignObject></g></g><g class=\"edgeLabel\"><g class=\"label\" data-id=\"L_C_D_0\" transform=\"translate(0, 0)\"><foreignObject width=\"0\" height=\"0\"><div xmlns=\"http://www.w3.org/1999/xhtml\" class=\"labelBkg\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"edgeLabel\"></span></div></foreignObject></g></g></g><g class=\"nodes\"><g class=\"node default\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-flowchart-A-0\" data-look=\"classic\" transform=\"translate(133.6875, 60.6396369934082)\"><path d=\"M0,14.093090472814527 a80.7578125,14.093090472814527 0,0,0 161.515625,0 a80.7578125,14.093090472814527 0,0,0 -161.515625,0 l0,77.09309047281452 a80.7578125,14.093090472814527 0,0,0 161.515625,0 l0,-77.09309047281452\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-80.7578125, -52.63963570922179)\"></path><g class=\"label\" style=\"\" transform=\"translate(-73.2578125, -14)\"><rect></rect><foreignObject width=\"146.515625\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>cdp_lookup_catalog<br>database</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-flowchart-B-1\" data-look=\"classic\" transform=\"translate(133.6875, 262.20262908935547)\"><path d=\"M0,12.948903350204871 a67.15625,12.948903350204871 0,0,0 134.3125,0 a67.15625,12.948903350204871 0,0,0 -134.3125,0 l0,75.94890335020487 a67.15625,12.948903350204871 0,0,0 134.3125,0 l0,-75.94890335020487\" class=\"basic label-container outer-path\" style=\"\" transform=\"translate(-67.15625, -50.92335502530731)\"></path><g class=\"label\" style=\"\" transform=\"translate(-59.65625, -14)\"><rect></rect><foreignObject width=\"119.3125\" height=\"48\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>RT 2.0<br>Internal Storage</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-flowchart-C-3\" data-look=\"classic\" transform=\"translate(133.6875, 438.12598419189453)\"><rect class=\"basic label-container\" style=\"\" x=\"-125.6875\" y=\"-27\" width=\"251.375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-95.6875, -12)\"><rect></rect><foreignObject width=\"191.375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Personalization Response</p></span></div></foreignObject></g></g><g class=\"node default\" id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-flowchart-D-5\" data-look=\"classic\" transform=\"translate(133.6875, 542.1259841918945)\"><rect class=\"basic label-container\" style=\"\" x=\"-73.546875\" y=\"-27\" width=\"147.09375\" height=\"54\"></rect><g class=\"label\" style=\"\" transform=\"translate(-43.546875, -12)\"><rect></rect><foreignObject width=\"87.09375\" height=\"24\"><div xmlns=\"http://www.w3.org/1999/xhtml\" style=\"display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;\"><span class=\"nodeLabel\"><p>Client / SDK</p></span></div></foreignObject></g></g></g></g></g><defs><filter id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-drop-shadow\" height=\"130%\" width=\"130%\"><feDropShadow dx=\"4\" dy=\"4\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><defs><filter id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-drop-shadow-small\" height=\"150%\" width=\"150%\"><feDropShadow dx=\"2\" dy=\"2\" stdDeviation=\"0\" flood-opacity=\"0.06\" flood-color=\"#FFFFFF\"></feDropShadow></filter></defs><linearGradient id=\"diagram-92239e180bdea0970a7364fb6eaeed899c7d88adb8011ed578c4949e44a240a6-gradient\" gradientUnits=\"objectBoundingBox\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\"><stop offset=\"0%\" stop-color=\"#cccccc\" stop-opacity=\"1\"></stop><stop offset=\"100%\" stop-color=\"hsl(180, 0%, 18.3529411765%)\" stop-opacity=\"1\"></stop></linearGradient></svg>"},"children":["flowchart TD\n    A[(\"cdp_lookup_catalog\\ndatabase\")] -->|Treasure Workflow\\nscheduled upload| B[(\"RT 2.0\\nInternal Storage\")]\n    B -->|Queried on each\\np13n API call| C[Personalization Response]\n    C --> D[Client / SDK]\n"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["A data engineer prepares lookup tables in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]}," database in Data Workbench and runs a Treasure Workflow sync workflow to push the data to RT 2.0's internal storage."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In Audience Studio, a Lookup Catalog Attribute is created for the parent segment, linking the catalog table to a runtime lookup key (an RT attribute value)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["When a personalization request arrives, RT 2.0 queries the matching row using the runtime key value and returns the column values as part of the offer payload."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The client renders the returned values — for example, the TD Web SDK renders Liquid-resolved HTML into a DOM zone or popup."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-1--prepare-lookup-catalog-data","__idx":3},"children":["Step 1 — Prepare Lookup Catalog Data"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A data engineer creates and maintains lookup tables in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]}," database in Data Workbench."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"database-and-table-conventions","__idx":4},"children":["Database and Table Conventions"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The database is typically named ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]},". Any Plazma database can be used, but this name is the standard convention."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["The primary key is the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["first non-",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]}," column"]}," in the table — if the table's first column happens to be named ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]},", the second column is used as the primary key instead. The primary key column must be unique, non-null, and of type ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Additional columns can contain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["number"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["boolean"]},", or ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["array"]}," values (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<string>"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<int>"]},", etc.). Arrays of arrays (nested arrays) are not supported — see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"#limitations"},"children":["Limitations"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Column names in Lookup Catalog Attribute configuration use the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Plazma column name"]}," (not ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["queryAs"]}," alias)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Data must be ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["deduplicated and normalized"]}," before upload — the workflow does not deduplicate."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"NULL key values cause upload failure"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Rows where the primary key column is ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NULL"]}," or empty will cause the sync workflow to fail with a 400 error. Ensure all rows have a valid, non-null key value before uploading."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-product-sale-table","__idx":5},"children":["Example: Product Sale Table"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A table ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limited_time_sale"]}," keyed by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]},":"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"product_id"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["product_id"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"discount_rate"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["discount_rate"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"sale_end"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["sale_end"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"banner_html"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["banner_html"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKU-12345"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["20"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2026-07-31 23:59"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<div class='promo'>20% OFF — ends July 31</div>"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKU-67890"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["15"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["2026-08-15 23:59"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<div class='promo'>15% OFF — ends August 15</div>"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Sanitize HTML before storage"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a column stores raw HTML (as in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["banner_html"]}," above) and is rendered client-side via Liquid, make sure the source of that HTML is trusted and sanitized before it is ingested into the catalog table. Untrusted or user-generated HTML stored in a Lookup Catalog table can introduce an XSS risk when rendered in the browser."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"example-userproduct-coupon-table","__idx":6},"children":["Example: User–Product Coupon Table"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["A table ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_product_coupon"]}," with a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["composite key"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," concatenated) for cart-level coupon lookups:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"40%","data-label":"user_product_id"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["user_product_id"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"has_coupon"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["has_coupon"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"coupon_code"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["coupon_code"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_001SKU-12345"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SAVE10"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_001SKU-67890"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["true"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["FLASH15"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Composite key order matters"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a Lookup Catalog Attribute uses multiple lookup keys (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]},"), the runtime values are concatenated ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["without a delimiter"]},", in the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["order the keys are defined"]}," in the attribute configuration (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_001"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKU-12345"]}," → ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_001SKU-12345"]},"). The composite key stored in the table must match this exact concatenation — do not insert a delimiter between the parts, or lookups will fail to match."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"array-column-support","__idx":7},"children":["Array Column Support"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Columns with array types (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<string>"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<bigint>"]},", etc.) are fully supported. A row can have a mix of scalar and array columns."]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"product_id"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["product_id"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"name"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["name"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"20%","data-label":"price"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["price"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"40%","data-label":"tags ( array<string> )"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["tags"]}," (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<string>"]},") "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKU-12345"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Crew Tee"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["29"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[\"sale\", \"tops\", \"new-arrival\"]"]}]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["SKU-67890"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Wide-leg Pants"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["58"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["[\"sale\", \"bottoms\"]"]}]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Arrays of arrays are not supported"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Multi-dimensional arrays (arrays nested inside arrays) are not supported. Flatten nested structures before ingestion."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-2--upload-data-to-rt-storage","__idx":8},"children":["Step 2 — Upload Data to RT Storage"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The sync workflow reads from the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]}," database and pushes changes to RT 2.0's internal storage via the Bulk Load API. Only records that have changed since the last run are uploaded (hash-based change detection)."]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["The workflow automatically discovers all eligible tables in ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]}," and syncs them on each run; set the optional ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["p_table_name"]}," parameter to restrict a run to a single table (useful for testing). For setup instructions, parameter reference, and troubleshooting, see ",{"$$mdtype":"Tag","name":"MarkdownLink","attributes":{"href":"/products/customer-data-platform/real-time/lookup-catalog-workflow"},"children":["Lookup Catalog Sync Workflow"]},"."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Data freshness"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Lookup Catalog data is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["batch-synced"]}," — it is not streaming. The data reflects the state at the last workflow execution. Design your sync schedule based on how frequently your catalog data changes."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-3--create-a-lookup-catalog-attribute","__idx":9},"children":["Step 3 — Create a Lookup Catalog Attribute"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In Audience Studio, add a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup Catalog"]}," attribute to the parent segment."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Open the parent segment in Audience Studio."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["RT Attributes"]},", click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Add Attribute"]}," and select ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup Catalog"]},"."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"img","attributes":{"src":"/assets/creating-a-lookup-catalog-attribute-2026-07-11.d373a7b776102acdaaa1a17635f338088c381c359ab47aea3e19d8bfb6f054e3.5b2238d2.webp","alt":"Add Attribute dialog with the Lookup Catalog tab selected, showing Name, System ID, Description, Lookup catalog table, Lookup columns, and Lookup keys fields"},"children":[]}]},{"$$mdtype":"Tag","name":"ol","attributes":{"start":3},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Configure the attribute fields:"]}]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"Field"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Field"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"70%","data-label":"Description"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Description"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Name"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Display name for the attribute (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sale_end_at"]},")."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["System ID"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Internal identifier used in Liquid templates and Entry Criteria (for example, ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sale_end_at"]},"). Auto-populated from ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Name"]}," but can be customized."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Description"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Optional description for internal documentation purposes."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup catalog table"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Select the table from ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["cdp_lookup_catalog"]}," to use as the lookup source."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup columns"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Select the columns to include in the response payload. Use the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Plazma column name"]}," (not the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["queryAs"]}," alias)."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup keys"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Select the RT attribute type (",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Single-Value Attribute"]},", ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["List Attribute"]},", etc.) and the specific attribute whose runtime value is used to look up rows. Click ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["+ Add Lookup Key"]}," to add multiple keys for composite lookups. ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Order matters"]}," — keys are concatenated in the listed order to form the composite lookup key."]}]}]}]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"warning","name":"Composite key order"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["For composite keys, define lookup keys in the same order as the key columns are concatenated in the catalog table. Mismatched order produces lookup misses."]}]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"Deleting a column after attribute creation"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["If a column is removed from the catalog table after a Lookup Catalog Attribute has been configured to reference it, the attribute configuration is not automatically updated. The offer response will simply stop returning that column's data after the next sync."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4--configure-entry-criteria-optional","__idx":10},"children":["Step 4 — Configure Entry Criteria (Optional)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Lookup Catalog Attributes can be used in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Entry Criteria"]}," in Audience Studio to gate whether a personalization section is returned at all. This is server-side decision logic — the section and its entire payload are excluded from the API response when the condition is not met, so the client does not need to implement any conditional rendering logic."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"setting-up-entry-criteria-in-audience-studio","__idx":11},"children":["Setting Up Entry Criteria in Audience Studio"]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In Audience Studio, open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Personalization"]}," and navigate to the target section."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Entry Criteria"]}," canvas, drag and drop the Lookup Catalog Attribute you created into a condition slot."]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Select the operator and value. For example, to return a section only when a coupon exists for the user–product combination:"]},{"$$mdtype":"Tag","name":"ul","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Attribute: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_coupon"]}," → column: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_coupon"]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Operator: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["=="]}]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Value: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["\"true\""]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When this condition is not satisfied at request time, the section is omitted entirely from the personalization response."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"No lookup_key required in the request"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":["You do ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," need to pass a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["lookup_key"]}," field in the API request. RT 2.0 automatically concatenates the runtime attribute values in the order defined in ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Lookup keys"]}," and queries the catalog data internally."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"operators-for-scalar-columns","__idx":12},"children":["Operators for Scalar Columns"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"30%","data-label":"Operator"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"70%","data-label":"Description"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Description"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["=="]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Equal to a value"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["!="]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Not equal to a value"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["<="]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[">"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":[">="]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Numeric or timestamp comparison"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IS NULL"]}," / ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["IS NOT NULL"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Null checks"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["AND"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Combine multiple conditions"]}]}]}]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"operators-for-array-columns","__idx":13},"children":["Operators for Array Columns"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a Lookup Catalog column is array-typed and the lookup key is a ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Single-Value attribute"]}," (single-key lookup), the following operators apply:"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"25%","data-label":"Operator"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Operator"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"25%","data-label":"array_matching"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array_matching"]}]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"50%","data-label":"Semantics"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Semantics"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Contain"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["any"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Does any element in the array contain the substring?"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["In"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["any"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Does the array contain any element exactly equal to one of the right-side values?"]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["In"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["all"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Do all elements in the array exactly equal one of the right-side values?"]}]}]}]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array_matching"]}," is required when using ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["Contain"]}," or ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["In"]}," on an array column. The ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["not: true"]}," flag inverts either operator."]},{"$$mdtype":"Tag","name":"Admonition","attributes":{"type":"info","name":"OR is not supported"},"children":[{"$$mdtype":"Tag","name":"p","attributes":{},"children":[{"$$mdtype":"Tag","name":"code","attributes":{},"children":["OR"]}," logic in Entry Criteria is not supported for Lookup Catalog Attributes in the current release. Use multiple sections with separate entry criteria if needed."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"step-4b--add-to-personalization-payload","__idx":14},"children":["Step 4b — Add to Personalization Payload"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["To include Lookup Catalog Attribute values in the API response, add the attribute to the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Attribute Payload"]}," section of the Personalization configuration in Audience Studio."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["In Audience Studio, open the ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Personalization"]}," section configuration."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Under ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Attribute Payload"]},", add the Lookup Catalog Attribute columns you want returned."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Save the configuration."]}]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["In M2, Lookup Catalog Attributes are treated as first-class attributes — they appear in the ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["attributes"]}," sub-section of the response alongside Single, Counter, and List attributes."]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"personalization-api-response-structure","__idx":15},"children":["Personalization API Response Structure"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When a request matches the Entry Criteria, the response includes the Lookup Catalog Attribute values under ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["offers.<section_name>.attributes"]},":"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"offers\": {\n    \"Coupon Reminder\": {\n      \"attributes\": {\n        \"product_coupon - has_coupon\": \"true\",\n        \"product_coupon - coupon_ids\": \"CPN008\"\n      },\n      \"batch_segments\": null,\n      \"td_app\": null\n    }\n  }\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["When the Entry Criteria condition is ",{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["not"]}," satisfied (for example, no coupon exists for that user–product combination), the section is omitted entirely:"]},{"$$mdtype":"Tag","name":"CodeBlock","attributes":{"data-language":"json","header":{"controls":{"copy":{}}},"source":"{\n  \"offers\": {}\n}\n","lang":"json"},"children":[]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"use-cases","__idx":16},"children":["Use Cases"]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"limited-time-sale-banner","__idx":17},"children":["Limited-Time Sale Banner"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Show an inline sale banner on a product detail page only while a sale is active for that specific product."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["limited_time_sale"]}," table keyed by ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["discount_rate"]}," and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sale_end"]}," columns."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a Lookup Catalog Attribute (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sale_info"]},") using a Single-Value RT attribute that stores the current ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," as the lookup key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set Entry Criteria: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["sale_info.discount_rate IS NOT NULL"]}," — the section is only returned when a sale row exists for this product."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"cart-coupon-reminder","__idx":18},"children":["Cart Coupon Reminder"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Show a coupon reminder when the user has a coupon applicable to the product they just added to the cart."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_product_coupon"]}," table with a composite key (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," + ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]},") and ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["has_coupon"]},", ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["coupon_code"]}," columns."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a Lookup Catalog Attribute (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["coupon"]},") with two lookup keys: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["user_id"]}," first, then ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," (RT attribute storing the most recently added product)."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Set Entry Criteria: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["coupon.has_coupon == \"true\""]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":3,"id":"interest-tag-personalization-array-column","__idx":19},"children":["Interest Tag Personalization (Array Column)"]},{"$$mdtype":"Tag","name":"p","attributes":{},"children":["Display personalized tags based on a product's associated keywords stored as an array column."]},{"$$mdtype":"Tag","name":"ol","attributes":{},"children":[{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_tags"]}," table with a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," key and a ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["keywords"]}," column of type ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array<string>"]},"."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Create a Lookup Catalog Attribute (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["interest_tags"]},") using the current ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["product_id"]}," as the lookup key."]},{"$$mdtype":"Tag","name":"li","attributes":{},"children":["Optionally set Entry Criteria: ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["interest_tags.keywords Contain \"sale\""]}," with ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["array_matching: any"]},"."]}]},{"$$mdtype":"Tag","name":"Heading","attributes":{"level":2,"id":"limitations","__idx":20},"children":["Limitations"]},{"$$mdtype":"Tag","name":"div","attributes":{"className":"md-table-wrapper"},"children":[{"$$mdtype":"Tag","name":"table","attributes":{"className":"md"},"children":[{"$$mdtype":"Tag","name":"thead","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"th","attributes":{"width":"35%","data-label":"Limitation"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Limitation"]}," "]},{"$$mdtype":"Tag","name":"th","attributes":{"width":"65%","data-label":"Detail"},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Detail"]}," "]}]}]},{"$$mdtype":"Tag","name":"tbody","attributes":{},"children":[{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Batch sync only"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Data is not updated in real time. Changes to the source table take effect only after the next sync workflow run."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["No arrays of arrays"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Multi-dimensional arrays (arrays nested inside arrays) are not supported. Flatten nested structures before ingestion."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Key column constraints"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["The primary key is the first non-",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["time"]}," column in the table, must not contain ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["NULL"]}," values, and must be of type ",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["string"]},"."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Schema changes require digest reset"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["If the primary key column is changed, the digest table (",{"$$mdtype":"Tag","name":"code","attributes":{},"children":["_wf_{table_name}_digests"]},") must be dropped and recreated before the next workflow run. Previously uploaded data is not automatically deleted."]}]},{"$$mdtype":"Tag","name":"tr","attributes":{},"children":[{"$$mdtype":"Tag","name":"td","attributes":{},"children":[{"$$mdtype":"Tag","name":"strong","attributes":{},"children":["Sensitive lookup keys"]}]},{"$$mdtype":"Tag","name":"td","attributes":{},"children":["Lookup keys marked as sensitive in Audience Studio cannot be used in client-side personalization requests. When a sensitive attribute is used as a lookup key, the entire section is redacted from the response for client-side requests."]}]}]}]}]}]},"headings":[{"value":"Lookup Catalog","id":"lookup-catalog","depth":1},{"value":"When to Use Lookup Catalog","id":"when-to-use-lookup-catalog","depth":2},{"value":"How Lookup Catalog Works","id":"how-lookup-catalog-works","depth":2},{"value":"Step 1 — Prepare Lookup Catalog Data","id":"step-1--prepare-lookup-catalog-data","depth":2},{"value":"Database and Table Conventions","id":"database-and-table-conventions","depth":3},{"value":"Example: Product Sale Table","id":"example-product-sale-table","depth":3},{"value":"Example: User–Product Coupon Table","id":"example-userproduct-coupon-table","depth":3},{"value":"Array Column Support","id":"array-column-support","depth":3},{"value":"Step 2 — Upload Data to RT Storage","id":"step-2--upload-data-to-rt-storage","depth":2},{"value":"Step 3 — Create a Lookup Catalog Attribute","id":"step-3--create-a-lookup-catalog-attribute","depth":2},{"value":"Step 4 — Configure Entry Criteria (Optional)","id":"step-4--configure-entry-criteria-optional","depth":2},{"value":"Setting Up Entry Criteria in Audience Studio","id":"setting-up-entry-criteria-in-audience-studio","depth":3},{"value":"Operators for Scalar Columns","id":"operators-for-scalar-columns","depth":3},{"value":"Operators for Array Columns","id":"operators-for-array-columns","depth":3},{"value":"Step 4b — Add to Personalization Payload","id":"step-4b--add-to-personalization-payload","depth":2},{"value":"Personalization API Response Structure","id":"personalization-api-response-structure","depth":3},{"value":"Use Cases","id":"use-cases","depth":2},{"value":"Limited-Time Sale Banner","id":"limited-time-sale-banner","depth":3},{"value":"Cart Coupon Reminder","id":"cart-coupon-reminder","depth":3},{"value":"Interest Tag Personalization (Array Column)","id":"interest-tag-personalization-array-column","depth":3},{"value":"Limitations","id":"limitations","depth":2}],"frontmatter":{"seo":{"title":"Lookup Catalog","description":"Learn how to use RT 2.0 Lookup Catalog to reference non-user-keyed business data — product catalogs, coupon definitions, sale schedules — in real-time personalization responses."}},"lastModified":"2026-07-11T07:05:06.000Z","pagePropGetterError":{"message":"","name":""}},"slug":"/products/customer-data-platform/real-time/lookup-catalog","userData":{"isAuthenticated":false,"teams":["anonymous"]},"isPublic":true}