{"product_id":"engagement-module","title":"Engagement","description":"\u003cdiv class=\"eng\"\u003e\n  \u003cstyle\u003e\n    .eng {\n      --eng-ink: #14143C;\n      --eng-body: #243049;\n      --eng-muted: #5A6478;\n      --eng-accent: #00C8C8;\n      --eng-line: #E4E8F2;\n      --eng-panel: #F8F9FF;\n      --eng-badge-ink: #0B1437;\n      font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif;\n      color: var(--eng-body);\n      line-height: 1.6;\n      max-width: 860px;\n      margin: 0 auto;\n    }\n    .eng * { box-sizing: border-box; }\n    .eng__eyebrow {\n      display: inline-block;\n      background: var(--eng-accent);\n      color: var(--eng-badge-ink);\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .08em;\n      font-size: 11px;\n      padding: 6px 14px;\n      border-radius: 6px;\n      margin-bottom: 18px;\n    }\n    .eng__lede {\n      font-size: 18px;\n      line-height: 1.55;\n      color: var(--eng-ink);\n      font-weight: 500;\n      margin: 0 0 28px;\n    }\n    .eng__lede strong { font-weight: 700; }\n    .eng__hook {\n      border-left: 3px solid var(--eng-accent);\n      background: var(--eng-panel);\n      border-radius: 0 12px 12px 0;\n      padding: 20px 24px;\n      font-size: 16px;\n      line-height: 1.55;\n      color: var(--eng-ink);\n      margin: 0 0 40px;\n    }\n    .eng__hook strong { font-weight: 700; }\n    .eng__section-label {\n      font-size: 12px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .1em;\n      color: var(--eng-accent);\n      margin: 48px 0 20px;\n      padding-bottom: 10px;\n      border-bottom: 1px solid var(--eng-line);\n    }\n    .eng__intro {\n      font-size: 15px;\n      color: var(--eng-body);\n      margin: 0 0 20px;\n      line-height: 1.55;\n    }\n    .eng__intro strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__cta {\n      display: inline-block;\n      background: var(--eng-accent);\n      color: var(--eng-badge-ink) !important;\n      font-family: inherit;\n      font-size: 15px;\n      font-weight: 700;\n      line-height: 1.2;\n      letter-spacing: .02em;\n      padding: 15px 30px;\n      border-radius: 8px;\n      border: 0;\n      text-decoration: none !important;\n      cursor: pointer;\n      transition: transform .15s ease, box-shadow .15s ease;\n    }\n    .eng__cta:hover, .eng__cta:focus {\n      transform: translateY(-1px);\n      box-shadow: 0 6px 18px rgba(0, 200, 200, .35);\n      text-decoration: none !important;\n    }\n    .eng__cta-bar {\n      display: flex;\n      flex-wrap: wrap;\n      align-items: center;\n      justify-content: space-between;\n      gap: 16px;\n      background: var(--eng-panel);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      padding: 20px 24px;\n      margin: 0 0 40px;\n    }\n    .eng__cta-bar p {\n      font-size: 15px;\n      color: var(--eng-ink);\n      font-weight: 600;\n      margin: 0;\n      line-height: 1.4;\n      flex: 1 1 240px;\n      min-width: 0;\n    }\n    .eng__close .eng__cta { margin-top: 22px; }\n\n    .eng__bands {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__band { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .eng__band h4 {\n      font-size: 19px;\n      font-weight: 700;\n      color: var(--eng-ink);\n      margin: 0 0 4px;\n      line-height: 1.2;\n    }\n    .eng__band-kicker {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--eng-muted);\n      margin: 0 0 12px;\n    }\n    .eng__band p { font-size: 14px; color: var(--eng-body); margin: 0; line-height: 1.5; }\n\n    .eng__value {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__value-cell { background: #FFFFFF; padding: 24px 22px; min-width: 0; }\n    .eng__value-cell h4 {\n      font-size: 11px;\n      font-weight: 700;\n      text-transform: uppercase;\n      letter-spacing: .07em;\n      color: var(--eng-muted);\n      margin: 0 0 10px;\n    }\n    .eng__value-cell p { font-size: 15px; color: var(--eng-body); margin: 0; line-height: 1.5; }\n    .eng__value-cell p strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__q {\n      display: grid;\n      grid-template-columns: 44px 1fr;\n      gap: 0 18px;\n      align-items: start;\n      margin-bottom: 26px;\n    }\n    .eng__q:last-child { margin-bottom: 0; }\n    .eng__q-num {\n      font-size: 28px; font-weight: 700; color: var(--eng-accent);\n      line-height: 1; letter-spacing: -.02em;\n    }\n    .eng__q-name {\n      font-size: 17px; font-weight: 700; color: var(--eng-ink);\n      margin: 0 0 6px; line-height: 1.3;\n    }\n    .eng__q-text { font-size: 15px; color: var(--eng-body); line-height: 1.5; margin: 0; }\n    .eng__q-text strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__pages {\n      display: grid;\n      grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\n      gap: 1px;\n      background: var(--eng-line);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      overflow: hidden;\n    }\n    .eng__page { background: #FFFFFF; padding: 20px 22px; min-width: 0; }\n    .eng__page h5 { font-size: 14px; font-weight: 700; color: var(--eng-ink); margin: 0 0 6px; }\n    .eng__page p { font-size: 14px; color: var(--eng-muted); margin: 0; line-height: 1.45; }\n\n    .eng__mod {\n      border-left: 3px solid var(--eng-accent);\n      padding: 4px 0 4px 22px;\n      margin-bottom: 26px;\n    }\n    .eng__mod:last-child { margin-bottom: 0; }\n    .eng__mod-name {\n      font-size: 17px; font-weight: 700; color: var(--eng-ink);\n      margin: 0 0 6px; line-height: 1.25;\n    }\n    .eng__mod-val { font-size: 15px; color: var(--eng-body); line-height: 1.5; margin: 0; }\n    .eng__mod-val strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__steps { list-style: none; counter-reset: engstep; padding: 0; margin: 0; }\n    .eng__steps li {\n      counter-increment: engstep;\n      position: relative;\n      padding: 0 0 22px 52px;\n      margin: 0;\n    }\n    .eng__steps li:last-child { padding-bottom: 0; }\n    .eng__steps li::before {\n      content: counter(engstep);\n      position: absolute; left: 0; top: 0;\n      width: 34px; height: 34px;\n      background: var(--eng-ink); color: #FFFFFF;\n      font-size: 14px; font-weight: 700; border-radius: 50%;\n      display: flex; align-items: center; justify-content: center;\n    }\n    .eng__steps li::after {\n      content: \"\"; position: absolute; left: 16px; top: 40px; bottom: 4px;\n      width: 2px; background: var(--eng-line);\n    }\n    .eng__steps li:last-child::after { display: none; }\n    .eng__step-name {\n      font-size: 15px; font-weight: 700; color: var(--eng-ink);\n      display: block; margin: 6px 0 4px;\n    }\n    .eng__step-text { font-size: 15px; margin: 0; line-height: 1.5; }\n\n    .eng__note {\n      background: var(--eng-panel);\n      border: 1px solid var(--eng-line);\n      border-radius: 12px;\n      padding: 18px 20px;\n      font-size: 14px;\n      color: var(--eng-muted);\n      margin-top: 24px;\n    }\n    .eng__note strong { color: var(--eng-ink); font-weight: 700; }\n\n    .eng__close {\n      background: var(--eng-ink);\n      border-radius: 14px;\n      padding: 32px 30px;\n      margin-top: 48px;\n      text-align: center;\n    }\n    .eng__close p {\n      color: #FFFFFF;\n      font-size: 17px;\n      line-height: 1.5;\n      margin: 0 0 6px;\n      font-weight: 600;\n    }\n    .eng__close span {\n      display: block;\n      color: #A9B4CC;\n      font-size: 14px;\n      line-height: 1.5;\n    }\n  \u003c\/style\u003e\n\n  \u003cspan class=\"eng__eyebrow\"\u003eEngagement — Optional module\u003c\/span\u003e\n\n  \u003cp class=\"eng__lede\"\u003e\n    \u003cstrong\u003eEngagement measures how long visits last, and where the long ones come from.\u003c\/strong\u003e\n    It adds a second dimension to your reading: not only how many visitors your catchment area sends,\n    but how much time they leave behind once they arrive.\n  \u003c\/p\u003e\n\n  \u003cdiv class=\"eng__hook\"\u003e\n    Two neighbourhoods send you the same number of visitors. One comes for twenty minutes, the other for\n    two hours. They are not the same audience, they do not build the same basket, and\n    \u003cstrong\u003ethey do not deserve the same budget\u003c\/strong\u003e. Counting visits alone cannot tell them apart.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"eng__cta-bar\"\u003e\n    \u003cp\u003eAdd the module to your configuration\u003c\/p\u003e\n    \u003ca class=\"eng__cta\" href=\"\/es\/pages\/flow-configurator\"\u003eOpen the configurator\u003c\/a\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eHow duration is read\u003c\/p\u003e\n  \u003cp class=\"eng__intro\"\u003e\n    Visit duration is not averaged into a single figure, because an average hides the very thing you are\n    looking for. \u003cstrong\u003eVisits are distributed across bands\u003c\/strong\u003e, and it is the shape of that\n    distribution that carries the reading.\n  \u003c\/p\u003e\n  \u003cdiv class=\"eng__bands\"\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eShort\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003ePass-through\u003c\/p\u003e\n      \u003cp\u003eA targeted errand, a single purchase, a stop on the way to somewhere else. Real traffic, low value per visit.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eMedium\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003eIntent\u003c\/p\u003e\n      \u003cp\u003eA deliberate trip with a purpose. The band where most of the commercial value of a site is built.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__band\"\u003e\n      \u003ch4\u003eLong\u003c\/h4\u003e\n      \u003cp class=\"eng__band-kicker\"\u003eDestination\u003c\/p\u003e\n      \u003cp\u003eThe site is the outing itself. Multi-store visits, leisure, catering — the behaviour a destination is built to produce.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eThe three questions answered\u003c\/p\u003e\n\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e1\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eAre you a destination or a stop?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eThe distribution across bands tells you which one your site actually is — \u003cstrong\u003ewhich is not always the one it was designed to be\u003c\/strong\u003e. The verdict is read against the reference level of the observed period.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e2\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eWhich neighbourhoods send you time?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eDuration is read neighbourhood by neighbourhood, not only for the site as a whole. Some zones send few visitors but long visits; \u003cstrong\u003etheir weight in your budget should not follow their weight in visits\u003c\/strong\u003e.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__q\"\u003e\n    \u003cdiv class=\"eng__q-num\"\u003e3\u003c\/div\u003e\n    \u003cdiv\u003e\n      \u003cp class=\"eng__q-name\"\u003eDid the operation change behaviour, or only volume?\u003c\/p\u003e\n      \u003cp class=\"eng__q-text\"\u003eAn operation that lifts visits while shortening them has moved traffic without deepening it. \u003cstrong\u003eVolume and duration moving together is a different result from volume moving alone.\u003c\/strong\u003e\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eInside the module\u003c\/p\u003e\n  \u003cdiv class=\"eng__pages\"\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eDistribution\u003c\/h5\u003e\n      \u003cp\u003eVisits across duration bands, against the reference level of the period.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eBy neighbourhood\u003c\/h5\u003e\n      \u003cp\u003eDuration profile of each zone, alongside the volume it sends.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eTime contribution\u003c\/h5\u003e\n      \u003cp\u003eZones ranked by time delivered rather than by visits delivered.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__page\"\u003e\n      \u003ch5\u003eShift\u003c\/h5\u003e\n      \u003cp\u003eHow the distribution moved over the observed window.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eWhat the module does not claim\u003c\/p\u003e\n\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eTime is not spend\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eA long visit correlates with a larger basket in most retail formats, but the module measures time and only time. \u003cstrong\u003eIt never converts duration into revenue.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eA perimeter, not a path\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eDuration is measured on the observed perimeter as a whole. \u003cstrong\u003eThe module does not track movement inside the site\u003c\/strong\u003e, does not identify which stores were visited, and does not reconstruct a route.\u003c\/p\u003e\n  \u003c\/div\u003e\n  \u003cdiv class=\"eng__mod\"\u003e\n    \u003cp class=\"eng__mod-name\"\u003eSame privacy standard\u003c\/p\u003e\n    \u003cp class=\"eng__mod-val\"\u003eAggregated, privacy-by-design mobility data, read at neighbourhood granularity. \u003cstrong\u003eAdding duration adds no personal data of any kind.\u003c\/strong\u003e\u003c\/p\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eAvailability\u003c\/p\u003e\n  \u003cdiv class=\"eng__value\"\u003e\n    \u003cdiv class=\"eng__value-cell\"\u003e\n      \u003ch4\u003eCompatible products\u003c\/h4\u003e\n      \u003cp\u003eAvailable on \u003cstrong\u003eevery Flow Connect and Flow Drive product\u003c\/strong\u003e. Duration is read over the same window as the configuration it joins.\u003c\/p\u003e\n    \u003c\/div\u003e\n    \u003cdiv class=\"eng__value-cell\"\u003e\n      \u003ch4\u003eCoverage\u003c\/h4\u003e\n      \u003cp\u003e\u003cstrong\u003eShopping centres and retail parks\u003c\/strong\u003e across every market we cover. Standalone stores and high streets on request.\u003c\/p\u003e\n    \u003c\/div\u003e\n  \u003c\/div\u003e\n\n  \u003cp class=\"eng__section-label\"\u003eHow to order\u003c\/p\u003e\n  \u003cp class=\"eng__intro\"\u003e\n    Engagement is a module, not a standalone report. \u003cstrong\u003eIt is added inside the configurator, to the\n    configuration it completes\u003c\/strong\u003e, and delivered with it in the same workspace.\n  \u003c\/p\u003e\n  \u003col class=\"eng__steps\"\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eBuild your configuration\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eSelect your product and your site, then set the period and the reference population used to build the catchment area.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eAdd the module\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eAt the modules step, select Engagement. It appears as a separate line on your invoice and the total updates immediately.\u003c\/p\u003e\n    \u003c\/li\u003e\n    \u003cli\u003e\n      \u003cspan class=\"eng__step-name\"\u003eReceive it with your report\u003c\/span\u003e\n      \u003cp class=\"eng__step-text\"\u003eThe module is published inside the same Power BI workspace as the report it completes, within the same delivery window.\u003c\/p\u003e\n    \u003c\/li\u003e\n  \u003c\/ol\u003e\n\n  \u003cdiv class=\"eng__note\"\u003e\n    \u003cstrong\u003eScope:\u003c\/strong\u003e Engagement measures visit duration on your own site. Comparing that duration\n    with a competing site requires \u003cstrong\u003eCompetitive Benchmark\u003c\/strong\u003e. Measuring what a campaign\n    produced requires \u003cstrong\u003eGeo Lift\u003c\/strong\u003e, on Flow Drive products.\n  \u003c\/div\u003e\n\n  \u003cdiv class=\"eng__close\"\u003e\n    \u003cp\u003eCounting visitors tells you who came. Counting time tells you who stayed.\u003c\/p\u003e\n    \u003cspan\u003eAdd Engagement to your configuration.\u003c\/span\u003e\n    \u003ca class=\"eng__cta\" href=\"\/es\/pages\/flow-configurator\"\u003eOpen the configurator\u003c\/a\u003e\n  \u003c\/div\u003e\n\u003c\/div\u003e","brand":"Ilan Experience","offers":[{"title":"Default Title","offer_id":63335278412106,"sku":null,"price":95.0,"currency_code":"EUR","in_stock":true}],"url":"https:\/\/ilanexperience.com\/es\/products\/engagement-module","provider":"Ilan Experience","version":"1.0","type":"link"}